Вот краткое изложение:Trouble возвращает достоверный результат при интеграции нашивки API в моем Метеор приложение
- Я пытаюсь запустить нашивки API на моем Метеор приложение асинхронно
- Короче говоря, все работает (т.е. подписка и плата создаются нормально и отображаются на моей панели инструментов Stripe)
- При возникновении ошибок ошибки обычно отображаются и отображаются на клиенте с помощью удобных оповещений
- У меня возникла проблема, когда есть успех и подписка на клиента , результат не представить в клиенте, а вместо этого всегда возвращается как ошибка, несмотря на его успешный процесс
Вот что мой метод похож на сервере:
createCustomer: function(token, email, plan){
try{
let createCustomer = Meteor.wrapAsync(stripe.customers.create);
let result = createCustomer({
source: token,
email: email,
plan: plan
});
let subscription = {
customer: result.id,
sub: result.subscriptions.data[0].id,
plan: result.subscriptions.data[0].plan.name
};
Meteor.users.update({_id: Meteor.userId()}, {$set: subscription});
} catch(error){
if(error.code === "incorrect_cvc"){
throw new Meteor.Error("incorrect_cvc", error.message);
}
// More of such errors follows
}
}
Вот как это выглядит на клиенте:
Stripe.card.createToken({
number: number,
cvc: cvc,
exp_month: exp,
exp_year: exp_year,
address_zip: zip,
address_country: country
}, function(status, response){
if(response.error){
console.log("Make sure all fields are filled before submitting order.");
} else{
let token = response.id;
Meteor.call("createCustomer", token, email, plan, function(error, result){
if(result){
console.log("Congratulations, everything worked!");
} else{
if(error.error === "incorrect_cvc"){
console.log("oops, the CSV is incorrect");
}
// More of such errors follow..
}
})
}
});
Итак, все работает с точки зрения реальной ошибки, она отлично срабатывает на сервере + клиент. Когда пользователь использует карточку, сборы создаются и подписка всегда создается. HOWEVER, когда есть успех и все щелкают в порядке, я все равно получаю сообщение об ошибке на клиенте через обратный вызов, и результат никогда не true
или не срабатывает. Не знаю, почему.
вы могли бы иметь успех с вашей полосой вызова то неудачи в собственном коде, и это будет пойман тот же 'catch' блока. Вы уверены, что 'let subscription = { клиент: result.id, sub: result.subscriptions.data [0] .id, plan: result.subscriptions.data [0] .plan.name };' выполняет без ошибок? Или может 'Meteor.userId()' быть undefined? –
@MichelFloyd Все определено и работает отлично. Подписка добавляется в документ пользователя, и подписка создается на Stripe. Ошибка все равно возвращается на клиенте. Даже если я удалю блок подписки и просто вызову 'stripe.customers.create', все еще есть ошибка. –
Когда я использую обещания вместо этого, он отлично работает с результатами. Однако у меня проблемы с отображением ошибок на клиенте. Лол. –