php paypal 服务器端 REST 集成失败

php paypal Server-side REST integration failure

(我无法 post code/errors 等,因为:'You need at least 10 reputation to post more than 2 links';所有内容都包含很多链接;只是花了几个小时在一个非常详细的 post).

我在这里(和其他地方)读过类似的 post,但它们没有帮助。

我基本上是这样的: https://developer.paypal.com/docs/integration/direct/express-checkout/integration-jsv4/server-side-REST-integration/#set-up-your-client

但是 PayPal 的文档有些混乱,缺少一些关键细节并且有些地方很神秘。显然是委员会写的。

简而言之,我有一个 PayPal 支付 ID:"id": "PAY-0J356327TH335450NK56Y2PQ"

PayPal 从我的创建付款脚本中说 return。我不完全确定应该如何 returned:简单地回显 "PAY-0J356327TH335450NK56Y2PQ"; 或 return 一个 json 字符串。两个都试过了,没有解决任何问题。

然后是(来自客户端按钮):

onAuthorize: function(data) {
            return paypal.request.post(EXECUTE_PAYMENT_URL, {
                paymentID: data.paymentID,
                payerID:   data.payerID
            }).then(function() {

                // The payment is complete!
                // You can now show a confirmation message to the customer
            });

我读到它使用 2 个变量(paymentID 和 payerID)调用我的执行支付脚本,我需要在我的脚本中使用它们。

我试过显而易见的方法:

$paymentID = $_POST["paymentID"];
$payerID = $_POST["payerID"];

不太明显(因为我假设它正在发布数据,尽管有些文档在这一点上似乎有些混乱):

$paymentID = $_GET["paymentID"];
$payerID = $_GET["payerID"];

我最后的尝试:

$ret = file_get_contents("php://input");
$ar = json_decode($ret, TRUE);
$paymentID = $ar["paymentID"];
$payerID = $ar["payerID"];

None 其中有任何不同。

我从 PayPal 收到的错误是:

ppxo_no_token_passed_to_payment Object ...
ppxo_unhandled_error Object ...

Error: No value passed to payment
decorate ...

我显然有一个有效的访问令牌,否则我无法获得付款 ID。

目前陷入困境;任何 ideas/pointers 赞赏。

这真的应该很简单。

我有同样的错误信息。

对我来说,当 javascript 代码收到我的 CREATE_PAYMENT_URL ajax 请求的响应时发生。

我从服务器发回的响应无效 JSON 所以当需要执行 onAuthorize 时 data.paymentID 和 data.payerID 不可用。

我建议在 onAuthorize 中的 return 语句上方使用 console.log(data) 以确保数据 json 对象具有 paymentId 和 payerId。

如果不是,则可能是您之前的 CREATE_PAYMENT_URL 没有 return 支付 ID。

回复应该是json。例如,有效的创建付款响应:

{"id":"PAY-5T1130394T551090NLGRLACY"}

希望对您有所帮助。