RailsでPAY.JPを利用した決済処理をモデルに追加する

はじめに

アプリケーションに対するクレジットカードによる決済機能の要件はちまたに溢れております。マイクロサービスが叫ばれて久しい昨今、そのバックグラウンド側の実装について、Railsのモデルをベースに考えたいと思います。

実装

決済処理はAPY.JPに対する支払い処理と、アプリケーションが保持するデータとの間で、一貫性が保たれていなければなりません。当然、トランザクションを利用することになります。そこで便利なのがモデルのコールバック関数です。

Rails5以降におけるコールバック関数、取り分けafter_*系においては、その処理中でraise ActiveRecord::Rollbackが行われるのに応じて、createやupdateといった処理がロールバックするように作られております。これを利用してデータの一貫性を担保するのが便利です。

APIへのアクセスには、PAY.JPが提供しているpayjp/payjp-rubyを利用します。

尚、支払い用のトークン(self.token)の生成については、以下の記事をご参考下さい。

Nuxt(Vue.js)でPAY.JPのcheckout(支払い処理)を行う

7月 5, 2018Rails

Posted by poison