【PHP or Railsエンジニア向け】Online決済APIどれ使う?
「うちのWeb予約システムで、パパっとクレジットカード決済できるようにしたいんだよね~~実装よろしくね ^^」
という話になって、どの会社のAPI使おうかな、、と比較したので共有です。
今回比較したのは下記3社!
*Paypal:
*Square:
*Stripe:
正直な話、調べるまでPaypalしか聞いたことなかった、、(;´Д`A ```
Paypal以外はBtoBの会社さんのようなので、、(言い訳)
比較に入る前に、電子決済システムの種類(2種類)についてお話させてください!
(この種類によって値段や使えるcredit cardが変わってくるため。)
1.オンライン決済(今回の比較対象)
Webサイトにクレジットカード情報を入力すると決済できるよ!ってやつ。
APIたたくと上記3社のシステムが処理してくれる。
エンジニア向け。
APIってなに?ってかたは、下記のサイトで遊んでみると分かりやすいかと。
(例:パラメータをname_kana = マクドナルドとして、クエリを送信するとマックの情報がぐるなびのシステムから返ってくるよ)
2. POS決済
お店に行ったとき、専用の機械でカードをピッ!ってやると決済できるやつ。
上記2社(Paypal)ともそれぞれ専用の機械がある。Paypalは2020年2月時点ではPOS決済の取り扱いなし
今回は1.オンライン決済 に関して下記5項目について比較していきますー。
1. price
2. キャンセルの際のシステム使用料の返金
3. 使用可能なcredit card
4. 在庫管理
5. エンジニア向けのdocument(php and rails)の豊富さ、わかりやすさ、テスト環境の作りやすさ
自分はphpとruby on rails のエンジニアなので、主にこの2つの言語のドキュメントが豊富か?という比較項目をいれてます。
セキュリティの項目も比較したのですが、量が多くなるので今回は省略させていただきます。
それでは行きましょーー!!
1. price
*Paypal:
月額の売り上げによって変化(月のpaypalでの売り上げが高ければ高いほど、一回のシステム手数料が下がる)。ただし、売り上げによってお得にするには、申請が必要。
30万円以下の売り上げなら、国内手数料は 3.6 % + 40 円 / 件(標準レート)、海外は4.1 % + 40 円 / 件(標準レート)
マーチャントレート(おトクな手数料)|サポート-PayPal(ペイパル)
*Square:
日本での手数料は一律3.6%。海外のcredit cardを使用して日本で決済した場合なども一律で3.6%!
Take Payments: Payments Pricing with Square APIs and SDKs
*Stripe:
日本での手数料は一律3.6%。ただし、通貨換算が必要な場合は、2% の追加手数料が発生(日本のcredit cardを使用して海外で買い物した場合や、海外のcredit cardを使用して日本で決済した場合など)
2. キャンセルの際のシステム使用料の返金
*Paypal:
全額返金をする場合、取引手数料の変動部分は返金されます。一部返金をする場合は、返金額に応じた変動取引手数料の金額が返金されます。いずれの場合も、PayPalの一律の手数料の全額(取引1件あたり40円)がかかります。
つまり、購入の際に支払金額の3.6 % + 40 円 / 件かかった場合、全額返金なら支払金額の3.6 %の手数料が返金され、40円は返金されない。
*Square:
キャンセル手数料なし、購入の際にかかったシステム使用料の払い戻しされる!!
払い戻しに関するFAQ | Squareヘルプセンター - JP
*Stripe:
キャンセルは手数料なし。ただし購入の際にかかったシステム使用料の払い戻しはなし
(There are no fees to refund a charge, but the fees from the original charge are not returned.)
3. 使用可能なcredit card
*Paypal:
Visa, Master card, JCB + paypal ただし月額3000円
PaypalはユーザさんにPaypalのアカウントを作ってもらって、そのアカウント内で支払いをさせるというコンセプトみたいですね。なのでアカウントを持たないユーザさん向けにcredit card決済を入れようとすると月額3000円
(ノД`)・゜・。
*Square:
Visa, Master card, Amex対応。オンライン決済はJCB対応してないのがデメリットですね、、、POS決済ならJCB対応してるのに、、、
決済手数料・導入費用・維持費用 | Square (スクエア)
*Stripe:
Visa, Master card, Amex, JCB, Discover, etc 幅広く対応!!
Stripe: Pricing & fees | Japan
4. 在庫管理
*Paypal:
なし。APIのリファレンスに在庫管理の項目がない
*Square:
あり。ただし、paymentのAPIと在庫管理のAPIを別で実行する必要がある。
なので、まず在庫管理のAPIで商品を確保して、paymentのAPIを実行して支払いに失敗したら、また在庫管理のAPI実行して確保した商品をもとに戻して、、、などエラー処理とかを結構かかないとだめ
Inventory API- Square API Reference
*Stripe:
なし。ただしconnectというサービスでほかのシステム(booking system のOpenTableなど)と連携できる仕組みのようなので、今後在庫管理のシステムとも連携できるようになるかも
Connect Overview | Stripe Connect
5. エンジニア向けのdocument(php and rails)の豊富さ、わかりやすさ、テスト環境の作りやすさ
*Paypal:
基本的にdocumentは下記のみ
Get Started - PayPal Developer
APIのサンプルも基本bashでcurlコマンド打ってねー、それかpostmanつかってねって感じ。
Get Started - PayPal Developer
でもでも、下記のWebサイト上でAPIのサンプル(PHPもRailsも)を実際に実行できるので十分満足です
Paypalでいいな!と思ったのは、APIをわざわざ実装しなくても、javascriptを張り付けるだけでいいこと!めっちゃ簡単www 在庫管理とか複雑なことしたくなったら対応できないけど、ただ決済したいだけならPaypalが一番実装コスト省ける
Smart Payment Buttons Overview - PayPal Developer
テスト環境はAPIの送信先をテスト用のURL https://api.sandbox.paypal.comに変更するだけ。
*Square:
基本的に下記がdocument.
これも下記Webサイト上でAPIのサンプルを実際に実行できるので満足です
API Explorer - POST /v2/payments- Square API Reference
rails はgem 'square.rb'を使用するので、使い方は下記でcheck.
GitHub - square/square-ruby-sdk: The Ruby SDK for Square APIs
あとは下のサンプルが参考になりました。phpもrailsも。
connect-api-examples/connect-examples/v2 at master · square/connect-api-examples · GitHub
テスト環境はpaypalの時と同じで、テスト用のURL https://connect.squareupsandbox.com に変更するだけ
*Stripe:
Documentはコチラ
API documentsもrails, php両方に対応しています
Stripe API Reference - Authentication
rails はgem 'stripe'を使用します。使い方は下記でcheck.
GitHub - stripe/stripe-ruby: Ruby library for the Stripe API.
Stripeは今回の3社のなかでは一番使用ユーザが多いらしく、exampleやstack overflowでの質問も多い印象でした。なにか開発中につまづいた時も、回答が見つかりやすいかも。
テスト環境もURLをsandboxに変更する点は同じ。なのですが、支払い方法の種類(apple pay, visa cardなど)によってURLを変更する必要があるので少し面倒かな、、、と感じました
以上で比較は終了です
結局私は在庫管理必要なので、squareをつかうことになりました!!
日本語のドキュメントがないので、需要があったら実装中に分かった使い方とかをブログに書いていけたらと思います
おやすみなさいぃぃぃ