LoginSignup
0
2

More than 3 years have passed since last update.

PayPalの定期支払を実装するには

Last updated at Posted at 2019-11-09

PayPalの定期支払を実装するには、めんどい作業をしましたので、やったことを記録しとっけます。
あくまでも最短ルートにしますので、ご容赦ください。
基礎知識として、PayPalにはSandboxとLive(production)環境があります、事前確認してみてください。

定期購読の開始(購読ボタン設置)

  • Product(売りたい商品)の作成
  • Productに対してPlan(どういうふうに支払う)の作成
  • 画面に定期支払ボタンの設定

詳細は
Basic Integrationをご参照ください。

定期購読の停止(キャンセルボタンを設置)

  • 定期購読ボタンのCallbackに定期購読IDが返されるので、それを保存します。
  • キャンセルボタンを設置し、定期購読IDを渡すれば、ボタンのイベント処理からキャンセルAPIを呼び出す感じになります。

具体的に、自分でAPIを呼び出すか、SDKを利用して呼び出すかとなります。
言語によってキャンセルが実装されたり、されていなっかたりもありますので、適当に足りない部分を既存のSDK共通部分を利用しながら実装できたらよいかと思います。細かくは割愛させて頂きます。

ユーザーからキャンセルする場合の対応(PayPalの画面から)

  • 今回はWebhookでの対応しました。
  • IPNでの対応もできますが、今回は、割愛させて頂きます。

自分の場合、複雑のパターンを設計していなくて、基本的に定期支払がキャンセル(Canceled)、一時的(Suspended)の場合、キャンセルされたこととします。詳細はwebhookをご参照ください。
ローカルでテストするには、ngrokを利用した。

本番リリース

課題

  • webhookをテストするにはwebhook simulatorを利用しますが、本物ではない、クリックするたびに、イベントが送られる。実際にSandbox環境で定期支払をキャンセルしでもイベントが発生しません。
  • webhookは、本番環境でテストしたところ、ユーザーからキャンセルされた場合、イベントが発生しますが、管理者側からキャンセルされた場合、イベント発生しません。
  • 自分中の疑問ですが、結構一般的によくあるニーズなのに、これらを実装、テストまでには結構時間が掛かりました、なぜPayPalにはこんな難しい仕様としているんだろう。

参考資料

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2