Javascript Stripe.create函数的顺序不正确
我想将Stripe集成到我的应用程序中。我已在请求正文中收集了所有必要的数据。 现在,在创建客户Id并尝试将其传递给addCustomerToCard后,将抛出一个未定义的错误。之后,createToken将被成功记录 所以有两个问题: 1.为什么函数的顺序没有像我预期的那样被调用? 2.为什么客户没有通过addCustomerToCardJavascript Stripe.create函数的顺序不正确,javascript,node.js,stripe-payments,Javascript,Node.js,Stripe Payments,我想将Stripe集成到我的应用程序中。我已在请求正文中收集了所有必要的数据。 现在,在创建客户Id并尝试将其传递给addCustomerToCard后,将抛出一个未定义的错误。之后,createToken将被成功记录 所以有两个问题: 1.为什么函数的顺序没有像我预期的那样被调用? 2.为什么客户没有通过addCustomerToCard router.post("/checkout", async function (req, res, next) { if (!req.session.
router.post("/checkout", async function (req, res, next) {
if (!req.session.cart) {
return res.redirect("/shopping-cart");
}
let createCustomer = function () {
var param ={};
param.email = req.body.email;
param.name= req.body.name;
param.description ="";
return stripe.customers.create(param, function (err, customer) {
if (err) {
console.log("err:" + err);
}
if (customer) {
console.log("success: " + JSON.stringify(customer, null, 2));
} else {
console.log("something went wrong");
}
});
};
let createToken = function () {
let param ={};
param.card = {
number: req.body.card,
exp_month: req.body.exp_month,
exp_year: req.body.exp_year,
cvc: req.body.security
}
return stripe.tokens.create(param, function (err, token) {
if (err) {
console.log("err:" + err);
console.log(param);
}
if (token) {
console.log("success: " + JSON.stringify(token, null, 2));
console.log(req.body);
} else {
console.log("something went wrong");
}
});
};
let addCardToCustomer = function () {
console.log(createdCustomer);
return stripe.customers.createSource(customer.id, {source: token.id}, function (err, card) {
if (err) {
console.log("err:" + err);
console.log(param);
}
if (card) {
console.log("success: " + JSON.stringify(card, null, 2));
} else {
console.log("something went wrong");
}
});
};
let chargeCustomerThroughCustomerID = function () {
let param = {
amount: cart.totalPrice,
currency: 'eur',
description: 'First payment',
customer: customer.id
}
stripe.charges.create(param, function (err, charge) {
if (err) {
console.log("err: " + err);
}
if (charge) {
console.log("success: " + JSON.stringify(charge, null, 2));
} else {
console.log("Something wrong")
}
})
}
try {
const createdCustomer = await createCustomer(); // promise 1
const createdToken = await createToken();
const addedCardToCustomer = await addCardToCustomer(createdCustomer,createdToken ); //
// const chargeCustomerThroughCustomerID = await chargeCustomerThroughCustomerID(); // promise 4
res.send("success");
} catch (e) {
console.log(`error ${e}`)
};
});
//LOG OUTPUT
//success
//error ReferenceError: createdCustomer is not defined
//success
首先,您应该将其分解为更小的部分,以验证您期望的行为。这里发生了很多事情 一个问题是,您试图等待的函数不是
异步的
——您应该将每个函数标记为:
let createCustomer = async function () {...}
这可能是序列不是您期望的原因
您在addCardToCustomer
中遇到错误,因为createCustomer
在该函数中是未定义的。您需要有一个参数:
let addCardToCustomer = async function (createdCustomer) { ... }