前回は決済をして、ダッシューボードに決済内容が反映されることまで書いたので
今回は決済した情報をDBに保存するところまでやりたいなと思います。
前回のだと
$ rails new
で作ったんですけど
これだとmysql使えないので
(あるかもしれないのですが、1ヶ月目なんでよく知りません。)
$ rails new testapp -d mysql
でファイルを作ります。
今回は既に前回の1までの内容は完成している前提で話を進めるので
まだ決済できてない、テスト決済してもダッシュボードに決済したデータが出ない
という方は
こいつを見て元気出してください。
と思ったのですが
-d mysqlをつけると色々やることが増えるので
当時の僕が見てもわかるようにやっぱり最初からやります。
でも、詳しくは書かないので詳しい話は上のURLを見てもらえれば
(でもこれから書くやつを全部そのまま実行すればうまくいくよ。多分。)
$ rails new testapp -d mysql
$ cd testapp
とりあえずこれでファイルを作ります。
gem 'webpay'
webpayのgemを入れて
$ bundle install
$ rake db:create
rake db:createでデータベースができるんじゃないかなと。
基本的なルーティング、コントローラーは前回の1と同じものを使います。
get 'products' => 'products#index'
post 'products/pay' => 'products#pay'
$ bundle exec rails g controller products
できたproductsコントローラーに
def index
end
def pay
webpay = WebPay.new('鍵')
webpay.charge.create(
amount: 400,
currency: "jpy",
card: params['webpay-token']
)
end
<%= form_tag(action: :pay, method: :post) do %>
<script src="https://checkout.webpay.jp/v3/" class="webpay-button" data-key="鍵" data-lang="ja"></script>
<% end %>
支払い完了
ここまでで前回の1と同じところまで来れているはず。
一応ここまでで決済はできるようになっているはずなのでrails sで確かめてみてください。
そんでもって決済履歴のテーブルみたいなのを作ってそこに課金情報を持たせようという死ぬほどめんどくせーことをしようというのだから
もうやめたい。けどやる。
とりあえず箱でも作る。履歴のやつはhistoryとでも名付けて
rails:ターミナル
$ bundle exec rails g model history
マイグレーションファイルのカラムは適宜作ってください。
今回は課金した情報をダッシュボードで確認できるようにカスタマーidを取得したいと思います。
のでそれに合わせてカラムを作ります。
t.string :customer_id
t.timestamps #null: falseがついていたら消しとく
$ bundle exec rake db:migrate
テーブルが出来てるかチェック
カラムもできたのであとは取得するためのアレを書いていきます
前に書いたproductsコントローラーのpayメソッドに追記と変更をします。
def pay
webpay = WebPay.new('鍵')
@customer = webpay.customer.create(card: params['webpay-token']) #追記
webpay.charge.create(
amount: 400,
currency: "jpy",
customer: @customer.id, #変更
)
History.create(customer_id: @customer.id) #追記
end
これでテスト決済すれば決済が完了して、かつ、historiesテーブルにカスタマーidが記録されてれば成功!!!!!
てか、一応試しているのでうまくいくはず。だよ。
これで一応このシリーズは終わり
でも、もしかしたら定期課金とかも試すかもしれないし
paypal導入とかも試すかもしれないです
(限りなく可能性は低い)
決済機能つけられるとサービスで収益を上げる選択肢が一つ増えるじゃないですか。
みんなでいいwebサービスを作って楽しんでいきましょう!