LoginSignup
38
37

More than 5 years have passed since last update.

Railsで単発決済システム(Pay.jp)を実装

Last updated at Posted at 2020-09-01

Pay.jpを使用した決済システムの実装方法です。

Goals

以下のようなアプリを作成します。
金額を入力して「カードを支払う」をクリックすると、支払いのウィンドウが表示されます。
クレジットカード情報を入力し「カードを支払う」をクリックすると支払いが完了します。

FireShot Capture 127 - SamplePayjp - http___localhost_3000_.png

PAY.JPの会員登録

PAY.JP公式ページより会員登録をします。

ログインすると以下の画面が表示されます。

FireShot Capture 122 - PAY.JP - 決済手数料2.59% クレジットカード決済代行サービス - https___pay.jp_d_.jpeg

左の「API」を選択するとAPIキーの情報が表示されます。
今回はテストアプリなのでテスト秘密鍵テスト公開鍵を使用します。

FireShot Capture 123 - PAY.JP - 決済手数料2.59% クレジットカード決済代行サービス - https___pay.jp_d_settings.jpeg

サンプルアプリの作成

Railsのプロジェクトを作成したら、Gemfileを開き以下をグローバルに追記します。

gem 'payjp'

インストールします。

bundle install

環境変数の設定

ローカル環境

環境変数の設定にはdotenv-railsというを使用します。

dotenv-railsのインストールは、Gemfileのグローバルへgem 'dot-env'を記載してbundle installを実行してください。

使用方法は、プロジェクト直下に.envファイルを作成し、以下のように編集しましょう。
注:.envがリモートリポジトリへアップされないようにgit.ignorへ追加しましょう

PAYJP_PUBLIC_KEY='テスト公開鍵'
PAYJP_SECRET_KEY='テスト秘密鍵'

これでローカル環境での環境変数の設定は完了です。

ViewとControllerの作成

以下を実行してControllerとViewを作成します。

rails g controller products index pay

View

app/views/products/index.html.erb

「カードで支払う」ボタンを設置します。
このボタンをクリックするだけで、支払い用のモーダルウィンドウが表示されます。

<%= form_with local: true, url: products_pay_path do |form| %>
  金額:<%= form.text_field :amount %>
  <script
    type="text/javascript"
    src="https://checkout.pay.jp"
    class="payjp-button"
    data-key="<%= ENV["PAYJP_PUBLIC_KEY"] %>">
  </script>
<% end %>

FireShot Capture 126 - SamplePayjp - http___localhost_3000_.png FireShot Capture 124 - SamplePayjp - http___localhost_3000_.png

app/views/products/pay.html.erb

支払い完了の旨を表示します。

支払いが完了しました

<br>
<%= link_to 'Topへ', root_path %>

Controller

payメソッドを編集します。

def pay
  Payjp.api_key = ENV["PAYJP_SECRET_KEY"]
  Payjp::Charge.create(
    :amount => params[:amount],
    :card => params['payjp-token'],
    :currency => 'jpy'
  )
end

動作確認

金額(50〜)を入力し、「カードで支払う」をクリックします。

支払い情報ウィンドウにクレジットカード情報を入力し「カードで支払う」をクリックします。
- カード:テストカードに記載の番号
- 有効期限:未来の年月
- CVC番号:3桁の適当な数字
- 名前:任意の名前

FireShot Capture 128 - SamplePayjp - http___localhost_3000_.jpeg

「支払いが完了しました」の画面が表示されれば成功です。

Webのダッシュボードで売り上げデータが更新されていることが確認できます。

FireShot Capture 129 - PAY.JP - 決済手数料2.59% クレジットカード決済代行サービス - https___pay.jp_d_.png

最後に

返金は「売上一覧」->「課金ID」->「売上返金」から。

本番運用する際は、ほかにもいろいろ考慮する点がありますが、最低限の実装であれば、ものすごく簡単ですね。

参考
- Pay.jp
- PAY.JP API 利用ガイドPAY.JP API 利用ガイド

38
37
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
38
37