Rails
webpay

プログラマー1ヶ月目でもわかるwebpayの導入2 ~カスタマーidの取得~ (rails)

More than 1 year has passed since last update.

前回は決済をして、ダッシューボードに決済内容が反映されることまで書いたので

今回は決済した情報をDBに保存するところまでやりたいなと思います。

前回のだと

ターミナル
$ rails new

で作ったんですけど

これだとmysql使えないので
(あるかもしれないのですが、1ヶ月目なんでよく知りません。)

ターミナル
$ rails new testapp -d mysql

でファイルを作ります。

今回は既に前回の1までの内容は完成している前提で話を進めるので
まだ決済できてない、テスト決済してもダッシュボードに決済したデータが出ない
という方は

http://qiita.com/nekononeko_53/items/3ae3856aa0f1a9ddfb5c

こいつを見て元気出してください。

と思ったのですが

-d mysqlをつけると色々やることが増えるので

当時の僕が見てもわかるようにやっぱり最初からやります。
でも、詳しくは書かないので詳しい話は上のURLを見てもらえれば
(でもこれから書くやつを全部そのまま実行すればうまくいくよ。多分。)

ターミナル
$ rails new testapp -d mysql
$ cd testapp

とりあえずこれでファイルを作ります。

Gemfile
gem 'webpay'

webpayのgemを入れて

ターミナル
$ bundle install
$ rake db:create

rake db:createでデータベースができるんじゃないかなと。

基本的なルーティング、コントローラーは前回の1と同じものを使います。

config/routes.rb
  get  'products' => 'products#index'
  post 'products/pay' => 'products#pay'
ターミナル
$ bundle exec rails g controller products

できたproductsコントローラーに

app/controllers/products_controller.rb
  def index
  end

 def pay
 webpay = WebPay.new('鍵')
 webpay.charge.create(
   amount: 400,
   currency: "jpy",
   card: params['webpay-token']
)
end
app/views/products/index.html.erb
  <%= form_tag(action: :pay, method: :post) do %>
        <script src="https://checkout.webpay.jp/v3/" class="webpay-button" data-key="鍵" data-lang="ja"></script>
      <% end %>
app/views/products/pay.html.erb
  支払い完了

ここまでで前回の1と同じところまで来れているはず。

一応ここまでで決済はできるようになっているはずなのでrails sで確かめてみてください。

そんでもって決済履歴のテーブルみたいなのを作ってそこに課金情報を持たせようという死ぬほどめんどくせーことをしようというのだから

もうやめたい。けどやる。

とりあえず箱でも作る。履歴のやつはhistoryとでも名付けて
rails:ターミナル
$ bundle exec rails g model history

マイグレーションファイルのカラムは適宜作ってください。

今回は課金した情報をダッシュボードで確認できるようにカスタマーidを取得したいと思います。

のでそれに合わせてカラムを作ります。

db/migrate
  t.string     :customer_id
  t.timestamps #null: falseがついていたら消しとく
ターミナル
$ bundle exec rake db:migrate

テーブルが出来てるかチェック

カラムもできたのであとは取得するためのアレを書いていきます

前に書いたproductsコントローラーのpayメソッドに追記と変更をします。

app/controllers/products_controller.rb
 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サービスを作って楽しんでいきましょう!