Koa 和 Stripe,等待渲染页面
Koa and Stripe, wait to render page
我正在使用 koa 和 stripe 处理一次性付款。它正常工作,但是它在分配 data
之前呈现页面。我希望能够在分配数据后呈现页面,以便 id
将显示在页面视图中而不是未定义。
我尝试在回调函数中渲染页面,我得到了 404 not found
。我尝试在 stripe.charges.create
函数之后使用 .then
,因为 stripe 与 promises 兼容,但它给出了相同的结果。我的当前代码如下。
module.exports.payment = function* payment()
{
const params = this.request.body;
let data;
if (!params.stripeToken) {
this.throw(400, "Sorry, something has gone awry.");
}
if (!params.amount) {
this.throw(400, "A purchase amount must be supplied.");
}
const chargeAmount = params.amount * 100;
const charge = stripe.charges.create({
amount: chargeAmount,
currency: "USD",
source: params.stripeToken,
description: `${config.site.name} order#: ${this.session.id}`
}, (err, charge) => {
data = charge.id;
}
);
yield this.render("payment/payment_success", {
id: data
});
};
如果 stripe 库支持 promises,你最好的选择可能是 yield stripe.charges.create
。
module.exports.payment = function* payment()
{
const params = this.request.body;
if (!params.stripeToken) {
this.throw(400, "Sorry, something has gone awry.");
}
if (!params.amount) {
this.throw(400, "A purchase amount must be supplied.");
}
const chargeAmount = params.amount * 100;
const charge = yield stripe.charges.create({
amount: chargeAmount,
currency: "USD",
source: params.stripeToken,
description: `${config.site.name} order#: ${this.session.id}`
};
yield this.render("payment/payment_success", {
id: charge.id
});
};
现在,当您呈现视图时,charge 将填充条纹调用的结果。
我正在使用 koa 和 stripe 处理一次性付款。它正常工作,但是它在分配 data
之前呈现页面。我希望能够在分配数据后呈现页面,以便 id
将显示在页面视图中而不是未定义。
我尝试在回调函数中渲染页面,我得到了 404 not found
。我尝试在 stripe.charges.create
函数之后使用 .then
,因为 stripe 与 promises 兼容,但它给出了相同的结果。我的当前代码如下。
module.exports.payment = function* payment()
{
const params = this.request.body;
let data;
if (!params.stripeToken) {
this.throw(400, "Sorry, something has gone awry.");
}
if (!params.amount) {
this.throw(400, "A purchase amount must be supplied.");
}
const chargeAmount = params.amount * 100;
const charge = stripe.charges.create({
amount: chargeAmount,
currency: "USD",
source: params.stripeToken,
description: `${config.site.name} order#: ${this.session.id}`
}, (err, charge) => {
data = charge.id;
}
);
yield this.render("payment/payment_success", {
id: data
});
};
如果 stripe 库支持 promises,你最好的选择可能是 yield stripe.charges.create
。
module.exports.payment = function* payment()
{
const params = this.request.body;
if (!params.stripeToken) {
this.throw(400, "Sorry, something has gone awry.");
}
if (!params.amount) {
this.throw(400, "A purchase amount must be supplied.");
}
const chargeAmount = params.amount * 100;
const charge = yield stripe.charges.create({
amount: chargeAmount,
currency: "USD",
source: params.stripeToken,
description: `${config.site.name} order#: ${this.session.id}`
};
yield this.render("payment/payment_success", {
id: charge.id
});
};
现在,当您呈现视图时,charge 将填充条纹调用的结果。