#1.原因
今回の筆者の問題はturbolinksが効いていたからでした。
#2.なぜ起こった?
理由は、turbolinksの機能が影響範囲ページの遷移を非同期で行う(影響範囲の全てのviewページが合わさって1ページとして扱う)ためでした。
他画面を経由し複数で情報を持った状態でクレジットカードの登録をしようとすると、悪意のある情報を持っている危険性があり安全性を保てないと見なされてしまいpayjpからの返答を受けることができなくなっていました。
#3.解決方法
クレジットカード登録画面のみturbolinks(非同期通信)を切ってページ遷移するように記述することで筆者は解決しました。
具体的にはapp/views/layouts/apprication.html.haml(全体のbodyの記述部分)
とapp/views/cards/index(ページ遷移元)
を下記のように修正しました
〜前略(header部分の記述は省略します)〜
%body
- if content_for?(:body_attributes)
= yield(:body_attributes)
= render 'layouts/notification'
= yield
〜前略〜
= link_to "/cards/new", class: 'method-of-payment__body__button__icon',"data-turbolinks": false do
#app/views/cards/newに遷移する記述の部分に "data-turbolinks": false をつけました
〜後略〜
#4.参考記事
https://gist.github.com/saboyutaka/8727377
https://qiita.com/Cheekyfunkymonkey/items/216bf7426493e6213927
https://qiita.com/keitah/items/05f02efe4e11ab2473e8