Я пытаюсь настроить регулярный платеж в Symfony 3.4, используя Payum Bundle и paypal_express_checkout
шлюз.Код, с которым я работаю, принадлежит стороннему поставщику, который не предоставляет поддержку, и в нем предусмотрена интеграция для разовых платежей, но я пытаюсь выяснить, как изменить его на повторяющиеся.
Идея состоит в том, что пользователь подпишется на определенные округа США, чтобы они могли отображаться там как форма рекламы на сайте.У меня есть сущность Profile
и другая сущность County
, и я присоединяюсь к ним по подписке.Я считаю, что с моим текущим кодом у меня работают текущие платежи, но я все еще не могу понять, как проверить их статус.
Я знаю, что есть уведомление или событие, которое отправляет Paypal, но как мне перехватить это событие?
Я не уверен, что здесь попробовать, потому что я не знаю, с чего начать.Я видел примеры другого кода, но код, с которым я работаю, часто сильно отличается по синтаксису, поэтому я не уверен, как перевести то, что я вижу, в то, что у меня есть в настоящее время.
if ($order->getGateway() == 'paypal') {
$gatewayName = 'paypal_express_checkout';
$storage = $this->get('payum')->getStorage(Payment::class);
$payment = $storage->create();
$payment->setNumber(uniqid());
$payment->setCurrencyCode($this->getParameter('app.currency'));
$payment->setTotalAmount($price * 100);
$payment->setDescription('A description');
$payment->setClientId($this->getUser()->getId());
$payment->setClientEmail('buyer-email@host.tld');
$payment->setDescription('Description here');
$payment->setOrder($order);
$payment->setDetails([
'L_BILLINGTYPE0' => Api::BILLINGTYPE_RECURRING_PAYMENTS,
'L_BILLINGAGREEMENTDESCRIPTION0' => "first item",
]);
$storage->update($payment);
$captureToken = $this->get('payum')->getTokenFactory()->createCaptureToken($gatewayName, $payment, 'order_paypal_completed');
return $this->redirect($captureToken->getTargetUrl());
}
return $this->redirectToRoute('order');
}
У меня также есть гист .Результат, как и должно быть (насколько я могу судить), заключается в том, что я не могу найти, как проверять его состояние ежемесячно.