(我无法发布代码/错误等,因为:“您至少需要 10 个信誉才能发布超过 2 个链接”;并且所有内容都包含很多链接;只是花了几个小时在一个非常详细的发布)。
我在这里(和其他地方)读过类似的帖子,但没有帮助。
但是 PayPal 的文档有些困惑,缺少一些关键细节并且有些地方很神秘。显然是由委员会编写的。
简而言之,我有一个 PayPal 支付 ID:"id": "PAY-0J356327TH335450NK56Y2PQ"
,
PayPal 说从我的创建支付脚本返回这个。我不完全确定应该如何返回它:只需 echo "PAY-0J356327TH335450NK56Y2PQ";
或返回一个 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"];
没有任何区别。
我从 PayPal 收到的错误是:
ppxo_no_token_passed_to_payment Object ...
ppxo_unhandled_error Object ...
Error: No value passed to payment
decorate ...
我显然有一个有效的访问 token ,否则我无法获得支付 ID。
目前被难住了;任何想法/指针表示赞赏。
这真的应该很简单。
最佳答案
我有同样的错误信息。
对我来说,它发生在 javascript 代码收到我的 CREATE_PAYMENT_URL ajax 请求的响应时。
我从服务器发回的响应不是有效的 JSON,所以当执行 onAuthorize 时,data.paymentID 和 data.payerID 不可用。
我建议在 onAuthorize 中的 return 语句上方使用 console.log(data) 以确保数据 json 对象具有 paymentId 和 payerId。
如果不是,则可能是您之前的 CREATE_PAYMENT_URL 未返回付款 ID。
响应应该是 json。例如一个有效的创建支付响应:
{"id":"PAY-5T1130394T551090NLGRLACY"}
希望对您有所帮助。
关于php paypal 服务器端 REST 集成失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45897900/