2016-08-07 28 views
1

Stripe Connected Accounts APIでアカウントの外部アカウントを請求するにはどうすればよいですか?ストライプ接続アカウント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です私のコードです。

私の最初の試みは、ソースとしてそれを渡すことだったと私はエラー「いいえ、そのようなトークン」

+0

私は私も顧客として各アカウントを追加する必要があると思っています:( –

答えて

0

あなたはストライプがトークンを返すユーザーからクレジットカード/デビットカードを取り、あなたは二つのこと 1を行うことができました。顧客に一度請求すると、トークンは期限切れになります。 2.そのトークンを使用して顧客を作成し、将来の支払いのために保存します。この方法で追加料金を請求することができます。

ここではそのトークンを使用しています。

1

接続されたアカウントAPIを使用してアカウントを充電する方法はありません。

各ユーザーのストライプアカウントと、各ユーザーのストライプコンタクトを作成します。

その後のコードはこのように見える終わる:

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