Я пытаюсь создать собственный шлюз и следил за множеством различных документов. Вчера я обнаружил новый Payum/Skeleton, начал с него и последовал этому примеру. Хотя у меня есть проблема при перенаправлении на страницу захвата, я получаю следующие два исключения:
Неустранимая ошибка: необработанное исключение «Payum\Core\Exception\RequestNotSupportedException» с сообщением «Request Capture{model: Identity} не поддерживается. Убедитесь, что расширение хранилища для «Payum\Core\Model\Payment» зарегистрировано на шлюзе. Убедитесь, что метод поиска хранилища возвращает экземпляр с идентификатором «5678ff3e481ba». Убедитесь, что шлюз поддерживает запросы и есть действие, которое поддерживает этот запрос (метод возвращает значение true). Может быть ошибка, поэтому поищите связанную проблему в системе отслеживания проблем». в /home/vagrant/code/payumdibs/vendor/payum/core/Payum/Core/Exception/RequestNotSupportedException.php в строке 57
И
Payum\Core\Exception\RequestNotSupportedException: Request Capture{model: Identity} не поддерживается. Убедитесь, что расширение хранилища для «Payum\Core\Model\Payment» зарегистрировано на шлюзе. Убедитесь, что метод поиска хранилища возвращает экземпляр с идентификатором «5678ff3e481ba». Убедитесь, что шлюз поддерживает запросы и есть действие, которое поддерживает этот запрос (метод возвращает значение true). Может быть ошибка, поэтому поищите связанную проблему в системе отслеживания проблем. в /home/vagrant/code/payumdibs/vendor/payum/core/Payum/Core/Exception/RequestNotSupportedException.php в строке 57
Я использовал x-debug и выяснил, что когда CaptureAction::supports вызывается, $request->getModel() не является экземпляром \ArrayAccess и поэтому возвращает false.
При использовании стандартных платежных шлюзов все работает нормально, а при использовании кастомных нет.
Моя конфигурация:
$payum = (new PayumBuilder())
->addDefaultStorages()
->addGatewayFactory('paypal', new \Acme\Paypal\PaypalGatewayFactory([]))
->addGateway('offline', [
'factory' => 'offline',
])->addGateway('paypal', [
'factory' => 'paypal',
'sandbox' => true,
])->getPayum();
У кого-нибудь есть идеи, что происходит не так?