fnwiyaBlog

EmacsとかLispとか可視化とか

railsアプリにwebpay(pay.jp)で決済機能機能を実装する

Railsに決済機能を実装するときにpay.jpを使うと簡単にできたのでご紹介です。

【参考】

tech.creofuga.jp

qiita.com

やり方

ステップ1:アカウント取得

WebPay: 開発者向けクレジットカード決済サービス でアカウントを取得

ステップ2:Gemfileにweppayを追加
# Gemfile
gem 'webpay'

コマンドライン

$ bundle update
$ bundle install
ステップ3:コントローラの作成
$ rails generate controller SamplePages index purchase purchased

ルーティングのメソッドをpostに変更しておく。

# config/routes.rb
post "sample_pages/purchase"
ステップ4:フォームの作成

https://webpay.jp/docs/checkoutを使うと楽

# app/views/sample_pages/index.html.erb
<%= form_tag(action: :purchase, method: :post) do %>
<script src="https://checkout.webpay.jp/v1/" class="webpay-button" data-key="<%= WEBPAY_PUBLIC_KEY %>"></script>
<% end %>

WEBPAY_PUBLIC_KEYはsetting.rbの中で変数に入れておくと管理が楽で安全です。

# config/initializers/setting.rb
# テスト環境用公開可能鍵
WEBPAY_PUBLIC_KEY = 'test_public_YOUR_TEST_API_KEY'
# テスト環境用非公開鍵
WEBPAY_SECRET_KEY = 'test_secret_YOUR_TEST_API_KEY'
ステップ5:決済処理の実装

amountの部分が金額です。

# app/controllers/sample_pages_controller.rb
def purchase
  WebPay.api_key = WEBPAY_SECRET_KEY
  WebPay::Charge.create(currency: 'jpy', amount: 1000, card: params['webpay-token'])
  redirect_to action: :purchased
end

redirect_to actionでpurchasedに飛ばしています。

# app/views/sample_pages/purchased.html.erb
支払いが完了しました。

実際使うとなると金額を動的に変えたりメールを飛ばしたりする必要があると思いますが,
デリケートな部分はAPIが扱ってくれるので気にしなくて済むのは楽です。