编辑:澄清一下,收费确实会处理,我唯一不能做的就是动态设置收费金额。
我已经工作了一整天了,还没有找到任何解决方案。这是我的 server.js:
app.post('/charge', function(req, res) {
var stripeToken = req.body.stripeToken;
var amount = 12000;
console.log(req);
stripe.charges.create({
card: stripeToken,
currency: 'usd',
amount: amount
},
function(err, charge) {
if (err) {
res.send(500, err);
} else {
res.send(204);
}
});
});
这是我的动态 Stripe 按钮。
$('#calcTransAmount').click(function(event) {
var amount = $('#transAmount').scope().totall;
//console.log(amount);
var holder = document.getElementById('hello');
var script = document.createElement('script');
script.src = 'https://checkout.stripe.com/checkout.js';
script.setAttribute('class', 'stripe-button');
script.setAttribute('data-amount', amount);
script.setAttribute('data-key',"KEY");
script.setAttribute('data-image', "IMG");
script.setAttribute('data-name', "NAME");
script.setAttribute('data-billing-address', "true");
script.setAttribute('data-description', "Purchase");
script.setAttribute('data-locale', "auto");
document.getElementById('btnCont').appendChild(script);
});
该按钮适用于动态金额和所有内容,现在我似乎无法弄清楚发送到 /charge
的帖子如何接收金额并将其设置为变量。
这是我的 req
对象:
{ stripeToken: 'tok_19t9jcLhf04QCVXXXXXXXX',
stripeTokenType: 'card',
stripeEmail: 'me@gmail.com',
stripeBillingName: 'Clark',
stripeBillingAddressCountry: 'United States',
stripeBillingAddressCountryCode: 'US',
stripeBillingAddressZip: 'Zip',
stripeBillingAddressLine1: 'My address',
stripeBillingAddressCity: 'City',
stripeBillingAddressState: 'State' }
而且我找不到一种方法将我的数据量属性从按钮获取到服务器以收取动态金额。
谢谢
最佳答案
特别感谢@koopajah为解决方案提供的灵感。
在客户端的表单中,除了 JavaScript 按钮之外,我还使用隐藏的输入框传递了一个键值,这将允许我的服务器端从我们的数据库中获取购物车总计。
<form action="/charge" method="POST">
<input name="coKey" value ="{{currentUser.coKey}}">
</form>
然后在服务器端,我可以像这样提取适当的 key :var coKey = req.body.coKey;
关于javascript - Stripe 和 NodeJS - 传递金额进行收费,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42572086/