我想知道我是否可以使用stripe Express checkout element进行订阅?
我使用红宝石
基于文档,其中一种模式使其看起来可行:
const elements = stripe.elements({
mode: 'payment', // This can be `subscription`
amount: 1099,
currency: 'usd',
appearance,
})
我有订阅价格的查找键。我希望在此处确认付款方式后可以在某个地方使用它:
const handleError = (error) => {
const messageContainer = document.querySelector('#error-message');
messageContainer.textContent = error.message;
}
expressCheckoutElement.on('confirm', async (event) => {
const {error: submitError} = await elements.submit();
if (submitError) {
handleError(submitError);
return;
}
// Create the PaymentIntent and obtain clientSecret
const res = await fetch('/create-intent', {
method: 'POST',
});
const {client_secret: clientSecret} = await res.json();
const {error} = await stripe.confirmPayment({
// `elements` instance used to create the Express Checkout Element
elements,
// `clientSecret` from the created PaymentIntent
clientSecret,
confirmParams: {
return_url: 'https://example.com/order/123/complete',
},
});
if (error) {
// This point is only reached if there's an immediate error when
// confirming the payment. Show the error to your customer (for example, payment details incomplete)
handleError(error);
} else {
// The payment UI automatically closes with a success animation.
// Your customer is redirected to your `return_url`.
}
});
我想在 return_url 创建订阅。但根据提供的文件,这只是一次性付款。
因此,如果我这样做(不使用订阅价格 ID,只是在返回 URL 处创建客户的订阅)。它们将收取两项费用,一项是快速结帐时的一次性付款,另一项是创建订阅时的一次性付款。
有什么帮助吗?
您可以使用他们的 Express Checkout Element 进行订阅。正如您在客户端站点上提到的,您将指定订阅模式。
const options = {
mode: 'subscription',
amount: 1000,
currency: 'usd',
setupFutureUsage: 'off_session',
};
您还可以在客户端的确认调用中传递返回网址:
const {error} = await stripe.confirmSetup({
elements,
confirmParams: {
return_url: 'https://example.com/order/123/complete',
},
});
在服务器端,您可以使用类似于其他集成路径的
本节的
stripe.subscriptions.create
方法。我将其与订阅集成,当他们在文档中说“付款”时,他们可能将其用作更广泛的术语,而不是说它仅适用于“付款模式”。