Rails + WebPayを使って決済処理を実装してみる
Rails + WebPayを使って決済処理を実装してみる
目的
- RubyOnRailsとWebPayのAPIを使って、決済処理を実装する
WebPayとは
概要
ホームページ
作業(3h)
1. WebPay・StripeのAPIドキュメントを眺める(2h)
- WebPayのイントロダクションとStripeのイントロダクションを眺める
- Stripeに関しては、完璧なデモ用コードがあったので、実装してみたが、WebPayには関係なかった(概要つかむにはよかったかもしれないが)
- Stripe、WebPayに共通した「流れ」は以下の通り
- フォームに値を入れる
- Javascriptで入力した情報をStripeのAPIに投げると、ワンタイムトークンが返ってくる
- そのワンタイムトークンを自分のサーバーに投げて、決済を行う
注意) Stripeのデモの中でPUBLISH_KEYなどを先頭につけてサーバーを起動している箇所があるが、そのままやっても、トークンエラーになって先に進めない
× PUBLISHABLE_KEY=pk_foo SECRET_KEY=sk_bar rails s
○ PUBLISHABLE_KEY=pk_test_6pRNASCoBOKtIshFeQd4XMUh SECRET_KEY=sk_test_BQokikJOvBiI2HlWgH4olfQ2 rails s
2. railsにgemを追加(1min)
- Gemfileに下記を追加してbundle install
gem 'stripe', :git => 'https://github.com/stripe/stripe-ruby'
3. フォーム画面(view)とjsを作成する(30min)
- 下記のようなコードを記述。WebPayの開発者用ページに記載されているのをちょっと変更しただけ
- 購入のリンクを押せば、tokenという名前のパラメータだけがフォームのactionに指定されたurlに送られる
<%= form_tag({action: :charging}, {id: "payment-form"}) do %>
<%= label_tag :credit_name %>
<%= text_field_tag :credit_name, "",{id: "card-name"} %>
<%= label_tag :credit %>
<%= text_field_tag :credit, "",{id: "card-number"} %>
<%= label_tag :expy %>
<%= text_field_tag :expm, "", {id: "card-expiry-month"} %>/
<%= text_field_tag :expy, "", {id: "card-expiry-year"} %>
<%= label_tag :cvc %>
<%= text_field_tag :cvc, "", {id: "card-cvc"} %>
<%= link_to "購入", "#", {id: "purchase-submit"} %><% end %>
4. 決済処理アクション作成(30min)
- 3で送信したtokenを使って顧客情報と課金を行う
- 顧客情報のidを保存しておけば、次からtokenを得る必要がなくなる
Stripe.api_key = "test_secret_eHn4TTgsGguBcW764a2KA8Yd"
Stripe.api_base = "https://api.webpay.jp"# 顧客情報作成
customer = Stripe::Customer.create(
:card => params[:token]
)# 顧客情報を用いて請求
charge = Stripe::Charge.create(
:customer => customer.id,
:amount => @product.price,
:currency => 'jpy'
)# Customerモデルに顧客情報を保存(webpay_idというカラムがあると想定)
user = Customer.new(:webpay_id: customer.id)
user.save
結果・感想
- 超簡単に決済処理を実現することができた
- しかし、StripeにはStripe.jsというものがあり、フォームすら作る必要がない。WebPayも早くそうなってほしい
- 決済処理は簡単にできたが、一番大変なのはその後の運用フローやら管理者用画面の作成だろうと思う。運用用のツールもいろいろ用意されているらしい
- 総じて簡単!!!その一言
vimconf2013に行ってきました。
vimの勉強会に行ってきました。
vimからgitを使う
How to use git from vim @vim conf2013
- gitをvimから使うために、デフォルトの方法。pluginを使った方法などを紹介していた。
- gitって複雑なので、自分用にaliasとか設定しないと効率が悪くなってしまう。それを解消する一つの手段を提供していただいた感じ
vimのpatch作成術
- pluginではなく、vim自体を変えるpatchを本家に送り続け、一年で70個以上採用されたらしい。
- でも、自分のレベルが低すぎて、内容が頭に入らなかった。patchを作りたい人はきっと参考になるはず。
vimのruntimepath
Do You Know about Vim Runtime Files? // Speaker Deck
- vimをインストールしたときから、勝手に入っているpluginとその使い方の紹介
- 実践的で、わかりやすかったので、勉強会中にいろいろ試したりした
neocomplete
http://sssslide.com/www.slideshare.net/Shougo/neocompletevim
- 補完機能を提供するpluginの発表。neocomplecacheという前世代のものがあるので、それとの差異を説明していた。
- 発表者のキャラが強烈だった。この人の書いたpluginを使いこなせば、効率化は必至。
以上。それぞれの概要と個人的な感想でした。