こんにちは、pixivで決済システムの開発を担当しているエンジニアの@ikです。
今回、PayPal User Group(PPUG)というPayPalを利用するユーザーグループが主催する「PPUG Meetup #1 -今更聞けないPayPal入門-」でLTをしてきました。
当日発表した内容はこちらです。
この発表を踏まえつつ、pixivにおけるPayPal導入・運用の話をしていきます。
PayPal とは
PayPalはPayPal Holdings Inc.の提供する決済サービスです。 PayPalを利用することで、購入者は決済を行う際に、自分のクレジットカード情報など決済に使用する情報をECサイト等に直接送る必要が無くなるため、安全に取引ができます。
pixivでのPayPal決済
pixivには、決済を必要する様々なサービスがあります。
これらのサービスの中で、現在PayPalが利用できるのはpixivプレミアムです。(他のサービスにも、順次導入を進めていく予定です。)
pixivプレミアムのPayPal実装
pixivプレミアムでは、PayPalのAPIを利用して決済を行う「Express Checkout」 を利用して、決済連携をおこなっています。しかし、PayPalには「Express Checkout」以外にも多数の決済連携の方法が用意されています。
- 請求書ツール:Webアプリの実装は不要 メールで請求書を作成
- ウェブペイメントスタンダード:PayPal側から提供されるHTMLコードを貼り付けるだけで、PayPal決済が可能
- ウェブペイメントプラス:PayPalアカウントなしでのカード決済や決済画面のカスタマイズが可能
pixivプレミアムのように月額で料金が発生するようものでも、「ウェブペイメントスタンダード」 を使用すればwebアプリ側の開発無しで提供も出来ます。 しかし、今回はAPI連携を行う「Express Checkout」を使用しました。 この理由は、pixivプレミアムのキャンペーンで初月の料金を無料にするといったことを行いたい場合など、ユーザーによって条件を変える場合のコントロールが、「ウェブペイメントスタンダード」の場合、難しいためです。
具体的な実装フローを説明していきます。
- 1. 決済準備API (SetExpressCheckout)を利用して、決済用のtokenをPayPalより取得する
- 2. 取得したtokenを使用してPayPalの決済用URLを組み立てて、ユーザーをそのページにリダイレクトさせる
- 3. ユーザーがPayPal画面上で支払いを承諾すると、1.で事前に渡したコールバックURLにリダイレクトされる
- 4. 決済トランザクションの成功失敗を確認するAPI(GetExpressCheckoutDetails) を利用して正しく決済が確定していることをチェックする
- 5. 初回分の料金の請求(DoExpressCheckoutPayment)をリクエストする
- 6. 定期支払いプロファイル(PayPalで管理される定期的な支払いを行うデータ)の作成(CreateRecurringPaymentsProfile)をリクエストする
この時、5.で初回分の料金を別途請求リクエストしています。 このようにすることによって、「最初の請求が確実に成功している」ことを確認した上で、定期請求を開始できる、「初回の料金を無料にする際はそのリクエストを省くだけ」で済むようにできます。
リリース後に発覚する問題
ここまでは、導入にあたっての実装の話でしたが、当然実装後に初めて分かる問題も多くあります。 その1つとして「eCheck」を紹介します。
PayPalは日本だけでなく、世界各国で利用されています。 当然、金銭に対する文化や法律も異なるため、日本では使えない決済方法や、日本では馴染みの薄い決済手段もあります。 基本的には、PayPalを利用する側は意識する必要はありませんが、pixivプレミアムでの使い方では1点だけ問題になるものがあります。 それが、「eCheck」です。
eCheckは、支払い者の銀行口座から引き落とされる決済方法であり、利用者がeCheckを利用して支払いを選択した場合、PayPalが銀行に引き落としをリクエストして、それが成功してから販売側に資金が送られます。 そのため、完全に支払いが確定するまで数日かかります。 単一の商品の販売であれば、引き落としを確認してから送るという手段も使えますが、pixivプレミアムのような定期的な商品の場合、そのラグタイムの扱いが非常に難しくなります。
eCheckは英国等一部の国でしか使用できないこと、およびそもそもpixivプレミアムで利用しようという人がほぼいなかったため、今回はeCheckを使用できないようにすることで対応を行いました。
eCheckを受け取らないようにするには、PayPalの販売アカウントの設定で切り替えることが出来ます。 PayPalにログイン後、[アカウント設定]→[プロフィール設定]→[販売ツール]→[支払い受取りを拒否する]より、eCheckでの支払いを拒否することが出来ます。
まとめ
今回は、pixivにPayPalを導入する際の実装や、導入後の対応について一例を説明しました。 もちろん、今回説明したeCheck以外にも、不正な決済の対応など導入後にしかわからなかった問題はまだまだあります。 PayPalはもちろん、それ以外にもどんどん新しい支払手段は増やしていきたいと考えています。 これからもpixivの決済にご期待下さい!