Arale

アパレル、バリスタを経て未経験からのプログラマーになった男の勉強ログ

購入機能が本番環境で正しく動作しない時は?

カード情報を入力しても"Token can't be blank"と表示されてしまう

本番環境で公開鍵、秘密鍵ともに設定されていないことが濃厚でしょう。

ということで、早速ターミナルを見てみましょう。

まずはローカルで設定されているかどうかを改めて確認してみましょう。

# ターミナル上のコマンド MacOSがCatalina以降の場合
vim ~/.zshrc

export PAYJP_SECRET_KEY='sk_test_************************'
export PAYJP_PUBLIC_KEY='pk_test_************************'

環境変数は問題なく、設定されてます。

そうなると原因は本番環境に渡されていないことなので、渡します。

# 秘密鍵を設定
heroku config:set PAYJP_SECRET_KEY='sk_test_************************'

# 公開鍵を設定
heroku config:set PAYJP_PUBLIC_KEY='pk_test_************************'

これで設定が終わりました。念の為、確認します。

# 環境変数を一覧で表示する
heroku config

# 表示結果
BASIC_AUTH_PASSWORD:      ************************
BASIC_AUTH_USER:          ************************
CLEARDB_DATABASE_URL:     ************************
DATABASE_URL:             ************************
LANG:                     ************************
PAYJP_PUBLIC_KEY:         pk_test_************************
PAYJP_SECRET_KEY:         sk_test_************************
RACK_ENV:                 ************************
RAILS_ENV:                ************************
RAILS_LOG_TO_STDOUT:      ************************
RAILS_MASTER_KEY:         ************************
RAILS_SERVE_STATIC_FILES: ************************
SECRET_KEY_BASE:          ************************

本番環境上でもちゃんと渡せてます。

ブラウザをリロードして、本番環境で動作確認!

"Token can't be blank"

git push heroku masterも入力したのに何で?!と思い、引き続き検索

答えは空のコミットでも良いのでGithubに上げないと反映されないとのこと。

だから、ターミナルで"Everything is up to date"と出てたのかーと納得です。

参考にしたURL