Stripe:在网络上使用 Apple Pay 进行订阅
Posted
技术标签:
【中文标题】Stripe:在网络上使用 Apple Pay 进行订阅【英文标题】:Stripe: Use apple pay on the web for a subscription 【发布时间】:2021-05-14 06:08:42 【问题描述】:在使用 Stripe 设置 Apple pay 的 documentation 中,这些步骤告诉您创建一个带有条纹元素的支付请求,以显示 Apple Pay 按钮 - 示例请求是一次性直接收费。您必须有付款请求才能显示该按钮 - 那么如何为订阅创建付款请求?支付请求对象是条带元素的东西,在条带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 support page 表示使用 Apple Pay 进行定期付款 只是说“Apple Pay 将创建一个令牌”,但不提供如何在不收取一次性费用的情况下设置它的线索。
如何在不请求付款的情况下让 Apple Pay 按钮条纹显示?如果我必须要求付款,是否只是订阅的一个时间间隔,是否可以定期收取此金额?
【问题讨论】:
【参考方案1】:您使用 Stripe.js 发出的付款请求实际上并未处理付款。它只是确认用户的浏览器支持 Apple/Google Pay,并显示带有提供的付款详细信息的付款表。用户授权付款单上描述的付款后,Stripe 将生成付款方式。此时,如果您结束集成,则永远不会向用户收费 - 您只需拥有一个 Stripe 付款方式 ID。此时您需要做的是:
-
将付款方式 ID 保存给客户:https://stripe.com/docs/api/payment_methods/attach
将付款方式设置为订阅发票的默认付款方式:https://stripe.com/docs/api/customers/update(通过设置invoice_settings.default_payment_method)
为客户订阅定期价格(例如,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,因此似乎无法在localhost上看到apple pay按钮,对吗? 没错,你需要通过像 ngrok.io 这样的隧道服务来传输你的本地主机 URL:ngrok.com。它最基本的形式是免费的,对于测试 Apple/Google Pay 非常有用 谢谢。旁注,如果条件支持,我注意到docs page 会显示苹果支付按钮......但出于某种原因,即使使用 chrome 保存的卡,我也看不到它。知道为什么吗? 您可以尝试将 Stripe 的一张测试卡保存到 Chrome 中,然后看看您是否看到按钮?例如,尝试4242424242424242
,使用任何名称和任何未来的到期日期。
测试卡显示紫色支付按钮¯_(ツ)_/¯以上是关于Stripe:在网络上使用 Apple Pay 进行订阅的主要内容,如果未能解决你的问题,请参考以下文章
将 Stripe Apple Pay 按钮添加到 ionic 移动应用程序时出现 SSL 错误