问题描述
我们的目标
我们有一个平台,可以管理所有客户,产品和价格。关联帐户是否可以从平台帐户收取的订阅中收到付款? (关联的帐户可以在所有区域中。)
我们希望添加可接收订阅付款的关联帐户。理想的情况是将所有费用结算到平台帐户上,然后转移到关联帐户。
选项1
在文档中,最简单的方法是使用transfer_data[destination]
。
但是,事实证明,如果您关联的帐户来自不同的地区,则是不可能的。例如。该平台位于澳大利亚的美国的关联帐户。
选项2
传递stripe_account
标头,但是这里的问题是客户和价格必须属于关联帐户,这是不可行的。
选项3(唯一的解决方案?)
因此,解决方案是使用on_behalf_of=connected_account_id
参数which is covered in the docs。问题是stripe.Subscription.create()
API没有这样的参数。
有没有人成功使用on_behalf_of
创建订阅?
解决方法
目前,Stripe不正式支持on_behalf_of
上的Subscription
,唯一可用的官方选项是您提到的前2个。
对于选项3,它是您可以访问的私人Beta版的一部分。我建议与他们的support team联系
,订阅创建调用不支持此功能,但您可以通过直接在订阅创建的发票上设置 on_behalf_of 属性来实现。您可以通过侦听“invoice.created”网络钩子事件来更新已创建的发票。
在您的网络钩子上:
if 'invoice.created' == event.type
stripe_invoice = event.data.object # Stripe::Invoice
Stripe::Invoice.update(
stripe_invoice.id,{
transfer_data: {
destination: stripe_account #connected account ID
},on_behalf_of: stripe_account #connected account ID
},{
api_key: ENV.fetch('STRIPE_SECRET_KEY'),stripe_version: ENV.fetch('STRIPE_API_VERSION')
}
)
end
您还可以通过检查发票类型来确定发票是订阅的,您还会在发票对象上找到您的订阅 ID,可用于检索原始订阅对象。
请阅读:https://support.stripe.com/questions/sending-invoices-on-behalf-of-connected-accounts