节点上的条带 API .js错误:没有这样的客户:
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
已经设置好了,您要么正在尝试更新另一个帐户上存在的客户,要么您那里有其他无效值。
相关文章:
- Node.js上的WebSocket,并在所有连接的客户端之间共享消息
- 正在寻找从JSON/对象构建DOM客户端的JS库
- 在客户端上编译和渲染复杂的Dust.js模板
- 分析JS代码以在客户端获取cookie
- AJAX 将数据从客户端(JS)发送到服务器(PHP)
- 在JS或jQuery或任何客户端脚本的帮助下,通过查看源代码读取源代码
- 是否可以使用googleanalystics.js在客户端获取推荐数据
- 如何检查当前用户电子邮件是否已在客户端js文件中验证
- 当对象从服务器发送到客户端时,JS原型方法消失了
- 如何将 Node.js 环境变量注入客户端 JavaScript
- 对 Drupal 站点的客户端 JS 问题进行故障排除
- 如何在node.js中将数组从服务器端传输到客户端
- 节点 js 中的客户端代码
- 在组件.js内加载客户 sapui5 库
- 使用浏览器对 js 文件进行版本控制,以防止客户端使用旧的 js 文件
- 当客户端是服务器时,使用 client-JS 读取文件结构
- Imgur 通过客户端 javascript 上传工作,但不是 node.js.慌乱了
- Xpages:如何实现客户端JS代码的本地化
- 如何连接Node.js和Android作为客户端
- 延迟加载 jquest 和客户.js文件(使用谷歌片段)