在 JavaScript SDK 中:如何在排除 onShippingChange 事件时正确更新和捕获 onApprove 中的交易?

In the JavaScript SDK: How to properly update and capture a transaction in onApprove when excluding onShippingChange event?

将 JavaScript SDK 与 commit=false 一起使用时,买家会在付款信息通过 Continue 按钮而不是 Pay Now 获得批准后返回到客户页面.如果在创建订单时仅包含产品价格,而 PayPal windows 中没有提供任何运输选项,如何在 onApprove 的事件处理程序中对此进行调整16=]?

根据 onApprove 事件处理程序中返回的 actions 对象,有四个操作 authorize, capture, get, patch。我们要 get 订单数据,根据送货地址计算值以更新送货选项和销售税,然后在用户点击批准后,我们​​ patch 吗?如果是这样,我们还需要capture吗?

另外,这种方法安全吗?例如,如果买家批准购买以使用 PayPal 余额付款,然后单击 Continue 并更改 DOM 中的送货方式,使修改后的总额超过 PayPal 余额,那么将发生在 patchcapture?

我问的原因是我想绕过 onShippingMethod,因为 SO question 中描述的原因。我知道如何执行计算,但我不明白如何正确地将其传达给 PayPal。

谢谢。

onApprove: function(data, actions) {

  actions.order.get().then( function(orderData) {
    /* Update values based upon orderData and DOM capture of shipping option and sales tax.*/
    btn_finalize.addEventListener( 'click', () => { return finalize(); }, false );
    /* Display finalize button */
  }); // close get()

  function finalize() {
     return actions.order.patch([{
       op: "replace",
       path: "/purchase_units/@reference_id=='prod_0001'/amount",
       value: {
         value: oTotal.toFixed(2),
         currency_code: "USD",
         breakdown: {
           item_total: {
             currency_code: "USD",
             value: order.discSub.toFixed(2)
            },
            shipping: {
              currency_code: "USD",
              value: shippingAmount.toFixed(2)
            },
            tax_total: {
              currency_code: "USD",
              value: tax_total.toFixed(2)
            }
         }
       }
     }
   ]); // close patch
  } // close finalize()
 } //close onApprove

Are we to get the order data, calculate values based upon the shipping address to update shipping options and sales tax, and then, upon user click for approval, do we patch? If so, do we still need to capture?

一旦知道最终总数将是多少就立即修补(无需等待用户确认修补,除非该确认具有将更改总数的输入)。在用户通过“立即付款”或“完成订单”进行最终确认后 - 您显示的样式操作,并且订单已修补,然后进行捕获。

changes the shipping method in the DOM such that the revised total exceeds that PayPal balance, what would take place upon patch or capture?

如果付款人没有足够的资金来源(银行、余额、卡等)来完成交易,捕获将失败并出现错误。此结果与捕获可能失败的任何其他情况相同。