【问题标题】:php paypal Server-side REST integration failurephp paypal 服务器端 REST 集成失败
【发布时间】:2018-02-04 11:28:18
【问题描述】:

(我无法发布代码/错误等,因为:“您需要至少 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"

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

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

目前被难住了;任何想法/指针表示赞赏。

这真的应该很简单。

【问题讨论】:

    标签: php rest paypal server-side


    【解决方案1】:

    我收到了同样的错误信息。

    对我来说,它发生在 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"}

    希望对您有所帮助。

    【讨论】:

    • developer.paypal.com/docs/integration/direct/express-checkout/… 特别声明:{"paymentID": "PAY-0J3..."}。将其更改为您的 {"id:" "..."} 并且它可以调用我的执行脚本,然后它再次崩溃。我会做更多的摆弄。 (我只花了 4 个小时在我的服务器上手动安装 PayPal 的 SDK,并让整个支付流程从头到尾正常工作;相比之下,这需要 4 天以上,但仍然无法正常工作)。
    猜你喜欢
    • 2018-04-29
    • 2021-04-22
    • 2020-08-05
    • 2013-04-13
    • 2021-04-04
    • 1970-01-01
    • 2018-02-21
    • 2016-02-05
    • 1970-01-01
    相关资源
    最近更新 更多