[英]Stripe API on Node.js Error: No such customer:
這很新。 一切正常,卡進行了驗證,但是當他們提交信息時,網頁顯示“內部服務器錯誤”,錯誤日志顯示“錯誤:沒有這樣的客戶”。 對錯誤消息的研究表明,我的代碼有問題,但是我很難發現它。
客戶正在為訂閱產品付費。
let promise = Promise.resolve();
if(user.stripe_plan_id !== plan || card_token){
promise = promise.then( () => {
return new Promise( (resolve, reject) => {
if(!user.stripe_user_id){
stripe.customers.create({
description: 'Customer for test@example.com',
email: user.email,
//source: "tok_16UzfA2eZvKYlo2CVJRxXLSR" // obtained with Stripe.js
plan: 'free',
metadata: {
userId: user.id
}
}, function(err, customer) {
if(err){
reject(err);
}else{
user.stripe_user_id = customer.id;
resolve();
}
});
}else{
resolve();
}
});
});
}
if(card_token){
promise = promise.then( () => {
return new Promise( (resolve, reject) => {
stripe.customers.update(user.stripe_user_id, {
source: card_token
}, function(err, customer) {
if(err){
reject(err);
}else{
let last4;
if(customer.default_source){
customer.sources.data.forEach( (source) => {
if(source.id == customer.default_source){
last4 = source.last4;
}
});
}
user.last4 = last4 || '';
resolve(); //next section will save the user anyways.
}
});
});
});
}
if(user.stripe_plan_id !== plan){
promise = promise.then( () => {
return new Promise( (resolve, reject) => {
stripe.customers.listSubscriptions(user.stripe_user_id, function(err, subscriptions) {
if(err){
reject(err);
}else{
resolve(subscriptions);
}
});
});
}).then( (subscriptions) => {
return new Promise( (resolve, reject) => {
if(subscriptions.data[0]){
stripe.customers.updateSubscription(
user.stripe_user_id,
subscriptions.data[0].id,
{ plan },
function(err, subscription) {
if(err){
reject(err);
}else{
user.stripe_plan_id = plan;
resolve();
}
}
);
}else{
stripe.customers.createSubscription(
user.stripe_user_id,
{plan},
function(err, subscription) {
if(err){
reject(err);
}else{
user.stripe_plan_id = plan;
resolve();
}
}
);
}
});
});
}
return promise.then( () => {
return user.save();
});
}).then( (user) => {
res.json({
plan: user.stripe_plan_id
}).end();
}).catch( (err) => {
console.error(err);
if(err.message === 'This customer has no attached payment source'){
res.json({
error: true,
message:'Payment source missing.'
}).end();
return;
}
res.json({
error: true,
message:typeof(err)==="string"?err:'internal server error'
}).end();
});
});
因此,您在此處看到的消息僅表示您嘗試更新的Stripe帳戶中不存在您要更新的客戶。 您在錯誤響應中收到的消息應提供客戶ID; 如果您在Stripe儀表板中(或通過API)搜索該客戶,您在那看到嗎? 我懷疑user.stripe_user_id
已經設置好了,或者您試圖更新另一個帳戶上存在的客戶,或者那里有一些其他無效值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.