我正在将我的Rails 4应用与Recurly集成。我使用Recurly.js v3获取账单令牌,然后通过Ruby Gem获取API的v2。
在我将.env文件中的API凭据(RECURLY_SUBDOMAIN
,RECURLY_JS_PRIVATE_KEY
,RECURLY_API_KEY
)更改为用于生产的不同重复帐户之前,所有内容都在本地和heroku上运行。现在我收到来自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的一个令牌调用 - 这是在提交views\devise\registrations\new.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();
}
});
我在我的设计用户上创建了一个调用Recurly API的before_create挂钩:
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
这就是发生错误的地方。有没有办法找到有关令牌有效性的更多信息?或者其他任何有关故障排除的建议?
感谢您的帮助
答案 0 :(得分:2)
您似乎正在使用错误的密钥配置Recurly.js。
recurly.configure('<%=Recurly.js.private_key%>') ;
应该是
recurly.configure('PUBLIC_KEY');
PUBLIC_KEY是您在API访问权限页面上找到的公钥:https://app.recurly.com/go/developer/api_access