Я пытаюсь протестировать веб-перехватчики Paypal в своей локальной среде; в частности, прямо сейчас я отправляю себе (администратору) электронное письмо, когда пользователь отменяет свою подписку.
Я использую ngrok для создания URL-адреса (что-то вроде https://d044ce9878a1.ngrok.io
), чтобы сделать мой локальный сайт общедоступным ; в моей учетной записи разработчика Paypal я связал https://d044ce9878a1.ngrok.io?paypal_listener
с моим приложением.
Вот класс, который я написал для обработки веб-перехватчиков:
<?php
namespace memberships;
use Exception;
use mailer\NotifyAdmin;
class Webhooks {
/**
* Listens to Paypal's webhooks
*/
public function __construct() {
// Bail out if the incoming request isn't marked with the "paypal_listener" param
if( ! isset( $_GET[ "paypal_listener" ] ) ) {
return;
}
// Prepare to send an email to the administrator
$this->NotifyAdmin = new NotifyAdmin();
// Get the incoming webhook
$input = file_get_contents( "php://input" );
$data = json_decode( $input );
switch( $data->event_type ) {
case "BILLING.SUBSCRIPTION.CANCELLED":
$this->on_subscription_canceled( $data );
break;
}
}
/**
* Sends an email to the user confirming that their subscription was canceled
*/
private function on_subscription_canceled( $data ) {
// For testing purposes, I'm sending an email to the administrator as if an error occurred
$this->NotifyAdmin->setErrMessage( "The webhook worked!" );
$this->NotifyAdmin->send_email();
}
}
Если я имитирую отправку события веб-перехватчика через панель инструментов разработчика, код работает, и электронное письмо администратору с сообщением "The webhook worked!"
успешно отправлено.
Локально мое приложение (React) находится по адресу localhost:3000
. Я использую учетную запись пользователя в песочнице для регистрации и создания подписки Paypal; все работает хорошо, и если я захожу в панель инструментов Paypal песочницы, я вижу, что подписка была успешно создана и активна. Если я отменю подписку с панели управления Paypal, подписка будет успешно отменена, но веб-перехватчик не работает - я не получаю письмо "The webhook worked!"
. Точно так же, если я отменяю подписку из своего приложения (а не из панели управления Paypal), подписка успешно отменяется, но веб-перехватчик не работает.
Итак, вопрос в том, что, как только я убедился, что Paypal может отправлять уведомления на https://d044ce9878a1.ngrok.io?paypal_listener
(потому что симулятор веб-перехватчика работает), все остальное не должно работать, или мне не хватает каких-либо других дополнительных шагов, которые нужно предпринять ?