Braintree API文档在处理订阅的一些事情上并不完全清楚。
我们正在构建具有多个订阅层的系统,并希望让用户能够随时更改层。更新订阅非常简单,我们已经按比例计费(尽管我们还不完全清楚Braintree在那里做了什么)。
我没有看到的部分是如何更新价格。如果我更改计划ID,价格不会改变。我希望订阅能够使用新计划的价格 - 我无法想象不更新价格何时才有意义。我看到我可以通过新的价格和新的计划ID,所以我可以在更新计划的同一次通话中更新价格,但这意味着我必须将价格存储在我的代码和Braintree中。我知道我可以调用Braintree上的计划来获取价格信息,但是没有必要增加额外API调用的开销。
我忽略了什么吗?真的没有办法告诉Braintree使用新订阅的价格吗?
答案 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定期计费容易得多。