現在、オリジナルアプリをAWSとherokuにデプロイしている状態です。
何か足りない記述があれば追記いたしますので、ご指示ください。
AWSとherokuの本番環境でトークン決済ができない
ローカルでは問題なく動作しております。
ひとつ前に作成したアプリケーションに、同じようにトークン決済機能をつけておりましたが
そのアプリはherokuでは問題なく決済処理ができていました。
今回のアプリではheroku、AWS共に同じようなエラーが出ています。
前回herokuで処理できていたので、記述は問題ないと自分では思っているのですが
もしその辺りも何か不自然に感じられるコードがありましたら教えていただきたいです…。
payjpの秘密鍵と公開鍵は前回のアプリの時と同じものを同じように環境変数に設定しております。
エラー
herokuでのエラー
AWSでのエラー
本来の(ローカルでの)パラメーター
rails側のコード
ruby
1# 取引のコントローラー 2class TransactionsController < ApplicationController 3 4 before_action :set_item, only:[:index, :create, :pay_item, :edit, :update] 5 6 7 def index 8 if buyer_signed_in? 9 @transaction = DealTransaction.new 10 else 11 redirect_to new_buyer_registration_path 12 end 13 end 14 15 def create 16 @transaction = DealTransaction.new(transaction_params) 17 if @transaction.valid? 18 pay_item 19 @transaction.save 20 @buyer = current_buyer 21 redirect_to buyer_path(@buyer) 22 23 else 24 render :index 25 end 26 end 27 28 29 private 30 31 def set_item 32 @item = Item.find(params[:item_id]) 33 end 34 35 def transaction_params 36 params.require(:deal_transaction).permit(:postal_code, :shipping_area_id, :city, :house_number, :building_name, :phone_number).merge(item_id: @item.id,seller_id: @item.seller_id, buyer_id: current_buyer.id, token: params[:token]) 37 end 38 39 def pay_item 40 Payjp.api_key = ENV["PAYJP_SECRET_KEY"] 41 Payjp::Charge.create( 42 amount: @item.price, 43 card: params[:token], 44 currency: 'jpy' 45 ) 46 end 47 48 49end
DealTransactionはformオブジェクトを使っております
ruby
1class DealTransaction 2 3 include ActiveModel::Model 4 attr_accessor :buyer_id, :seller_id, :item_id, :postal_code, :shipping_area_id, :city, :house_number, :building_name, :phone_number, :token 5 6 VALID_POSTAL_REGIX = /\A\d{3}[-]\d{4}\z/ 7 VALID_PHONE_REGIX = /\A\d{,11}\z/ 8 9 10 with_options presence: true do 11 validates :postal_code, format: { with: VALID_POSTAL_REGIX, message: "Input correctly"} 12 validates :shipping_area_id 13 validates :city 14 validates :house_number 15 validates :token 16 validates :phone_number, format: { with: VALID_PHONE_REGIX, message: "can't be blank"} 17 end 18 19 def save 20 deal = Deal.create(buyer_id: buyer_id,seller_id: seller_id, item_id: item_id) 21 22 Transaction.create(deal_id: deal.id, postal_code: postal_code, shipping_area_id: shipping_area_id, city: city, house_number: house_number, 23 building_name: building_name, phone_number: phone_number) 24 end 25 26 27end
javascriptの記述がこちらです
javascript
1 2const pay = () => { 3 Payjp.setPublicKey(process.env.PAYJP_PUBLIC_KEY); 4 const form = document.getElementById("charge-form"); 5 form.addEventListener("submit", (e) => { 6 e.preventDefault(); 7 8 const formResult = document.getElementById("charge-form"); 9 const formData = new FormData(formResult); 10 const card = { 11 number: formData.get("deal_transaction[number]"), 12 exp_month: formData.get("deal_transaction[exp_month]"), 13 exp_year: `20${formData.get("deal_transaction[exp_year]")}`, 14 cvc: formData.get("deal_transaction[cvc]"), 15 }; 16 17 Payjp.createToken(card, (status, response) => { 18 if (status === 200) { 19 const token = response.id; 20 const renderDom = document.getElementById("charge-form"); 21 const tokenObj = `<input value=${token} type="hidden" name='token'>`; 22 renderDom.insertAdjacentHTML("beforeend", tokenObj); 23 24 document.getElementById("card-number").removeAttribute("name"); 25 document.getElementById("card-exp-month").removeAttribute("name"); 26 document.getElementById("card-exp-year").removeAttribute("name"); 27 document.getElementById("card-cvc").removeAttribute("name"); 28 29 document.getElementById("charge-form").submit(); 30 document.getElementById("charge-form").reset(); 31 } else { 32 const token = ''; 33 const renderDom = document.getElementById("charge-form"); 34 const tokenObj = `<input value=${token} type="hidden" name='token'>`; 35 renderDom.insertAdjacentHTML("beforeend", tokenObj); 36 document.getElementById("charge-form").submit(); 37 document.getElementById("charge-form").reset(); 38 } 39 }); 40 }); 41}; 42 43window.addEventListener("load", pay);
これは反映させられている環境変数が反映していないために起こっているのでしょうか?
長々と恐れ入りますが、どなたか問題箇所・直すべき記述等お分かりになる方がいらっしゃいましたら
ご教示いただけましたら幸いです。
何卒よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー