如何在Stripe Connected Accounts API中为帐户收费?

时间:2016-08-07 20:00:22

标签: ruby stripe-payments stripe-connect

如何在Stripe Connected Accounts API中为帐户的外部帐户收费?

我在系统上创建发票,然后我想让用户付款。

在第一个屏幕上,我列出了保存在系统上的付款帐户。这将是银行账户,信用卡,借记卡。

当他们选择要支付的帐户时,我的麻烦就开始了。

这是我的代码

def pay_invoice invoice_id, source_id
    invoice = Invoice.find(invoice_id)
    account = Stripe::Account.retrieve(@account)
    charge_source = account.external_accounts.retrieve(source_id)

    c = Stripe::Charge.create(
        :amount => invoice.cents,
        :currency => "usd",
        #:customer => @account,
        :source => charge_source,
        :description => "Charge for invoice ##{invoice_id}"
    )

end

传入方法的source_id是我之前获得的外部帐户的ID。

我的第一次尝试是将其作为源传递,我收到错误“No such token”

2 个答案:

答案 0 :(得分:1)

据我所知,没有通过关联帐户API向帐户收费的好方法。

我将为每个用户创建一个Stripe帐户,并为每个用户创建一个Stripe联系人。

然后代码最终看起来像这样:

def pay_invoice invoice_id, source_id
    invoice = Invoice.find(invoice_id)
    c = Stripe::Customer.retrieve(@customer_id)
    paying_source = nil
    c.sources.each do | source|
        if source.id == source_id 
            paying_source = source
        end
    end

    c = Stripe::Charge.create(
        :amount => invoice.cents,
        :currency => "usd",
        :customer => c,
        :source => paying_source,
        :description => "Charge for invoice ##{invoice_id}"
    )

    invoice.status = "paid"
    invoice.save

end

答案 1 :(得分:0)

当您从用户使用信用卡/借记卡时,Stripe会返回一个令牌,您可以做两件事 1.您可以向客户收取一次费用,令牌将过期。 2.使用该令牌创建客户并保存以备将来支付因此使用这种方式您可以进一步收费

在这里,您正在使用该令牌进行充电,并且它将过期,因此下一个相同的令牌会出错。