代码之家  ›  专栏  ›  技术社区  ›  RTF

带cancel\u at\u period\u end参数的条带计划切换错误

  •  1
  • RTF  · 技术社区  · 6 年前

    这个 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。条纹例外InvalidRequestException:收到未知参数:items[0][在\u period\u end取消];代码:参数\u未知;

    我正在使用Java,但什么语言并不重要,因为所有示例都有相同的语言 cancel_at_period_end 订阅项目中的参数。 According to the docs ,没有 在\u period\u结束时取消\u 订阅项目的参数。

    我已尝试从示例中删除该参数,并且计划切换工作正常。这是文件中的错误,还是我遗漏了一些重要的东西?

    1 回复  |  直到 6 年前
        1
  •  1
  •   koopajah MKumar    6 年前

    此示例不正确,因为 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);