Braintree API 更新订阅
Posted
技术标签:
【中文标题】Braintree API 更新订阅【英文标题】:Braintree API Update Subscription 【发布时间】:2015-10-25 19:10:47 【问题描述】:Braintree API 文档在处理订阅的一些事情上并不完全清楚。
我们正在构建一个具有多个订阅等级的系统,并希望让用户能够随时更改等级。更新订阅很容易,而且我们启用了按比例计费(尽管我们仍然不完全清楚 Braintree 在那里做了什么)。
我没有看到的部分是如何更新价格。如果我更改计划 ID,价格不会改变。我希望订阅使用新计划的价格 - 我无法想象何时不更新价格是有意义的。我看到我可以将新价格与新计划 ID 一起传递,因此我可以在更新计划的同一个调用中更新价格,但这意味着我必须将价格存储在我的代码和 Braintree 中。我知道我可以调用 Braintree 上的计划来获取价格信息,但没有必要增加额外 API 调用的开销。
我是否忽略了什么?真的没有办法告诉 Braintree 使用新订阅的价格吗?
【问题讨论】:
【参考方案1】:我是 Braintree 的一名开发人员。我们的计划是用于在创建订阅时填充订阅的模板。
来自我们的docs:
计划是您订阅的模板:当您创建计划时,它将用于在创建新订阅时填充以下属性:
计划名称 说明 试用期 每月结算日 计费周期数 金额 货币 计费周期
此外,我们的subscriptions 在更新时不会继承新计划的价格
如果您更新订阅的计划,订阅将不会继承新计划的价格。
我们将计划实施为模板,以便商家可以安全地更新计划,而不会影响现有客户的订阅。
当计划 ID 发生更改时,我们尽量不对订阅状态做出任何假设,以防止其值被意外更改。目前没有解决方案可以在更改计划的订阅时从计划中继承选择属性。
【讨论】:
常见的做法不是要求商家在更改订阅时创建新计划吗?这相当笨拙,并且需要额外的 API 调用:我必须多花一点时间才能找到新订阅的费用,以便在更新计划时更新他们的价格。 如果您想获得一些关于在您的用例中使用我们的循环计费 API 的最佳方式的建议,最好的选择是contact support。 对我来说似乎不是这样操作的。我正在将一群客户迁移到新计划,而不是采用旧计划的价格(客户当前支付的价格),甚至是我在选项中指定的价格,而是采用新计划的价格,然后我必须再次调用 update 来更改价格。【参考方案2】:由于这个问题没有语言标签,我将使用 php。
如果您的客户更改订阅,您需要做的就是将他在 Braintree 中的当前订阅更新为新计划,并在通话中设置该计划的新价格。
基本上,Braintree 中的计划只是模板(如 pblesi 所说)。您可以覆盖任何您想要的值。理论上,您可以在 Braintree 中创建一个名为 tiny
的 1 美元/月计划,但在您的代码中以 500 美元/月的订阅价格为用户订阅 tiny
计划。
我认为(从这里开始猜测)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 定期计费要容易得多。
【讨论】:
问题是为什么我必须指定价格,braintree 不应该自动这样做......以上是关于Braintree API 更新订阅的主要内容,如果未能解决你的问题,请参考以下文章
这是使用 API 在 Python 中为 Braintree 创建订阅的正确方法吗