我理解的最好的问题是条带检出模式没有被调用,因此请求进入我的充电控制器而没有设置stripeToken,因此抛出一个源是空的错误 .
这是他们的安装教程的链接:https://stripe.com/docs/recipes/variable-amount-checkout
因此,我在阅读时完全复制/粘贴了代码,只是简单地修改了最小数量 . 我遇到了api-key的错误,但是我遇到了这个问题 .
以下是我的错误:您已经为'source'传递了一个空字符串 . 您应该从请求中删除“source”参数或提供非空值 .
Stripe::Charge.create(
:amount => @amount,
:currency => 'usd',
:source => params[:stripeToken],
参数:
{“utf8”=>“✓”,“authenticity_token”=>“长代码...”,“金额”=>“6”,“stripeToken”=>“”}
该模式根本不会出现在此错误之前 . 我怀疑结账模式js只是不被捐赠按钮事件处理程序调用 .
<script src="https://checkout.stripe.com/checkout.js"></script>
<script>
var handler = StripeCheckout.configure({
key: '<%= Rails.configuration.stripe[:publishable_key] %>',
locale: 'auto',
name: 'Ragnar\'s Redoubt',
description: 'One-time donation',
token: function(token) {
$('input#stripeToken').val(token.id);
$('form').submit();
}
});
$('#donateButton').on('click', function(e) {
e.preventDefault();
$('#error_explanation').html('');
var amount = $('input#amount').val();
amount = amount.replace(/\$/g, '').replace(/\,/g, '')
amount = parseFloat(amount);
if (isNaN(amount)) {
$('#error_explanation').html('<p>Please enter a valid amount in USD ($).</p>');
}
else if (amount < 1.00) {
$('#error_explanation').html('<p>Donation amount must be at least $1.</p>');
}
else {
amount = amount * 100; // Needs to be an integer!
handler.open({
amount: Math.round(amount)
})
}
});
// Close Checkout on page navigation
$(window).on('popstate', function() {
handler.close();
});
</script>
我是一个javascript noob,但我没有看到handle.open()如何打开上面的结帐脚本 . var handle也没有调用它,所以我在这里缺少什么?
1 回答
冒回答我自己的菜鸟问题的风险......
我得到freenode上#stripe irc Channels 的精彩帮助 .
即使我在这里输入正确,我还是会错过打字?
所以我是对的,这是一个没有显示问题的模式,正如#stripe上有用的人说的那样,“打开chrome开发人员工具并检查控制台,看看是否有任何javascript错误” .
有,它直接导致我拼写错误 . 所以1 #stripe,1个chrome工具 .