You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法更新Stripe优惠券:调用API时提示未知参数错误

问题解决:Stripe优惠券更新报错「Received unknown parameters: duration, percent_off」

问题原因

Stripe的Coupon对象创建后,**percent_off(折扣百分比)和duration(有效期类型)**属于不可修改的核心字段,调用stripe.coupons.update时传入这两个参数,就会触发「未知参数」的报错。你代码里试图修改这两个字段,不符合Stripe的API规则。

修正方案

如果需要调整折扣比例或有效期类型,只能创建新的优惠券,无法修改已有优惠券的这两个属性。以下是调整后的代码逻辑:

const update_coupon = async (req, res) => {
    const { percent_off, duration, new_coupon_name } = req.body;
    const couponId = req.params.coupon_id;

    try {
        // 1. 标记旧优惠券为失效(可选,防止继续被使用)
        await stripe.coupons.update(
            couponId,
            { active: false }
        );

        // 2. 创建新优惠券,使用新的折扣和有效期参数
        const newCoupon = await stripe.coupons.create({
            percent_off: percent_off,
            duration: duration,
            name: new_coupon_name || "Updated Coupon",
            // 可按需添加其他参数,比如redeem_by(兑换截止时间)等
        });

        console.log("New coupon created:", newCoupon);
        res.status(200).json({
            message: "旧优惠券已停用,新优惠券创建完成",
            old_coupon_id: couponId,
            new_coupon: newCoupon
        });
    } catch (error) {
        console.error("优惠券更新处理失败:", error.message);
        res.status(500).json({ error: "优惠券更新操作失败" });
    }
};

补充说明

  • Stripe允许修改的优惠券字段包括:active(是否激活)、name(名称)、redeem_by(兑换截止时间)、max_redemptions(最大兑换次数)等。
  • 若仅需修改合法字段,直接在stripe.coupons.update中传入对应参数即可,比如修改优惠券名称:
const updatedCoupon = await stripe.coupons.update(
    couponId,
    { name: "新折扣名称" }
);

内容的提问来源于stack exchange,提问作者kenil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 18:13:12