2016-04-27 3 views
1

я не могу зарядить карту затем создать клиента на лету в Rails 4.Вы не можете использовать Stripe маркер больше, чем когда-то

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.id, как token просто a 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

EDIT

Если вы хотите иметь больше контроля над процессом зарядки, создавать каждый объект независимо:

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

Прохладный, но вы говорите, что мне не нужен полосатый клиент? Я получил этот 'undefined id метода для nil' из' customer.id') – Sylar

+0

Нечетный, это не для меня. Используете ли вы последний API-интерфейс Stripe? –

+0

Нет. Позвольте мне обновить и посмотреть. Но я должен иметь полосатого клиента, чтобы отслеживать их расходы. – Sylar

Смежные вопросы