Проверка статуса регулярного платежа в Payum Bundle / PayPal Express Checkout - PullRequest
0 голосов
/ 27 декабря 2018

Я пытаюсь настроить регулярный платеж в 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');
    }

У меня также есть гист .Результат, как и должно быть (насколько я могу судить), заключается в том, что я не могу найти, как проверять его состояние ежемесячно.

...