如何使用关联帐户的目标转移创建订阅使用on_behalf_of参数? 选项1 选项2 选项3唯一的解决方案?

问题描述

我们的目标

我们有一个平台,可以管理所有客户,产品和价格。关联帐户是否可以从平台帐户收取的订阅中收到付款? (关联的帐户可以在所有区域中。)


我们希望添加可接收订阅付款的关联帐户。理想的情况是将所有费用结算到平台帐户上,然后转移到关联帐户。

选项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