PayPalには、定期支払い完了時や決済エラー時に指定したURLにデータをPOST送信してくれる
Instant Payment Notification (IPN)という機能があります。
PayPal Instant Payment Notification
https://developer.paypal.com/webapps/developer/docs/api/#notifications
これは、PayPalのアカウント管理画面での設定、およびClassic APIのパラメータなどで設定できます。
REST APIには、さらに、この設定自体をAPIで作成できるWebhookという機能があります。
PayPal Webhook
https://developer.paypal.com/docs/integration/direct/rest-webhooks-overview/
IPNで、例えば決済する画面ごとに通知先を変えたい場合は、IPNの通知先のURL自体をAPIや決済フォームのパラメータに渡さないとならないため、セキュリティ的に課題が残ったり、URLごとに通知するイベントをコントロールすることはできません。
Webhookの場合、通知の設定ごとにIDが振られ、そのIDを使って通知先の指定やどのイベントを送るか設定できるので、より細かい制御が可能になります。
Webhookで送られるイベントは以下です。
Webhook Event Types
https://developer.paypal.com/docs/integration/direct/rest-webhooks-overview/#event-types
PayPal Webhookも、こちらでのべたHATEOAS Linkと共に、REST APIの設計において、よく参考にされているモデルです。
ただし、IPNの通知はClassic API、PayPal提供フォーム、REST APIどの支払いについても、管理画面で有効にしている限り通知されますが、Webhookは、REST APIのアプリに紐づくため、そのアプリを使ったREST APIコールよるイベントしか通知されないことに注意が必要です。