Braintree API更新订阅

时间:2015-08-03 15:36:01

标签: paypal braintree

Braintree API文档在处理订阅的一些事情上并不完全清楚。

我们正在构建具有多个订阅层的系统,并希望让用户能够随时更改层。更新订阅非常简单,我们已经按比例计费(尽管我们还不完全清楚Braintree在那里做了什么)。

我没有看到的部分是如何更新价格。如果我更改计划ID,价格不会改变。我希望订阅能够使用新计划的价格 - 我无法想象更新价格何时才有意义。我看到我可以通过新的价格和新的计划ID,所以我可以在更新计划的同一次通话中更新价格,但这意味着我必须将价格存储在我的代码和Braintree中。我知道我可以调用Braintree上的计划来获取价格信息,但是没有必要增加额外API调用的开销。

我忽略了什么吗?真的没有办法告诉Braintree使用新订阅的价格吗?

2 个答案:

答案 0 :(得分:2)

我是Braintree的开发人员。我们的计划是用于在创建订阅时填充订阅的模板。

来自我们的docs

  

计划是您订阅的模板:创建计划时,它将用于在创建新订阅时填充以下属性:

     
      
  • 计划名称
  •   
  • description
  •   
  • 试用期
  •   
  • 每月结算日
  •   
  • 结算周期数
  •   
  • 金额
  •   
  • currency
  •   
  • 结算周期
  •   

此外,我们的subscriptions在更新后不会继承新计划的价格

  

如果您更新订阅计划,订阅将不会继承新计划的价格。

我们将计划作为模板实施,以便商家可以安全地更新计划,而不会影响现有客户的订阅。

我们尝试在计划ID发生变化时不对订阅状态做出任何假设,以防止其值意外更改。目前没有解决方案在更改计划订阅时从计划继承选择属性。

答案 1 :(得分:0)

由于此问题没有语言标记,我将使用PHP。

如果您的客户更改了订阅,您需要做的是将他在Braintree中的当前订阅更新为新计划并在该通话中设置该计划的新价格。

基本上Braintree的计划只是模板(如pblesi所说)。您可以覆盖所需的任何值。理论上,您可以在Braintree中创建一个名为tiny的$ 1 /月计划,但在您的代码中,用户订阅tiny计划,每月订阅价格为500美元。

我认为(从这里猜测)Braintree只是提供这个系统,所以人们可以在不更新任何代码的情况下为他们的应用程序/网站添加计划,因为您可以在您的帐户上查询所有现有的Braintree计划并使用其内容填充GUI 。如果您实施此类内容,您可以稍后添加计划,它们将自动显示在您的网站/应用中。另一方面,您可以编辑其网站上现有计划的价格,这只会影响新订户,因为旧客户将继续支付旧价格。

现在代码,在PHP中:

首先我创建订阅:

Braintree_Subscription::create([
      'paymentMethodToken' => $paymentMethodToken,
      'planId' => $planId,
        'price' => $price
    ]);

价格只是一个数字,货币取决于您的帐户配置

想象一下,我的用户在网站上更改了他的订阅,我可以按如下方式更新他的订阅:

Braintree_Subscription::update($subscriptionId,[
        'planId' => $planId,
        'price' => $price
    ]);

其中$subscriptionId是您首次注册时创建的订阅的ID(例如,存储在您的数据库中的用户信息的某处),$planId是新计划, $price是新计划的价格。

我自己刚刚实施了对Braintree的支持,实际上,用户手册并不是很清楚,但是一旦你知道它是如何工作的,它实际上是一个非常容易使用的系统。就此而言,比PayPal定期计费容易得多。