如何在 Headless Shopware 6 商店中完成 PayPal 快速结帐而不重定向到 PayPal 确认?

问题描述 投票:0回答:1

我已经按照 Shopware 的官方示例为我的无头 Shopware 6 商店实现了 PayPal Express Checkout。然而,我在最后一步遇到了问题,他们使用

fetch()
来调用
redirectUrl
。这种方法对我不起作用,因为
redirectUrl
响应是 HTML,并且触发对其的提取不会按预期将用户重定向到 PayPal。

这是我当前的解决方法:我不使用

fetch()
,而是将用户直接重定向到
redirectUrl
。这会再次打开 PayPal 界面进行第二次确认,虽然它确实在 Shopware 中将订单标记为已付款,但它为用户增加了不必要的步骤。

如何完成 PayPal Express Checkout 流程,而不需要重定向到redirectUrl 在 PayPal 进行第二次确认?在

handlePayment
后,如果没有此额外的重定向,我应该按照什么步骤在 Shopware 中将订单标记为已付款?

<PayPalScriptProvider
  options={{
    clientId: "<myClientId>",
  }}
>
  <PayPalButtons
    createOrder={async () => {
      // Create order --> PayPal
      // POST /store-api/paypal/express/create-order
      // return response.data.token
    }}
    onApprove={async (data, actions) => {
      // Prepare Checkout --> PayPal
      // POST /store-api/paypal/express/prepare-checkout { body: { token: data.orderId }}
      
      // Update context --> set paymentMethodId to PayPal
      // POST /store-api/account/register { body: { paymentMethodId: <paypalPaymentMethodId> }}
      
      // Create order --> Shopware
      // POST /store-api/checkout/order
      
      // Handle Payment --> Shopware/PayPal
      // POST /store-api/handlePayment 
      // { query: {isPayPalExpressCheckout: true, paypalOrderId: data.orderId } body: { orderId: <shopwareOrderId>, finishUrl: 'https://...', errorUrl: 'https://...' } }
      
      // Redirect to the redirectUrl from the handlePayment endpoint --> re-confirmation at PayPal
    }}
  ></PayPalButtons>
</PayPalScriptProvider>

在此设置中,handlePayment后重定向到redirectUrl会再次打开PayPal,提示用户再次确认付款。只有在第二次确认后,Shopware 才会将订单标记为“已付款”而不是“未确认”。

javascript typescript next.js shopware6 headless
1个回答
0
投票

我也遇到了同样的问题,请问你找到解决办法了吗?

© www.soinside.com 2019 - 2024. All rights reserved.