我搜索了一下,无法找到答案。
从CoderManual.com运行我的应用时,我遇到以下错误:
我的.js
文件显示"stripe is not defined; please fix or add /*global Stripe*/"
当我通过C9运行应用程序时,我得到了
"Stripe::InvalidRequestError in Users::RegistrationsController#create"
不知道该怎么做。任何帮助表示赞赏。
.js文件读取:
$(document).ready(function() {
Stripe.setPublishableKey($('meta[name="stripe-key"]').attr('content'));
// Watch for a form submission:
$("#form-submit-btn").click(function(event) {
event.preventDefault();
$('input[type=submit]').prop('disabled', true);
var error = false;
var ccNum = $('#card_number').val(),
cvcNum = $('#card_code').val(),
expMonth = $('#card_month').val(),
expYear = $('#card_year').val();
if (!error) {
// Get the Stripe token:
Stripe.createToken({
number: ccNum,
cvc: cvcNum,
exp_month: expMonth,
exp_year: expYear
}, stripeResponseHandler);
}
return false;
});
registrations_controller.rb读取:
class Users::RegistrationsController < Devise::RegistrationsController
def create
super do |resource|
if params[:plan]
resource.plan_id = params[:plan]
if resource.plan_id == 2
resource.save_with_payment
else
resource.save
end
end
end
end
end
我安装Stripe as show @ GitHub无济于事。
我的html中引用了js.stripe.com:
<!DOCTYPE html>
<html>
<head>
<title>Dev Match</title>
<%= stylesheet_link_tag 'application', media: 'all' %>
<%= javascript_include_tag "https://js.stripe.com/v2/", type: 'text/javascript' %>
<%= javascript_include_tag 'application' %>
<%= tag :meta, :name => "stripe-key", :content => STRIPE_PUBLIC_KEY %>
<%= csrf_meta_tags %>
</head>
答案 0 :(得分:1)
我遇到了同样的问题,也参与了编码手册。我将debugger;
添加到第14行(在if
语句中但在Stripe.createToken
之前的users.js文件中,以便在API调用条带之前停止脚本运行(如果是?) 。
添加调试器会停止脚本。所以它确实似乎运行。让脚本恢复导致你提到的同样错误。
将debugger;
移到API调用之后,但仍然在if
语句中也可让脚本在没有错误的情况下运行直到停止。
由于debugger;
return false;
移到另一行(debugger;
之后)会导致错误
Chrome控制台在日志中显示此错误:
POST https://api.stripe.com/v1/tokens 400 (Bad Request)
扩展为:Stripe.isDoubleLoaded.c
Stripe.isDoubleLoaded.e``Stripe.isDoubleLoaded.a
Stripe.isDoubleLoaded.Stripe.xhr``Stripe.a._rawRequest``Stripe.a.request``Stripe.token.a.create``Stripe.card.b.createToken``Stripe.a._channelListener``t.concat.incoming
问题似乎是在实际的API调用中。但至少它正在打电话;)
答案 1 :(得分:1)
最后成功了解了这一点。
错误是因为条带API不返回令牌。在脚本中省略任何类型的错误处理使得很难看到,更不用说找出原因了。我将条带API的响应添加到表单中的文本字段,并注释掉了submit(两者都在users.js中)然后愚蠢的错误显示出来。该卡不能被视为有效。 codermanual使用4111111 ..作为试用号,条纹不再接受。
尝试42424242424242,生活会很甜蜜。