条带未定义;请修复或添加/ *全局条纹* /

时间:2016-02-16 00:56:33

标签: javascript stripe-payments cloud9-ide

我搜索了一下,无法找到答案。

从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>

2 个答案:

答案 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,生活会很甜蜜。