Stripe更新PaymentMethod提示No such PaymentMethod错误如何解决
错误原因
- Stripe的
paymentMethods.update接口第一个入参要求传入PaymentMethod ID(格式为card_开头的字符串),你调用更新方法时传入的是stripeCustomer.id也就是客户ID(格式为cus_开头,即报错信息里的cus_JztknPBEnl5h8x),系统无法匹配到对应ID的PaymentMethod对象,因此抛出错误。 - 你调用
getAllStripePayments拿到的是指定客户名下所有支付方式的列表,返回结果中data数组内每一项的id字段才是需要用到的PaymentMethod ID,你没有从返回结果中提取该ID就直接传入了客户ID,是问题的根源。
解决方法
先从查询支付方式的返回结果中提取目标PaymentMethod的ID,再传入更新方法即可,修正后的调用代码如下:
const paymentMethodList = await this.stripeApi.getAllStripePayments(stripeCustomer.id); console.log(JSON.stringify(paymentMethodList)); const updateModel = { billing_details: { phone: customerMeta.phoneNumber, }, }; // 提取第一个支付方式的ID,若有多个支付方式需更新,可遍历data数组处理 const targetPaymentMethodId = paymentMethodList.data[0].id; const updatePaymentMethod = await this.stripeApi.updateStripePaymentMethods(targetPaymentMethodId, updateModel); console.log(updatePaymentMethod);
注意:如果客户名下存在多个支付方式,不要直接取下标为0的对象,需根据业务逻辑筛选出你需要更新的对应支付方式后再提取ID,避免错误修改其他支付方式的信息。
内容的提问来源于stack exchange,提问作者Ehsan Nissar
相关产品推荐
相关产品推荐

