PayPal API導入・活用ガイド

第3回定期支払いを実現するリカーリングペイメントの実装

リカーリングペイメントは、⁠PayPal(ペイパル⁠⁠」で定期支払いを実現する決済ソリューションです。リカーリングペイメントを使うと、月々の支払額が決まっているスポーツクラブの月会費や保険料などの定期的支払いに対して、購入者が毎回PayPalサイト内で決済内容に同意する必要がなく、決まった頻度と金額で自動的に決済を行うことができます。

定期的な決済に際して、その度購入者の同意を得る必要がないので、事業主にとっては定期的に発生する決済の売上を確実に得ることができます。またエクスプレス チェックアウトによる都度決済を組み合わせることで、定期支払いに1回だけの決済を入れることも可能です。これにより、たとえばフィットネスクラブのメンバーに対し、初回の支払いのみクラブの月会費を日割りで計算し請求するようなこともできます。

paypal.com内 定期支払い紹介ページ
http://bit.ly/e0o33V

定期支払いの決済フロー

画像
  1. 定期支払いに同意

    購入者は購入する商品またはサービスを選択後、PayPalにログインし、定期支払いの詳細(支払い期間、周期、代金など)を確認後、同意します。

  2. 定期支払いに同意したことを通知

    ECサイトの事業主に、購入者が定期支払い同意したことを知らせるメールがPayPalから届きます。

  3. 定期的な支払い

    定期的に決済が行われ、決済が完了するたびに、購入者およびECサイトの事業主に、決済完了を知らせるメールがPayPalから届きます。

  4. 商品、サービスの提供

    ECサイトの事業主が、定期的な支払いを確認後、商品およびサービスを購入者に提供します。

なお、定期支払いは、ECサイトの事業主もしくは購入者が支払いを中止、または定期支払いの期限が満了になった時点で終了します。

リカーリングペイメントの実装に必要なもの

  1. PayPalのビジネスアカウント
  2. API証明書
  3. sandbox内のテスト用アカウント
    ⁠詳細は前回「PayPalのエクスプレス チェックアウトの実装」「エクスプレス チェックアウトの実装に必要なもの」セクションを参考にしてください)

リカーリングペイメントの実装

画像

リカーリングペイメントの実装は以下のステップで実装します。

  1. SetExpressCheckout APIをコールします。定期支払いであることを指定するため以下のパラメータも追加します。

    &L_BILLINGTYPE0=RecurringPayments
    &L_BILLINGAGREEMENTDESCRIPTION0=(商品の説明)

    またここで定期支払いには含まれない初回分の精算などの決済を行う場合は、その額を&AMTパラメータに指定してください。

  2. SetExpressCheckoutのレスポンスにあるtokenを付加してpaypal.comにリダイレクトします。ログイン後にPayPalのログイン画面を日本語で表示させる場合はリダイレクトのURLに&locale.x=ja_JPを追加します。

  3. 購入者がPayPalにログイン後、定期支払いに同意するための確認画面が表示されます。ここでは定期支払いに同意する旨の同意文は表示されますが、定期支払いの詳細(頻度、額など)に関しては表示されません。購入者が同意した後、SetExpressCheckoutで指定した戻り先のURLにtokenと決済をした購入者の特定できるpayeridが付加されてリダイレクトされます。

  4. tokenとpayeridを含んだパラメータを渡してGetExpressCheckoutDetails APIをコールし、SetExpressCheckoutで指定した内容を取得できます。購入者はここでECサイト内の画面で定期支払いの契約内容の確認を行うこともできます。ただし、定期支払いに関する詳細設定は次のCreateRecurringPaymentsProfileで行うため、GetExpressCheckoutDetailsではレスポンスがなく、DBなどに保存している値を使って購入者に対して確認することが必要です(このステップは省略可能です⁠⁠。

  5. tokenとpayeridと定期支払いに関する詳細(頻度、額など)をパラメータで渡し、CreateRecurringPaymentsProfile APIをコールして、定期支払いの契約の締結を終了します。

    ※注意:このAPIに渡す&DESCパラメータには1.の&L_BILLINGAGREEMENTDESCRIPTION0で指定した値と同じものを指定するようにしてください。

IPNでの決済の確認

一度定期支払いが締結されると、指定された頻度(たとえば、毎月)で購入者から事業主に対して自動的に決済が行われます。この決済は非同期に行われるため、PayPalから決済がある度に任意のリスナー用のURLに対してIPN(instant payment notification)という仕組みを使って決済に関する詳細が送られます。

画像

IPNリスナー用の設定は、以下の手順で行います。

  1. PayPalのアカウントにログイン
  2. 「個人設定」をクリック
  3. 「即時支払い通知の設定」をクリック
  4. 表示されるページからURLを設定

リカーリングペイメントの場合は主に以下のtxn_typeを含んだIPNが送られます。

  • recurring_payment_created: 定期支払いの契約締結に成功
  • recurring_payment: 定期支払いの決済に成功
  • recurring_payment_failed: 定期支払いの決済に失敗

txn_typeで指定された値を見て、必要に応じて定期支払いに関連する契約の更新などを行ってください。

txn_typeの詳細紹介ページ(英語)
http://bit.ly/yz4vF6
IPNの紹介PDF(英語)
http://bit.ly/kwRjOS

定期支払いは一度、頻度と金額を決めてしまうと、契約を最初からやり直さない限り頻度や金額を変えることができません。次回はこのような制限がなく、任意のタイミングと金額で決済できるリファレンス トランザクションの実装についてご紹介します。

リカーリングペイメントの実装のためのリソース

PayPal Express Checkout Integration Guide(PDF)
http://bit.ly/hpFl9H(英語:最新版 33ページ以降)
http://bit.ly/ijuKj3(日本語:2009年10月版 78ページ以降)
Name-Value Pair API Developer Guide(PDF)
http://bit.ly/hWU8MF(英語:最新版 119ページ以降)
http://bit.ly/iKZxZR(日本語:2008年11月版 65ページ以降)

おすすめ記事

記事・ニュース一覧