使用cancel_at_period_end参数进行条带计划切换错误

时间:2018-04-14 09:29:23

标签: stripe-payments

他们网站上的official Stripe documentation有各种不同语言的示例,可以为客户切换订阅计划。这是他们提供的代码段:

Subscription subscription = Subscription.retrieve("sub_49ty4767H20z6a");

Map<String, Object> item = new HashMap<>();
item.put("cancel_at_period_end", false);
item.put("id", subscription.getSubscriptionItems().getData().get(0).getId());
item.put("plan", "plan_CBb6IXqvTLXp3f");

Map<String, Object> items = new HashMap<>();
items.put("0", item);

Map<String, Object> params = new HashMap<>();
params.put("items", items);

subscription.update(params);

我已使用示例中给出的确切代码为客户从一个计划切换到另一个计划,但我收到以下错误:

  

com.stripe.exception.InvalidRequestException:收到未知参数:items [0] [cancel_at_period_end]; code:parameter_unknown;

我正在使用Java,但它并不重要,因为所有示例都在订阅项中具有相同的cancel_at_period_end参数。 According to the docs,订阅项目没有cancel_at_period_end参数。

我尝试从示例中删除该参数,并且计划切换正常工作。这是文档中的错误,还是我错过了重要的内容?

1 个答案:

答案 0 :(得分:1)

此示例不正确,因为cancel_at_period_end是顶级参数。

代码应为:

Subscription subscription = Subscription.retrieve("sub_49ty4767H20z6a");

Map<String, Object> item = new HashMap<>();
item.put("id", subscription.getSubscriptionItems().getData().get(0).getId());
item.put("plan", "plan_CBb6IXqvTLXp3f");

Map<String, Object> items = new HashMap<>();
items.put("0", item);

Map<String, Object> params = new HashMap<>();
params.put("items", items);
params.put("cancel_at_period_end", false);

subscription.update(params);