条纹元素 - 苹果支付问题 - 付款窗口会在一秒钟内出现和消失

问题描述

我使用 js API v3 和条纹元素将 Stipe 付款连接到该站点。一切正常(包括谷歌支付)期待苹果支付。当用户点击苹果支付按钮时 - 支付窗口只出现一秒钟,然后消失。站点域已根据 Stripe wiki for js v2,v3 doesn't have such page 进行验证。找不到任何错误。将不胜感激任何提示甚至方向。谢谢。

代码示例:

          paymentRequest = stripe.paymentRequest({
          country: 'GB',currency: 'gbp',total: {
              label: 'Upgrade',amount: 11400,},requestPayerName: false,requestPayerEmail: true,});

      var prButton = elements.create('paymentRequestButton',{
          paymentRequest: paymentRequest,});

      paymentRequest.canMakePayment().then(function (result) {
                  if (result) {
                      prButton.mount('#payment-request-button');
                  } else {
                      document.getElementById('payment-request-error').innerHTML = "Your browser doesn't support Google or Apple Wallet";
                      document.getElementById('payment-request-button').style.display = 'none';
                  }

                  paymentRequest.on('paymentmethod',function (ev) {
                      stripe.confirmCardPayment(
                          clientSecret,{
                              payment_method: ev.paymentMethod.id
                          },{
                              handleActions: false
                          }
                      ).then(function (confirmResult) {
                          if (confirmResult.error) {
                              ev.complete('fail');
                          } else {
                              ev.complete('success');
                              if (confirmResult.paymentIntent.status === "requires_action") {
                                  stripe.confirmCardPayment(clientSecret).then(function (result) {
                                      if (result.error) {
                                          alert("Error,try new payment method");
                                      } else {
                                          orderComplete(confirmResult.paymentInten.id);
                                      }
                                  });
                              } else {
                                  orderComplete(confirmResult.paymentInten.id);
                              }
                          }
                      });
                  });
                
                  /*
                  Some code
                  */
                 
                  // update request price if user select diffirent price
                  paymentRequest.update({
                      total: {
                          label: 'Upgrade',amount: finalPrice * 100,})

解决方法

Apple Pay 在 example in the docs 对您有用吗?您是否有可在线访问的实现示例,或者您是否可以在 JSFiddle 或 CodeSandbox 中重现此示例?

尝试的两个建议:

  1. 在您对 orderComplete 的调用中,您似乎在 paymentInten**t**.id 上有错字 -- 在这两种情况下都缺少末尾的 t
  2. 我想知道您的 paymentRequest.update 是否引起了问题。我不熟悉这部分 API 的行为,因此我建议禁用以简化诊断。