PAYJPのAPIが読み込めず、クレジットカードの登録ができない
PAYJPを使ってクレジット決済の導入をしたところ、
クレジットカードの登録をしようとすると下記のようなエラーがでました
PAYJPの導入はQiita記事参照してください
RailsでPayjpを使った購入機能を実装する
PAYJPと連携するためのキーが読み込めていない
Rails5.2以降からはAPIのキーなど環境変数に設定するためのものは
credentilas.yml.enc
に記載するようになりました
詳しくはこちら
Rails5.2から追加された credentials.yml.enc のキホン
こちらを参照にcredentials.yml.enc
に記載したはず・・・
もしかしてちゃんと読み込めていなそう?
rails c
で調べてみる
rails c
[1] pry(main)> Rails.application.credentials.PAYJP_PRIVATE_KEY
=> "sk_test_XXXXXXXXXXXXXXXXXXXX"
どうやらちゃんと読み込めるのでちゃんと環境変数は設定できていそう
credentials.yml.enc
を読み込む書き方が必要
どうやら他の参考記事の通りに
def pay
Payjp.api_key = ENV["PAYJP_PRIVATE_KEY"]
中略
と書いてしまっていたのが原因。
ENV["PAYJP_PRIVATE_KEY"]
で読み込んでいたのはcredentials.yml.enc
を使っていないRails.5.2以前の書き方で、credentials.yml.enc
を読み込むためには
def pay
Rails.application.credentials.dig(:payjp, :PAYJP_PRIVATE_KEY)
中略
と書かないとcredentials.yml.enc
に記載した環境変数の読み込みができないということです。
記事によってRailsのバージョンが違うので安易にそのまま記載するのはいけないですね。。。。