Stripe/NodeJS:传递空promotion_code报错,求解决方案
解决Stripe订阅创建时promotion_code空字符串报错问题
根据报错提示,promotion_code字段不能传空字符串,要么完全省略这个字段,要么传有效的非空优惠码值。以下是几种简单可行的实现方式:
方法一:条件构建参数对象
先定义基础的订阅参数,再根据promo是否有效决定是否添加promotion_code字段:
// 先创建基础参数对象 const subscriptionParams = { customer: customer.id, items: [{ price: "price_1N1TKrGxUje7SlyIeNldQvLT" }], payment_settings: { payment_method_options: { card: { request_three_d_secure: "any", }, }, payment_method_types: ["card"], save_default_payment_method: "on_subscription", }, expand: ["latest_invoice.payment_intent"], }; // 仅当promo不为空字符串(含纯空格)时,添加promotion_code字段 if (promo && promo.trim() !== "") { subscriptionParams.promotion_code = promo; } // 发起订阅创建请求 const subscription = await stripe.subscriptions.create(subscriptionParams);
方法二:对象展开运算符简洁写法
利用JavaScript的对象展开语法,条件性地包含目标字段:
const subscription = await stripe.subscriptions.create({ customer: customer.id, items: [{ price: "price_1N1TKrGxUje7SlyIeNldQvLT" }], payment_settings: { payment_method_options: { card: { request_three_d_secure: "any", }, }, payment_method_types: ["card"], save_default_payment_method: "on_subscription", }, expand: ["latest_invoice.payment_intent"], // 仅当promo有效时才注入该字段,空值场景下不会添加 ...(promo && promo.trim() !== "" ? { promotion_code: promo } : {}), });
关键注意点
- 必须用
promo.trim() !== ""判断,避免用户输入纯空格这类无效值 - 不要传
null或undefined,直接省略promotion_code字段才符合Stripe的要求——报错信息明确说明要么移除该参数,要么传非空值
内容的提问来源于stack exchange,提问作者Paul VI
相关产品推荐
相关产品推荐

