【发布时间】:2018-06-27 02:02:46
【问题描述】:
我已经到处寻找答案,但没有找到解决方案。我正在使用 Stripe 向用户收费,但是,付款不应该是硬编码的,因为定价会根据回答的各种问题而变化。我想要做的是获取确认页面(HTML)上给出的“总价”并将该金额收取给 Stripe(使用 Node)。
我目前正在进行令牌化,并且当金额被硬编码时收费成功,但我需要更改收费金额。有谁知道 Stripe (www.stripe.com) 是否可以做到这一点?
我的 app.js 文件(部分):
// charge route
app.post('/charge', (req, res) => {
const amount = 2500; <-- needs to change to not be hardcoded
stripe.customers.create({
email: "random-email@gmail.com",
source: req.body.mytoken
})
.then(customer => {
stripe.charges.create({
amount,
description:'item desc',
currency:'usd',
customer:customer.id
})})
.then(charge => res.send('success'));
});
const port = process.env.PORT || 5000;
app.listen(port, () => {
console.log(`Server started on port ${port}`);
});
更新
我还想从输入表单中更新用户的电子邮件信息,而不是像目前在此行中那样对其进行硬编码:email: "random-email@gmail.com"
第二次更新
条纹形式:
<div class="" style="margin-top: 60px;">
<h2 class="quote-info">Estimated total: $<span id="new_text"></span> USD</h2>
</div>
<!-- Payment form -->
<form action="/charge" method="post" id="payment-form">
<div class="form-row">
<label for="card-element">
Credit or debit card
</label>
<div id="card-element">
<!-- a Stripe Element will be inserted here. -->
</div>
<!-- Used to display form errors -->
<div id="card-errors"></div>
</div>
<button>Submit Payment</button>
</form>
在 HTML 页面底部的脚本标签中找到的函数:
function stripeTokenHandler(token) {
var form = document.getElementById('payment-form');
var hiddenInput = document.createElement('input');
hiddenInput.setAttribute('type', 'hidden');
hiddenInput.setAttribute('name', 'stripeToken');
hiddenInput.setAttribute('value', token.id);
form.appendChild(hiddenInput);
var formData = JSON.stringify({
mytoken: token.id
});
$.ajax({
type: "POST",
url: "/charge",
data: formData,
success: function(){alert("done")},
dataType: "json",
contentType: "application/json"
});
form.submit();
}
【问题讨论】:
-
你能在这里提供更多的上下文吗?在不知道您实际在做什么或尝试做什么的情况下,很难确切地知道如何提供答案。如果可以,请分享您的一些相关代码。
-
@jonnyAsmar 我已经用一些相关代码更新了我的问题。
标签: javascript html node.js stripe-payments