Интеграция Mollie в Sylius payumbundle

Я пытаюсь интегрировать Молли в пакет sylius payumbundle через мост omnipay. Вот как выглядит моя конфигурация:

sylius_payment:
    gateways:
        mollie: Mollie
payum:
    contexts:
        mollie:
            omnipay_onsite:
                type: Mollie
                options:
                    apiKey: test_...

он работает нормально, однако после процедуры оплаты Молли перенаправляет обратно, и я получаю следующую ошибку:

Параметр transactionReference является обязательным.

Кому-нибудь удалось интегрировать Силиуса с Молли?


person Maarten    schedule 14.05.2015    source источник


Ответы (1)


Похоже, что OffsiteCaptureAction от OmnipayBridge не совместим со шлюзом Omnipay/Mollie.

следующая часть файла OffsiteCaptureAction.php несовместимо:

if (false == $details['returnUrl'] && $request->getToken()) {
    $details['returnUrl'] = $request->getToken()->getTargetUrl();
}

Если вы замените несовместимую часть следующими строками кода, это сработает:

if (false == $details['returnUrl'] && $request->getToken()) {
    $details['returnUrl'] = $request->getToken()->getAfterUrl();
}

if (false == $details['notifyUrl'] && $request->getToken()) {
    $details['notifyUrl'] = $request->getToken()->getTargetUrl();
}

Шлюз Mollie использует notifyUrl в качестве веб-перехватчика для подтверждения платежей. Это самая важная часть платежа. После использования webhook/notifyUrl в фоновом режиме клиент будет перенаправлен на returnUrl/AfterUrl. В исходном фрагменте кода отсутствовал notifyUrl, и клиент перенаправлялся на URL-адрес подтверждения платежа.

Возможно, эти изменения несовместимы с другими шлюзами. Я использую только Молли, так что это не большая проблема для меня.

Я сделал форк для ветки 0.14: https://github.com/goemaere/OmnipayBridge/blob/0.14/src/Action/OffsiteCaptureAction.php#L43-L49

person Slash    schedule 11.08.2015
comment
Итак, необходимо добавить оператор if для URL-адреса уведомления? Я правильно понимаю? - person Maksim Kotlyar; 21.10.2015