WebPayが使えなくなるからPAYJPに移行しよう!

  • 12
    いいね
  • 0
    コメント

オンラインでのクレジット決済サービスとして、今までWebPayが有名でしたが、2017/04にサービスを終了してしまいます。そこでAPIがWebPayと同じくらい簡単そうなPAYJPで決済処理をどのように実装するのかまとめました。今回はSinatraで実装します。

STEP1 アカウントの取得

ここから新規作成のリンクをクリックして、アカウントを取得。その後ログインする。
スクリーンショット 2016-11-10 8.01.13.png
ログイン後の画面がこれなら大丈夫!違ったら、id.pay.jpに飛んでいる可能性が高いのでログインしなおす。

STEP2 APIキーの取得

ダッシュボードから設定にアクセス。APIキー情報がページの真ん中あたりにあります。

STEP3 Gemfileの用意

Gemfile
# A sample Gemfile
source "https://rubygems.org"

gem 'sinatra'
gem 'sinatra-contrib'
gem 'payjp'

書き終わったら、

ターミナル
$ bundle

STEP4 フォームの作成

views/new.erb
<!doctype html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <title>支払いフォーム</title>
</head>
<body>
  <form action="/payments" method="POST">
    <script type="text/javascript" src="https://checkout.pay.jp/" class="payjp-button" data-key="" data-partial="true"></script>
    <input type="submit">
  </form>
</body>
</html>

data-keyのところには、テスト公開鍵を入れます。<script type="text/javascript" src="https://checkout.pay.jp/" class="payjp-button" data-key="" data-partial="true"></script>が決済トークンを生成するようなのですが、1つ注意しなければならないことがあります。data-keyが必須なのはリファレンスを読むと分かるのですが、class="payjp-button"も設定しないとエラーが出てしまうので、注意しましょう!

合わせてルーティングも行っておきます。

app.rb
require 'bundler/setup'
Bundler.require
require 'sinatra/reloader' if development?

get '/payments/new' do
  erb :new
end

STEP5 決済するコードの作成

app.rb
require 'bundler/setup'
Bundler.require
require 'sinatra/reloader' if development?
require "payjp"

get '/payments/new' do
  erb :new
end

post '/payments' do
  Payjp.api_key = "" #テスト秘密鍵を入れる
  result = Payjp::Charge.create(amount: 65536, currency: "jpy", card: params["payjp-token"])

  redirect '/payments/new'
end

Payjp.api_key =の部分には、テスト秘密鍵を入れます。文字列で入れてもいいですが、環境変数で入れとくと安全です。
Payjp::Charge.createのプロパティは次の通りです。

  • amount: 支払い金額(必須)
  • currency: "jpy"と入れておく。(必須)
  • card: トークンを入れるところ。(だいたい必須)

STEP6 動作確認

サーバを立ち上げて/payments/newにアクセスします。カードで支払うみたいなボタンがあるので、クリックしてカード情報を記入します。
テストで使えるカード情報は次のようになっています。

  • カード番号: 4242424242424242
  • 有効期限: 12/20
  • CVC: 123
  • カード名義: YUI ARAGAKI (<-ドキュメントがそう言ってるんだもん・・・。でも何入れても問題なかった)

一応指定があるみたいですが、カード番号だけあっていれば、他は何でも良さそうでした。

フォームを送信して、PAYJPのダッシュボードを更新すると、売り上げが増えているはずです!

まとめ

こんな感じで簡単に使うことができました!