我们的结账时遇到一个小问题,客户有时会出现错误的价格。
例如,如果总数应为150英镑,则显示为15,000英镑
我们很难调试,因为我们自己无法复制问题而且它似乎与浏览器无关。
我们正在以GBP£
取金额以下是我们使用的代码:
<form action="/user/dashboard/releases/card/{$release->releaseFrontID}/" method="POST" class="stripe-container"> <script src="https://checkout.stripe.com/checkout.js" class="stripe-button" data-key="REMOVED" data-amount="{math equation='x * 100' x=$release->releaseGrandTotal}"
答案 0 :(得分:0)
所以我认为你应该做两件事。首先,确保您正确设置货币而不是简单地覆盖标签。因为你的代码示例实际上并不完整,所以我很难说出了什么问题。我的猜测是你的小数学脚本会变得很糟糕。
我建议将数学分开并将其放入单独的部分进行计算,并使用自定义结账集成[1]而不是基本结账集成。
[1] https://stripe.com/docs/checkout#integration-custom
原件:
<form action="/user/dashboard/releases/card/{$release->releaseFrontID}/" method="POST" class="stripe-container"> <script src="https://checkout.stripe.com/checkout.js" class="stripe-button" data-key="REMOVED" data-amount="{math equation='x * 100' x=$release->releaseGrandTotal}"
推荐:
<script src="https://checkout.stripe.com/checkout.js"></script>
<button id="customButton">Purchase</button>
<script>
var amount = 100 * {$release->releaseGrandTotal};
console.log('Amount >> ' + amount);
var handler = StripeCheckout.configure({
key: 'pk_test_xxx',
locale: 'auto',
currency: 'gbp',
amount: amount,
token: function(token) {
$.post(
"/user/dashboard/releases/card/{$release->releaseFrontID}/",
{
stripeToken: token.id,
stripeAmount: amount,
stripeEmail: token.email
}, function (data, status) {
// request succeeded, do something
}
);
}
});
$('#customButton').on('click', function(e) {
// Open Checkout with further options:
handler.open({
name: 'Company Name',
description: 'Charge Description'
});
e.preventDefault();
});
// Close Checkout on page navigation:
$(window).on('popstate', function() {
handler.close();
});
</script>
一旦你完成了这项工作,就应该明白问题出在哪里。这是Smarty模板吗?你是否考虑过将金额作为上下文的一部分,而不是用模板语言做某种数学方程?