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

Stripe Java SDK v31.0.0给客户绑定优惠券的正确方式咨询

问题:Stripe Java SDK v31.0.0+ 如何给已有客户绑定优惠券?

我在使用Stripe Java SDK给已有客户绑定优惠券时遇到了版本兼容问题:

  • 在v28.0.0版本中,通过CustomerUpdateParams.setCoupon()方法可以正常实现,但升级至v31.0.0后该方法被移除。
  • 尝试用putExtraParam("coupon", "coupon_123")传递参数,调用无报错但未在Stripe后台生效。

旧代码(v28.0.0):

CustomerUpdateParams params =
    CustomerUpdateParams.builder()
        .setCoupon("coupon_123")
        .build();

Customer customer = Customer.retrieve(customerId);
customer.update(params);

新尝试(v31.0.0):

CustomerUpdateParams params =
    CustomerUpdateParams.builder()
        .putExtraParam("coupon", "coupon_123")
        .build();

Customer customer = Customer.retrieve(customerId);
customer.update(params);

现咨询三个问题:

  1. 使用最新Stripe Java SDK给已有客户绑定优惠券的正确方法是什么?
  2. Stripe是否已正式弃用直接给客户绑定优惠券,转而推广促销码或订阅?
  3. putExtraParam("coupon",...)是否仍支持该场景?

回答

1. 最新SDK绑定优惠券的正确方法

在v31.0.0及以上版本的Stripe Java SDK中,给客户绑定优惠券需要通过Discount参数嵌套设置,具体代码如下:

// 构建Discount参数,指定要绑定的优惠券ID
CustomerUpdateParams.Discount discountParams =
    CustomerUpdateParams.Discount.builder()
        .setCoupon("coupon_123")
        .build();

// 构建CustomerUpdateParams并设置Discount
CustomerUpdateParams params =
    CustomerUpdateParams.builder()
        .setDiscount(discountParams)
        .build();

// 更新客户信息
Customer customer = Customer.retrieve(customerId);
customer.update(params);

2. 是否弃用直接绑定优惠券?

Stripe并未正式弃用直接给客户绑定优惠券的功能,但确实在**大力推广促销码(Promotion Codes)**作为更灵活的替代方案。促销码支持更多高级特性:比如设置使用次数限制、有效期、适用范围(特定产品/订阅)、是否需要兑换码等,而直接绑定优惠券的方式功能相对单一。如果业务场景需要更精细的控制,推荐使用促销码。

3. putExtraParam("coupon",...)是否支持该场景?

不支持。v31.0.0+的SDK对CustomerUpdateParams的结构进行了调整,原顶层coupon字段已被整合到discount对象下。直接通过putExtraParam传递顶层的coupon参数,SDK不会将其正确映射到API请求的对应位置,因此调用无报错但后台不会生效。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.11 14:03:14