Логическое исключение Laravel Payum Omnipay Bridge

Я получаю эту ошибку от моста omnipay каждый раз, когда пытаюсь зафиксировать платеж по кредитной карте:

Credit card details has to be set explicitly or there has to be an action that supports ObtainCreditCard request.

Вот мой код:

//...
$payum = (new PayumBuilder())
    ->addDefaultStorages()
    ->addGateway('paymentexpress_pxpost', ['factory' => 'omnipay_paymentexpress_pxpost', 'username' => 'some_username', 'password'=>'some_password'])
    ->getPayum();

$card = [
    'number'      => $request->input('cc_number'), 
    'expiryMonth' => $request->input('expiry_month'),
    'expiryYear'  => $request->input('expiry_year'),
    'cvv'         => $request->input('cvv'),
    'name'        => $request->input('card_name')
];

$payment = new ArrayObject(['amount' => '1.00', 'currency' => 'AUD', 'card' => $card]);

if ($reply = $payum->getGateway('paymentexpress_pxpost')->execute(new Capture($payment), true)) {
    // convert reply to http response
}
//...

Функция ->execute() выдает ошибку. Я также сослался на ту же проблему из Ошибка: данные кредитной карты должны быть указаны явно или должно быть действие, поддерживающее запрос ObtainCreditCard.


person user1240207    schedule 16.03.2016    source источник
comment
Почему вы создаете новый билдер payum вместо того, чтобы использовать тот, что есть в пакете laravel. В пакете есть некоторые дополнительные вещи (например, получение действия кредитной карты).   -  person Maksim Kotlyar    schedule 17.03.2016


Ответы (1)


Почему вы создаете новый билдер payum вместо того, чтобы использовать тот, что есть в пакете laravel. В пакете есть некоторые дополнительные вещи (например, получение действия кредитной карты).

В соответствии с документами вы должны сделать что-то вроде это

App::resolving('payum.builder', function(\Payum\Core\PayumBuilder $payumBuilder) {
    $payumBuilder
        ->addGateway('paymentexpress_pxpost', [
            'factory' => 'omnipay_paymentexpress_pxpost', 
            'username' => 'some_username',
            'password'=>'some_password'
        ])
    ;
});
person Maksim Kotlyar    schedule 17.03.2016
comment
Обновление: теперь я использую pxpay вместо pxpost. Я добавил это в провайдере. И столкнулся с новой проблемой. InvalidArgumentException в строке 41 HttpRedirect.php: невозможно перенаправить на пустой URL-адрес. Похоже, он не генерирует правильный URL-адрес, хотя генерируются токены payum. - person user1240207; 18.03.2016
comment
может ошибка в расширении omnipay paymentexpress? - person Maksim Kotlyar; 30.03.2016