条纹订阅:该客户没有附加的付款来源或默认付款方式



我使用的是以下代码:

  1. 创建客户
  2. 创建付款方式
  3. 将付款方式附加到客户

然后我调用订阅方法来创建订阅。

但仍然得到这个错误:错误:这个客户没有附加的付款来源或默认的付款方式。

请告诉我哪里做错了。

exports.attachPaymentMethodWithCustomer = functions.https.onCall(async (data) => {
try {
///Create Customer
const customer = await stripe.customers.create({
description: 'My First Test Customer (created for API docs at https://www.stripe.com/docs/api)',
});

///Create Payment Method
const paymentMethod = await stripe.paymentMethods.create({
type: 'card',
card: {
number: '4242424242424242',
exp_month: 10,
exp_year: 2023,
cvc: '314',
},
});

///Attach Payment Method with Customer
await stripe.paymentMethods.attach(
paymentMethod.id,
{customer:customer.id}
);
///Crate Product
const product = await stripe.products.create({
name: 'Gold Special',
});

///Create Price
const price = await stripe.prices.create({
unit_amount: 1000,
currency: 'usd',
recurring: {interval: 'month'},
product: product.id,
});
///Create Subscription
const subscription = await stripe.subscriptions.create({
customer: customer.id,
items: [
{price: price.id},
],
payment_behavior: 'default_incomplete',
payment_settings: { save_default_payment_method: 'on_subscription' },
expand: ['latest_invoice.payment_intent'],
});
console.log(subscription.id + "Subscription");
const paymentIntent = await stripe.paymentIntents.create({
amount: 1000,
currency: 'usd',
payment_method_types: ['card'],
});
const confirmPayment = await stripe.paymentIntents.confirm(
paymentIntent.id,
{payment_method: 'pm_card_visa'}
);
console.log(confirmPayment.id + "Subscription");

// return subscription.id;
} catch (error) {
console.log(`error: ${error}`);
// return null;
}
});

即使您调用了Attach PaymentMethod API,您仍然必须在创建时传递default_payment_method: 'pm_123',或在附件后在客户本身上设置invoice_settings[default_payment_method]: 'pm_123',从而显式地将其作为该订阅的默认值。

总的来说,这就是为什么Stripe在今年早些时候重新设计了这个流程,使其更加简单。它将改变您第一次使用payment_behavior: 'default_incomplete'创建Subscription的位置。然后,在客户端,您必须在收集付款方式详细信息时确认基本的PaymentIntent。这样,只有在第一次付款成功后,您才能激活订阅。我建议阅读他们的端到端快速启动,在这里详细介绍

最新更新