php paypal 服务器端 REST 集成失败

标签 php rest paypal server-side

(我无法发布代码/错误等,因为:“您至少需要 10 个信誉才能发布超过 2 个链接”;并且所有内容都包含很多链接;只是花了几个小时在一个非常详细的发布)。

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

我基本上是这样的: 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 说从我的创建支付脚本返回这个。我不完全确定应该如何返回它:只需 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/

相关文章:

php - 上传插件时上传的文件超出了 php.ini 错误中的 upload_max_filesize 指令

javascript - Node.js中如何解压二进制数据

javascript - python + REST 上的 GAE,插入/更新 db.ListProperty(users.User)

javascript - REST API 测量服务器端响应时间(性能)。

c++ - CPPRest SDK 向服务器发出 HTTP 请求

javascript - 如何使用 PayPal 付款按钮 JavaScript API?

python - 以最少的摩擦管理 Paypal 账户?

PHP 和 MySQL 单选按钮名称 = PHP ECHO

php - 使用 Amazon SES 通过 PHP 发送时,并非所有邮件都会被收件人收到

php - paypal 快速结帐后缺少 session 数据