はじめに
クレジット決済機能を用いた実装をした際に、ローカル環境での動作は問題なかったものの、本番環境(heroku)でエラーが出てしまったので、その時に行った解決までの手順を記事にしたいと思います。
エラーログの確認
まずは原因を探るためエラーログを確認しました。
ターミナル
% heroku logs --tail --app アプリ名
実行し、エラーログを読んでいくと気になる表示が…
ターミナル
〜省略〜
2021-04-29T05:23:03.659101+00:00 app[web.1]: [a5daeeac-209a-40b8-93b4-661fcec9677c] Payjp::AuthenticationError (Your API key is invalid, as it contains whitespace. (HINT: You can double-check your API key from the Payjp web interface. See https://pay.jp/api for details, or email support@pay.jp if you have any questions.)):
〜省略〜
ここからPAY.JPの環境変数の設定がうまくいっていないと仮説を立てました。
環境変数を確認
ターミナル
% heroku config
実行すると
ターミナル
=== アプリ名 Config Vars
〜省略〜
PAYJP_PUBLIC_KEY:
pk_test_*************
PAYJP_SECRET_KEY:
sk_test_*************
〜省略〜
PAYJP_PUBLIC_KEY:、PAYJP_SECRET_KEY:の後に改行が入ってしまっています。
これが原因みたいです。
対処法
環境変数を設定し直します。
コピペの際に余計な改行が入らないように注意しながら以下のコマンドを実行します。
ターミナル
% heroku config:set PAYJP_SECRET_KEY='sk_test_*************'
% heroku config:set PAYJP_PUBLIC_KEY='pk_test_*************'
正しく設定できているか確認します。
ターミナル
% heroku config
ここで改行が消えていることが確認できたら空のコミットを生成します。
ターミナル
% git commit --allow-empty -m "空のコミット"
最後にherokuへプッシュします。
ターミナル
% git push heroku master
もう一度動作を確認し、エラーが出なくなったことを確認しました。