Stripe:在Web上使用Apple Pay进行订阅

5
在使用Stripe设置Apple Pay的文档中,步骤告诉您要创建一个带有Stripe元素的付款请求,以显示苹果支付按钮 - 示例请求是一次性直接收费。您必须拥有付款请求才能显示按钮 - 那么我如何为订阅创建付款请求?付款请求对象是一个Stripe元素,没有在Stripe API中进行描述。
var elements = stripe.elements();
var prButton = elements.create('paymentRequestButton', {
  paymentRequest: paymentRequest,
});

// Check the availability of the Payment Request API first.
paymentRequest.canMakePayment().then(function(result) {
  if (result) {
    prButton.mount('#payment-request-button');
  } else {
    document.getElementById('payment-request-button').style.display = 'none';
  }
});

使用信用卡的流程完全不同。它不需要任何付款请求,您只需从Stripe元素卡表单创建令牌以创建客户即可。
Stripe针对“使用苹果支付进行定期付款”的支持页面只是说“苹果支付将创建一个令牌”,但没有提供如何在没有一次性收费的情况下设置它的线索。
我如何使Stripe显示苹果支付按钮而不请求付款?如果我必须请求付款,那么这只是订阅的一个间隔吗?这个金额能够按照重复的基础计费吗?
1个回答

7
使用Stripe.js 发出的支付请求并不会实际处理付款:
1.它仅确认用户的浏览器是否支持苹果/谷歌支付,并显示带有提供的付款详细信息的付款表单。
2.当用户授权在付款表单中描述的付款后,Stripe将生成一种支付方式。
3.此时,如果您不集成其余步骤,则永远不会向用户收费-您只会拥有Stripe支付方式ID。
您需要在此时集成以下剩余步骤:
1.将付款方式ID保存到客户端:https://stripe.com/docs/api/payment_methods/attach 2.将该付款方式设置为订阅发票的默认方式:https://stripe.com/docs/api/customers/update (通过设置 invoice_settings.default_payment_method)
3.将客户端订阅到一个经常性的价格(例如,https://stripe.com/docs/billing/subscriptions/fixed-price
您需要通过接收来自付款请求的付款方式来触发以上所有逻辑。
paymentRequest.on('paymentmethod', function(ev) {
  const paymentMethodId = ev.paymentMethod.id;

  // Send ID to your server to:
  //  a) attach it to a Customer
  //  b) set it as the default for subscription invoices
  //  c) create the subscription
});

谢谢!看起来在本地主机上没有https,所以无法看到Apple Pay按钮,是这样吗? - inorganik
1
没错,你需要通过隧道服务(如ngrok.io:https://ngrok.com/)将本地主机URL进行管道传输。它的基本形式是免费的,对于测试Apple / Google Pay非常有用。 - ttmarek
谢谢。顺便说一下,我注意到文档页面如果条件支持,会显示Apple Pay按钮...但是即使在Chrome中保存了卡片,我也看不到它。有什么想法吗? - inorganik
1
你能否尝试将Stripe的测试卡保存到Chrome中,然后查看是否可以看到按钮?例如,尝试使用4242424242424242,任何名称和未来日期作为到期日期。 - ttmarek
测试卡使紫色的支付按钮出现了 ¯_(ツ)_/¯ - inorganik
大家好,我按照你们上面提到的步骤创建了一个带有金额的paymentRequest。看起来一切正常。但是当用户点击按钮时会显示一个金额。 - Kavin404

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接