55日目終了。
↓今日やったこと
フリマアプリ 商品購入機能実装(Payjp売上反映確認)
出品機能をやった後だと購入機能はイージーに感じますね〜。
と言ってもこのQiitaを参考にしたんですけどw ( ̄▽ ̄) https://qiita.com/takachan_coding/items/d21c0d2621368c9b0d9b
正直何も見ないと何から始めていいか分からない。purchaseコントローラー作るのか〜って感じ。確かにitemsコントローラーだけでやろうとするとメソッドが被っちゃいますからね。モデルは作らずに、コントローラーだけ作るパターンもあるということが勉強になりました。
参考記事を見て、ただコピペするだけじゃなく、コードの理解はもちろんjavascriptのコードをjQueryにリファクタリングしたり、form_tagは古いのでform_withに変えたりしてます!
Pay.jpも自分なりに理解しようと思って、今回使った固有のメソッドをまとめてみました。
Pay.jp 固有メソッド(今回使用分抜粋)
setPublicKey(key)
認証のためのパブリックキーをセットします。引数:key(API公開鍵)
例:
Payjp.setPublicKey("pk_test_0383a1b8f91e8a6e3ea0e2a9");
createToken(card, calback)
PAY.JPのサーバーと通信し、カード情報の認証を行い、トークンを作成します。
引数:card カード情報。number, exp_year, exp_month が必須
引数:callback レスポンス取得時に呼ばれるコールバック関数。第一引数にHTTPステータス(number)、第二引数にtokenオブジェクトが入る。
例:
var card = { number: document.querySelector('input[name="number"]').value, cvc: document.querySelector('input[name="cvc"]').value, exp_month: document.querySelector('select[name="exp_month"]').value, exp_year: document.querySelector('input[name="exp_year"]').value }; Payjp.createToken(card, function(status, response) { if (status === 200) { // handle token object and send back to your server. You can get token id from "response.id". } else { // handle error like displaying error message. }; });
Payjp::Customer.create()
メールアドレスやIDなどを指定して顧客を作成します。引数:card_id など
例:
Payjp::Customer.create( description: 'test' card: params['payjp-token'] )
Payjp::Customer.retrieve()
PayJPに定義されている顧客情報を取得します。引数:customer_id など
例:
Payjp::Customer.retrieve('cus_121673955bd7aa144de5a8f6c262')
Payjp::Charge.create()
カードを保有している顧客IDを指定して支払いを作成します。
引数:amount(金額), currensy(通貨単位), card_id or customer_id など
例:
harge = Payjp::Charge.create( :amount => 3500, :card => 'tok_76e202b409f3da51a0706605ac81', :currency => 'jpy', )
今回使用した分だけです。もっと知りたいという方はPay.jpのリファレンスへ