使用 REST SDK 的 PayPal In-Context Checkout

PayPal In-Context Checkout with REST SDK

我正在使用 PHP REST SDK 进行快速结帐,我的代码基于此示例:http://paypal.github.io/PayPal-PHP-SDK/sample/doc/payments/CreatePaymentUsingPayPal.html

这很好用,但我不确定如何将它与新的 In-Context 结帐集成。据我了解,我只需要 EC 令牌,这样我就可以将它与上下文结帐一起使用,并获得 URL 这样的 https://sandbox.paypal.com/checkoutnow?token=EC-TOKEN,但我找不到如何获取 EC 令牌只要。

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

很明显,REST API 还不能与 In-Context 一起工作,但如果有人想让它工作,这里有一行简单的 PHP 来改变 approval_url 到 In-Context url( 仅用于测试目的,在我们获得官方支持之前,我不建议在产品中使用它):

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

如果您想在不篡改重定向的情况下调用上下文体验,请使用以下技巧 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>

  1. 将带有数据标签的按钮放入您的表单代码中:

<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 结帐页面,并仅使用前端代码控制内部重定向