Omise、Pay.jp、Stripeから自分にあった決済代行サービスの選び方
Omiseで働いているとユーザーからよくある質問が2点あります。
・「他社と比較して何が違うのか?」
・「Omiseはどのような場合にフィットするのか?」
まずひとつめの質問の回答は、料金体系と提供しているサービスの種類が各社異なるという点であり、コスト(API・カードブランド・手数料)に対してフォーカスして比較することができます。
これを、3つのセグメント(API・カードブランド・手数料)で見ていきましょう。
API
まずAPIですが、Stripeが先駆者としてオンライン決済の機能に止まらず、マーケットプレイス(店子)機能、その他にECがらみのバックオフィス系の機能まで多くの機能を提供しています。
OmiseとPay.jpについては、基礎的なオンライン決済の機能を提供しています。
Stripeのような高度なサービスはないため一見では見劣りしてしまいがちですが、基本的に必要となるオンライン決済の機能は提供しており、スリムな点では学習コストが低いためStripeより使い始めやすいかもしれません。
例えていうと、Rubyコミッターになりたい人がいきなりCRubyを始めるよりmrubyのほうがスリムで学習コストが低めに思えるような感じでしょうか。。。
Omise | Pay.jp | Stripe | |
---|---|---|---|
顧客 | ✔️ | ✔️ | ✔️ |
チャージバック | ✔️ | ✔️ | ✔️ |
仮売上 | ✔️ | ✔️ | ✔️ |
本売上 | ✔️ | ✔️ | ✔️ |
定期課金 | ✔️ | ✔️ | ✔️ |
プラン | - | ✔️ | ✔️ |
レシピエント | ✔️ | - | ✔️ |
検索 | ✔️ | - | - |
送金 | ✔️ | ✔️ | ✔️ |
イベント | ✔️ | ✔️ | ✔️ |
クーポン | - | - | ✔️ |
割引 | - | - | ✔️ |
その他EC向けの機能 | - | - | ✔️ |
※ 上記テーブルではコアになるAPIだけを掲載しています。API比較表はこちら。
カードブランド
各社で日本向けにサポートしているカードブランドの一覧です。
対応カードブランドだけでみると Pay.jp > Omise > Stripe の順になります。
日本国内では、VISA > MasterCard > JCB の順で利用者数が多いので、最低でもこの3ブランドは対応したほうがユーザーに優しいかと思います。
※ 全ての数字で見ると VISA > MasterCard > AmericanExpress の順かと思います。
Omise | Pay.jp | Stripe | |
---|---|---|---|
VISA | ✔️ | ✔️ | ✔️ |
MasterCard | ✔️ | ✔️ | ✔️ |
JCB | ✔️ | ✔️ | - |
AmericanExpress | ✔️ | ✔️ | ✔️ |
Diners Club | ✔️ | ✔️ | - |
DISCOVER | - | ✔️ | - |
手数料
次に決済代行サービスのコスト面についてです。
各社とも薄利ですが、不正対策やセキュアなサービスを提供をしています。
Omise | Pay.jp(ベーシック/プロ/Seed/NPO) | Stripe | |
---|---|---|---|
VISA | 2.95% | 3.0%/2.59%/2.59%/1.5% | 3.6% |
MasterCard | 2.95% | 3.0%/2.59%/2.59%/1.5% | 3.6% |
JCB | 3.6% | 3.6%/3.3%/3.3%/- | - |
AmericanExpress | 3.6% | 3.6%/3.3%/3.3%/- | 3.6% |
Diners Club | 3.6% | 3.6%/3.3%/3.3%/- | - |
DISCOVER | - | 3.6%/3.3%/3.3%/- | - |
初期費用 | ¥0 | ¥0 | ¥0 |
月額費 | ¥0 | ¥0/¥10,000(税込)/¥0/¥0 | ¥0 |
チャージバック手数料 | ¥0 | ?(※1) | ¥1,500 または ¥0 |
送金手数料 | ¥260 /回(VISA/MasterCardのみ) | ¥0(※2) | ¥0(※3) |
消費税 | 有(※4) | ?(※1) | ?(※1) |
※1:情報がみつかりませんでしたので、どなたか教えてください。。
※2:指定入金サイクル
※3:週一回まで、売上の振込が無料
※4:ご請求の際は決済手数料に別途消費税が加算されます
Omiseがどのような場合にフィットするか?
まず、「Omiseがどのような場合にフィットするか?」の答えですが、新規事業(スタートアップ)のプロダクトにフィットします。 その他には、WooCommerceで気軽に低コストで独自ECを始める場合にフィットすると言えます。
また、私の考えでは各社とも根本的には同じターゲットに向いているため、特にスタートアップは導入障壁の低さで必然的にフィットするようになっています。
最高のパートナーの見つけ方
決済代行はあなたのビジネスのパートナーです。だからこそパートナー選びに妥協をしてはいけません。 もしあなたが新規事業を始めるのであれば、各社に連絡を取り、サポートの質や相性、テスト導入での動きを確認し納得いくパートナーを選択するべきです。
Omise、Pay.jp、Stripeの3社は、いずれもRESTベースに構成されたAPIを提供しているため、実装にかかるコストがほぼ同じと言えます。 つまり言い換えると3社間での実装の入れ替えはそこまでコストがかかりません。
また、どこかが第2のWebpayになることもあるかもしれませんし、心のそこから信頼できるパートナーを選ぶにはPersonal Relationshipが重要です。
OmiseにもPay.jpにもStripeにも素晴らしき方々が多いので、実際にお会いになるのが得策です。
OmiseのテストカードのGem作りました
Omiseのテストカードをウェブサイトから調べる手間を省く方法としてGem(omise_test_cards)を公開しました。
omise_test_cards のインストール
gem install omise_test_cards
Pryでちょっと動かしてみる
cards = OmiseTestCards.test_cards cards.successful_charge.code # => "successful_charge" cards.successful_charge.description # => "these credit card numbers can be used in test mode" cards.successful_charge.cards # => <Hashie::Array [#<Hashie::Mash brand="Visa" number="4242424242424242">, #<Hashie::Mash brand="Visa" number="4111111111111111">, #<Hashie::Mash brand="MasterCard" number="5555555555554444">, #<Hashie::Mash brand="MasterCard" number="5454545454545454">, #<Hashie::Mash brand="JCB" number="3530111333300000">, #<Hashie::Mash brand="JCB" number="3566111111111113">]> cards.successful_charge.cards.first.brand # => Visa cards.successful_charge.cards.first.number # => 4242424242424242
ちなみに、Omiseのテストカードは10種類のステータス別のカードがあります。
cards = OmiseTestCards.test_cards cards.successful_charge cards.invalid_security_code cards.fail_3ds_card_enrollment cards.fail_3ds_card_validation cards.insufficient_fund cards.stolen_or_lost_card cards.failed_processing cards.payment_rejected cards.failed_fraud_check cards.invalid_account_number
このうちの cards.successful_charge
に含まれるカードのいずれも、正常にテストでChargeができるカードになります。
それ以外のカードは、利用できないステータスなので、charge.paid?
でChargeに失敗して入れば、 charge.failure_code
を見て、エラー処理を入れてあげるといいでしょう!
Omise RubyライブラリはOmiseErrorをraiseするので、こんな感じでテストするといいですね。
require "omise" require "omise_test_cards" Omise.api_key = "SET_YOUR_TEST_SECRET_KEY" Omise.vault_key = "SET_YOUR_TEST_PUBLIC_KEY" # get sampla card sample_card = OmiseTestCards.test_cards.successful_charge.cards.first begin # create token token = Omise::Token.create(card: { name: "TARO OMISE", number: sample_card.number, expiration_month: 3, expiration_year: 2019, city: "Tokyo", postal_code: "1510051", security_code: 123 }) # Charge 100000 JPY charge = Omise::Charge.create({ amount: 100_000, currency: "jpy", card: token.id }) if charge.paid # handle success puts "thanks" else # handle failure raise charge.failure_code end rescue OmiseError => e # handle OmiseError raised by omise library raise e.message end
リンク
決済APIでカードの有効期限切れの対応ってどうするの?
PryとOmiseのRubyライブラリを使って、有効期限が切れるカードを持っているCustomerを検索する方法を書いておきます。
# pryを実行 pry # omiseライブラリを読込 require "omise" # APIキーを設定 Omise.api_key = "秘密鍵(シークレットキー)" # 試しにdescriptionを更新するCustomerを取得 customer_id = "cust_test_xxxxx" customer = Omise::Customer.retrieve(customer_id) # デフォルトカードの有効期限を取得 expiration_month = customer.default_card.expiration_month expiration_year = customer.default_card.expiration_year expiration = "#{expiration_month}/#{expiration_year}" # customerのdescriptionへデフォルトカードの有効期限を入れる customer.update({description: expiration}) # 3/2019のデフォルトカードを持っているCustomerを検索 search_result = Omise::Search.execute(scope: "customer", query: expiration) search_result.data.each do |customer| # ここで有効期限が切れそうなcustomerへ何かをする処理をいれる。 end
Customerへカードを紐づけるChargeをしている人には重宝するかもしれません。
Customerは Omise::Customer.list
で一覧を取得することもできるので、これを使っていっきにdescriptionをアップデートしてもいいかもです。