Используете ли вы IPN, если да, то при отмене подписки PayPal возвращает $_POST['txn_type'] = subscr_cancel
вместе с subscr_date = дата подписки, subscr_id = идентификатор подписки и т. Д. Теперь вы можете обработать запрос отмены для возвращенного идентификатора подписки.
Точно так же вы получаете $_POST['txn_type'] = subscr_eot
, когда заканчивается подписка.
Как только вы настроите IPN URL в настройках PayPal, он всегда будет вызывать ваш обработчик IPN.
используйте случай переключения для обработки различных запросов, например,
switch ($_POST['txn_type']) {
case 'cart':
//for products without subscription
break;
case 'subscr_payment':
//subscription payment recieved
break;
case 'subscr_signup':
//subscription bought payment pending
break;
case 'subscr_eot':
//subscription end of term
break;
case 'subscr_cancel':
//subscription canceled
break;
}