从 checkout.js 迁移到 JavaScript SDK,但在执行付款之前授权?

Migrating from checkout.js to JavaScript SDK, but authorising before executing the payment?

我们仍然使用 checkout.js 来实现 Paypal 快速结帐。步骤有:

  1. 用户点击 Paypal 按钮
  2. 用户登录 Paypal
  3. Paypal 向点击“继续”的用户显示金额。这授权付款(但不执行)。
  4. 用户回到商店并看到他的购买摘要
  5. 用户点击“立即购买”,店铺通知paypal执行paypamt
  6. 用户看到“谢谢”页面。

现在我们要迁移到 JavaScript SDK。根据这个: https://developer.paypal.com/docs/checkout/standard/upgrade-integration/ 现在的步骤是:

  1. 用户点击 Paypal 按钮
  2. 用户登录 Paypal
  3. Paypal 向点击“立即购买”的用户显示金额。这将执行付款。
  4. 用户看到“谢谢”页面。

出于法律原因,我们需要 Paypal 将用户重定向回他可以点击“立即购买”的商店,就像 checkout.js 所做的一样。我们如何使用 Paypal JavaScript SDK 而不是 4 个来实现这 6 个步骤?我找不到任何这样做的例子。

执行是v1/payments和checkout.js的术语;使用当前的 JS SDK 和 v2/checkout/orders 它被称为“捕获”。

点击“立即付款”的用户不会立即在 PayPal 端捕获付款,而是调用您提供的 onApprove 函数来进行捕获。该函数可以首先显示您需要它显示的任何消息,包括使用最终确认信息更新页面的 DOM -- 或者,如果必须,使用 JS 重定向到新的确认页面。

收到最终付款确认后,您需要做的是使用 actions.order.capture (client-side) 或 server-side API 调用获取付款。

[始终建议使用 server-side 集成,在这种情况下,createOrder 函数也应该调用服务器路由...参见 the code demo]

最后,当要进行确认步骤时,需要进行措辞更改以显示正确的按钮文本。默认情况下,使用 JS SDK,PayPal 批准流程中的最终按钮显示为“立即付款”。如果您要在捕获之前收到一条确认消息并要求用户执行操作,则该按钮需要更改为“继续”以指示您需要执行其他步骤。要更改它,include the query string parameter &commit=false on the SDK line. In addition to the query string, any server-side API call to create an order 必须在 application_context 对象中设置 "user_action": "CONTINUE"。 (请注意,此对象属于创建订单请求 JSON 的顶级层次结构,而不属于 purchase_unit)