Rails
webpay

プログラマー1ヶ月目でもわかるwebpayの導入1(rails)

More than 1 year has passed since last update.
  • 何が書いてあるのか

がっつり文系の大学生が1ヶ月勉強してrailsアプリをちょっとだけ書けるようになったので、調子に乗って作ったアプリにwebpayを導入しようと思って大量の時間を投下してたくさんの人に助けられなんとか導入した話(導入を当時の僕がそのまま実行すれば成功するように書きます。)
何も問題がなければ多分5分くらいでできると思います。

  • webpayとは

クレジットカード決済のやつ

https://webpay.jp
決済の中では簡単に導入できるんだとか。

webpayの登録は終わっていること前提で
(簡単にできるので。確かメールアドレス入れるくらいだったと思う。)

1 とりあえず testappでも作ってみる
(導入する前に怖かったので別のアプリを作って試しました。。。。)

ターミナル
$ rails new testapp
$ cd testapp

2 webpayのgemをインストール

Gemfile
gem 'webpay'
ターミナル
$  bundle install

3 ルーティング

config/routes.rb
  get  'products' => 'products#index'
  post 'products/pay' => 'products#pay'

4 コントローラー

ターミナル
$ bundle exec rails g controller 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

テスト環境用非公開鍵はwebpayのダッシュボードのユーザー設定に入ると書いてある。
というより、ログインした後、CheckoutHelperに書いてあるコードを使えば鍵を調べなくていい。

ちなみにamountが金額

5 view

app/views/products/index.html.erb
<form action="/アクション名" method="post">
  <script src="https://checkout.webpay.jp/v3/" class="webpay-button" data-key="鍵" data-lang="ja"></script>
</form>

https://webpay.jp/docs/checkout
このページにはviewにこのコードを埋め込めば使える的なことが書いてあるのですが
railsはどうやらセキュリティ対策上これだと動いてくれなくて

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 %>

form_tagに書き換えてやらないといみたいです。
scriptの部分はCheckoutHelperのコードをそのまま使えばいいのでformの 部分だけ書き換える感じで

app/views/products/pay.html.erb
  支払い完了

これで準備完了

ターミナル
$ rails s

これで
localhost:3000/products
にアクセスすれば「カードで支払う」というボタンが出てきているので
webpayのテスト用カード番号などを入力すればテスト決済ができる。

一応これで決済はできる
けど、決済情報をとったりできないので
その辺を次回で書きたいなと思う

2016.08.18追記

BASE社のPAY.JPの導入について書いたので興味がある方は

プログラマー歴、半年未満でもわかるpay.jp導入(rails)

2016.11.06追記

webpayの終了が発表されましたね。
もしよかったらpay.jpを利用してみてください。
(別にpay.jpの中の人ではないです。)