2016-04-27 38 views
1

我似乎無法充電,然後卡在導軌4不能使用條紋令牌不止一次

def charge 
token = params[:stripeToken] # can only be used once. 
begin 
    charge = Stripe::Charge.create(
    :amount => 5000, 
    :currency => "gbp", 
    :source => token, 
    :description => "Example charge" 
) 
rescue Stripe::CardError => e 
    # The card has been declined 
end 

if current_user.stripeid == nil 
    customer = Stripe::Customer.create(card: token, ...) 
    current_user.stripeid = customer.id 
    current_user.save 
end 
end 

I have looked at this動態創建一個客戶,但有沒有這樣的事情token.idtoken只是一個String

+0

而你沒有提交令牌(即創建一個收費)在你的JS代碼中的任何地方? –

+0

我正在使用Checkout.js。 – Sylar

回答

0

它看起來像您使用的是兩個位置令牌:

charge = Stripe::Charge.create(
    :amount => 5000, 
    :currency => "gbp", 
    :source => token, 
    :description => "Example charge" 
) 

和這裏:

customer = Stripe::Customer.create(card: token, ...) 

事實上,從令牌創建帶區負責人也應該創建一個客戶連同卡片一起,如果它不存在的話。您創建客戶的步驟是不必要的。因此,就去拿從源頭上條紋的客戶:

current_user.update_attribute(:stripeid, charge.source.customer) 

相關條紋文檔: https://stripe.com/docs/api/ruby#create_charge

編輯

如果你想擁有在充電過程更多的控制,創建每個對象獨立:

customer = Stripe::Customer.create(
    description: "Example customer", 
    email: current_user.email 
) 

card = customer.sources.create(
    source: "<stripe token>" 
    customer: customer.id 
) 

Stripe::Charge.create(
    amount: 5000, 
    currency: "gbp", 
    source: card.id, 
    customer: customer.id 
) 
+0

酷,但你是否說我不需要條紋客戶?我從'customer.id'得到了這個'未定義的方法ID') – Sylar

+0

奇怪的是,它不是我的零。你使用最新的Stripe API嗎? –

+0

不,讓我更新並看看。但我必須有一個條紋客戶來跟蹤他們的消費。 – Sylar