開発言語:rails
payjpを使って、クレジットカード登録や支払処理の機能の実装を行いました。
参考記事:https://qiita.com/takachan_coding/items/f7e70794b9ca03b559dd
コードの記述の部分で意味がわからない箇所があります。
[payjpjsの全体]
payjpjs
1$(function(){ 2 3 var submit = document.getElementById("token_submit"); 4 console.log(submit) 5 6 if ( submit != null) { 7 submit.addEventListener('click', function(e){ // 追加するボタンが押されたらイベント発火 8 e.preventDefault(); // ボタンを一旦無効化 9 Payjp.setPublicKey("pk_test_***********************"); //パブリックキーを直書き 10 var card = { // 入力されたカード情報を取得 11 number: document.getElementById("card_number").value, 12 exp_month: document.getElementById("exp_month").value, 13 exp_year: document.getElementById("exp_year").value, 14 cvc: document.getElementById("cvc").value 15 }; 16 if (card.number == "", card.exp_month == "1", card.exp_year == "2019", card.cvc == "") { 17 alert("カード情報が入力されていません。"); // 送られた値がデフォルト値だった場合 18 } else { // デフォルト値以外の値が送られてきた場合 19 Payjp.createToken(card, function(status, response) { // トークンを生成 20 if (status === 200) { 21 $("#card_number").removeAttr("name"); 22 $("#exp_month").removeAttr("name"); 23 $("#exp_year").removeAttr("name"); 24 $("#cvc").removeAttr("name"); 25 $("#card_token").append( 26 $('<input type="hidden" name="payjp-token">').val(response.id) 27 ); 28 document.inputForm.submit(); // 生成したトークンを送信する準備を整える 29 alert("登録が完了しました"); 30 } else { 31 alert("正しいカード情報を入力してください。"); 32 } 33 }); 34 } 35 false 36 }); 37 } 38});
Payjp.createToken(card, function(status, response) { // トークンを生成 if (status === 200) { $("#card_number").removeAttr("name"); $("#exp_month").removeAttr("name"); $("#exp_year").removeAttr("name"); $("#cvc").removeAttr("name"); $("#card_token").append( $('<input type="hidden" name="payjp-token">').val(response.id)
responseがここでどういう働きをしているのかがわかりません。
response.idというのも出てきます。
またif (status === 200) {の部分はレスポンスステータスコードが200(成功)ならという意味だと思っているんですが、合ってますでしょか。
[makeの全体]
controller
1 def make #payjpとCardのデータベース作成を実施します。 2 Payjp.api_key = ENV["PAYJP_SECRET_KEY"] 3 if params['payjp-token'].blank? 4 redirect_to action: "new" 5 else 6 customer = Payjp::Customer.create( 7 description: '登録テスト', #なくてもOK 8 card: params['payjp-token'], 9 metadata: {user_id: current_user.id} 10 ) #念の為metadataにuser_idを入れましたがなくてもOK 11 @card = Card.new(user_id: current_user.id, customer_id: customer.id, card_id: customer.default_card) 12 @card.save #保存 13 end 14 end
customer = Payjp::Customer.create(
payjpのcustomerオブジェクトが使用されているのはわかりますが、なぜこのような書き方になっているのかがわかりません。
payjpのオブジェクトについて
[showの全体]
controller
1def show #Cardのデータをpayjpに送り情報を取り出します 2 @card = Card.where(user_id: current_user.id).first #テーブルからpayjpの顧客ID(アクセスキー)を検索 3 if @card.blank? 4 redirect_to action: "new" 5 else 6 Payjp.api_key = ENV["PAYJP_SECRET_KEY"] 7 customer = Payjp::Customer.retrieve(@card.customer_id) #保管した顧客ID(アクセスキー)でpayjpから情報取得 8 @default_card_information = customer.cards.retrieve(@card.card_id) #保管したカードIDでpayjpからカード情報取得、カード情報表示のためインスタンス変数に代入 9 end 10 end
customer = Payjp::Customer.retrieve(@card.customer_id)
.retrieveというメソッド?は初めて見て調べてみましたが、それらしき記事が見つかりませんでした。
和訳すると「取り戻す」「検索する」という意味なので、DBにある@cardのcustomer_idを検索するという意味でしょうか?
どなたかご教授頂けますと幸いです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/02/17 07:26