2015-05-19 15 views
5

Bir müşteriyi ilk kez başlatmaya çalışıyorum. Kaydettikleri bir form var ve her şey yolluyorlar. İstemci üzerinde çalışmaya başladığında: serverside üzerinde Stripe ile tek bir eylemde hem müşteri hem de kart nasıl oluşturulur?

var cardValues = AutoForm.getFormValues('credit-card-form').insertDoc; 
Stripe.createToken(cardValues, function (err, token) { 
    if (!err && token) { 
    Meteor.call('Stripe.initializeCustomer', token); 
    } 
}); 

, ben böyle bir şey yapmak çalışıyorum:

Meteor.methods({ 
    'Stripe.initializeCustomer': function (token) { 
    var Stripe = StripeAPI(process.env.STRIPE_KEY); 
    // some validation here that nobody cares about 
    Stripe.customers.create({ 
     source: token 
    }).then(function (customer) { 
     return Stripe.customers.createCard(customer.id, { 
     source: token 
     }) 
    }).catch(function (error) { 
     // need to do something here 
    }) 
    } 
}); 

O Çizgili API sevmez gibi görünüyor bu

Unhandled rejection Error: You cannot use a Stripe token more than once

Sunucuda tek bir belirteci şeritlemede birden çok istekte bulunmanın kanonik bir yolu var mı?

+0

Tüm belirteç sözlüğünü geçtiğiniz anlaşılıyor; bu şekilde, yalnızca müşteri oluştururken simge belirtisini geçmeniz gerektiğini düşünüyorum. – hybrdthry911

cevap

5

Bu sorunla karşılaşıyor gibi görünüyorsunuz çünkü yanlışlıkla bir müşteri için yeni bir kart oluşturmak için bir jetonu yeniden kullanmaya çalışıyorsunuz. o kullanıcı. Saklanan bir kartla bir müşteri oluşturmak aslında beklediğinizden çok daha kolay: bir müşteri nesnesini bir jetonla başlattığınızda, Stripe API'si devam ediyor ve bu kartı yeni müşteri ile ilişkili olarak saklıyor. Yani, hemen devam edin ve olduğu gibi, oluşturulduktan sonra müşteriye bir ücret yapabilir:

Stripe.customers.create({ 
    source: token.id 
}).then(function (customer) { 
    Stripe.charge.create({ 
     amount: 1000, 
     currency: 'usd', 
     customer: customer.id 
    }); 
}); 

fazla bilgi için, ben https://support.stripe.com/questions/can-i-save-a-card-and-charge-it-later ve https://stripe.com/docs/api/node#create_customer de Çizgili dokümanlar öneriyoruz.

Sorununuzu çözüp çözemeyeceğini bana bildirin!

+0

Kullanıcıya otomatik olarak bir kart eklediğini bilmiyordum, bu düşündüğümden çok daha kolaydı. Müşteri nesnesini yalnızca sunucu tarafında bir koleksiyona kaydetmek güvenli midir? – corvid

+0

Evet, API'dan istediğiniz herhangi bir şekilde iade edilen her şeyi saklamak tamamen güvenlidir. Bir rakip aslında Stripe müşterisi veya hatta hesabınıza özel API anahtarına erişemeyen kart kimliği ile hiçbir şey yapamaz. – agentcoops

+0

harika, çok yardımcı oldu, teşekkürler efendim – corvid

İlgili konular