PayPal在上下文结账与REST SDK



我使用PHP REST SDK进行Express checkout,我的代码基于以下示例:http://paypal.github.io/PayPal-PHP-SDK/sample/doc/payments/CreatePaymentUsingPayPal.html

这个工作很棒,除了我不确定如何将它与新的上下文签出集成。据我所知,我只需要EC令牌,这样我就可以将其与上下文结帐一起使用,并获得像https://sandbox.paypal.com/checkoutnow?token=EC-TOKEN这样的URL,但我找不到如何获得EC令牌。

当使用REST SDK创建支付时,所有您得到的是批准url https://sandbox.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=EC-TOKEN。I 可以从URL中提取令牌,但这似乎不是一个好主意。必须有一种方法来获得EC令牌,除非我做错了什么。

如果你想在不篡改重定向url的情况下调用上下文体验,这里有一个技巧

  1. 把脚本放到你的前端页面:

<script>
  (function(d, s, id) {
    var js, ref = d.getElementsByTagName(s)[0];
    if (!d.getElementById(id)) {
      js = d.createElement(s);
      js.id = id;
      js.async = true;
      js.src = "//www.paypalobjects.com/js/external/paypal.v1.js";
      ref.parentNode.insertBefore(js, ref);
    }
  }(document, "script", "paypal-js"));
</script>

  • 将带有数据标签的按钮放入表单代码中:
  • <input type="image" data-paypal-button="true" data-paypal-sandbox="true" src="https://www.paypalobjects.com/webstatic/en_US/i/buttons/checkout-logo-large.png" alt="Check out with PayPal" />

    通过这种方式,您可以将表单提交到REST api checkout页面,并且仅使用前端代码
    控制连接内重定向。

    显然,REST API不工作(尚未)与in - context,但如果有人想让它工作,这里有一个简单的PHP行来改变approval_url为in - context url (仅用于测试目的,我不建议在prod中使用它,直到我们得到官方支持):

    $approvalUrl = str_replace('cgi-bin/webscr?cmd=_express-checkout&', 'checkoutnow?', $payment->getApprovalLink());

    最新更新