递归-令牌无效或过期-如何查找有关错误消息的更多信息



我正在集成我的Rails 4应用程序与Recurly。我使用Recurly.js v3来获得一个计费令牌,然后通过Ruby Gem获得API的v2。

一切都在本地和heroku上工作,直到我将。env文件中的API凭据(RECURLY_SUBDOMAIN, RECURLY_JS_PRIVATE_KEY, RECURLY_API_KEY)更改为不同的生产循环帐户。现在我得到一个错误响应从Recurly:

>>ERROR -- Recurly: <=== 404 Not Found (948.3ms)
>><error>
>>  <symbol>token_invalid</symbol>
>>  <description>Token is either invalid or expired</description>
>></error>

令牌未过期,因为对令牌信息的请求直接发生在API订阅请求之前。我找不到令牌为什么无效的信息。它已经通过了卡片上的Recurly.js验证,因为它首先返回了令牌,所以我认为这不是卡片的问题。

这是我对recurly.js的令牌调用-这是在提交viewsdeviseregistrationsnew.html.erb形式时执行的:

$(document).on("page:change", function(){
  if($('.registrations.new, .registrations.edit').length){
    if(!recurly.configured)
      recurly.configure('<%=Recurly.js.private_key%>') ;
    var form = $('#card-form');
    var subscription = {
      setupForm: function() {
        return form.submit(function() {
          event.preventDefault();
          if ($('#card_number').length) {
            recurly.token(form, subscription.tokenHandler);
            return false;
          } else {
           return true;
          }
        });
      },
      tokenHandler: function(err, token) {
       //console.log(token); at this point returns a different token each time
       if(err){
         //error message rendered
       } else {
         //card token applied to field in devise registrations form and form submitted
         $('#user_card_token').val(token.id)
         $('#card-form')[0].submit()
       }
     }   
   };
   subscription.setupForm();
  }
});

我已经在我的设计用户上创建了一个before_create钩子,它调用了Recurly API:

In models/user.rb
before_create :create_subscription
def create_subscription
  #logger.info card_token at this point returns the token received in the js above
  subscription = Recurly::Subscription.create!(
    plan_code: plan,
    account:  {
      account_code: recurly_account_code,
      email:        email,
      first_name:   first_name,
      last_name:    last_name,
      billing_info: {token_id: card_token}
    }
  )
rescue 
  errors.add :base, "Card Error"
  false
end

这就是错误发生的地方。是否有一种方法可以找到关于令牌有效性的更多信息?或者对故障排除有其他建议吗?

感谢您的帮助

看起来你使用了错误的键来配置Recurly.js

recurly.configure('<%=Recurly.js.private_key%>') ;
应该

recurly.configure('PUBLIC_KEY');

其中PUBLIC_KEY是在API访问页面上找到的公钥:https://app.recurly.com/go/developer/api_access

裁判:https://docs.recurly.com/js/开始

相关内容

  • 没有找到相关文章

最新更新