Rails 4 アプリを Recurly と統合しています。Recurly.js v3 を使用して課金トークンを取得し、次に Ruby Gem を介して API の v2 を取得しています。
RECURLY_SUBDOMAIN
.env ファイルの API 認証情報 ( 、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
そこでエラーが発生します。トークンの有効性に関する情報をさらに見つける方法はありますか? または、トラブルシューティングのための他の提案はありますか?
助けてくれてありがとう