Ошибка: данные кредитной карты должны быть установлены явно, или должно быть действие, поддерживающее запрос ObtainCreditCard

Я использую стабильную версию Payum 0.13 и Zend Framework v2 для осуществления платежей через AuthorizeNet.
Мой код для теста:

    $storage = $this->getServiceLocator()
->get('payum')
->getStorage('LowbiddoPayment\Entity\AgreementDetails');

$details                = $storage->create();
$details['currency']    = 'USD';
$details['amount']      = 100;
$details['card_num']    = new SensitiveValue('4111111111111111');
$details['exp_date']    = new SensitiveValue('10/16');
$details['description'] = 'Test';
$storage->update($details);

$this->getServiceLocator()
->get('payum.security.token_factory')
->setUrlPlugin($this->url());

$doneUrl = $this->url()->fromRoute('payment_done', array('id' => $orderId), array('force_canonical' => true));

$captureToken = $this->getServiceLocator()
->get('payum.security.token_factory')
->createCaptureToken('authorize-net-aim', $details, $doneUrl);

У меня есть эта ошибка

/vendor/payum/payum/src/Payum/AuthorizeNet/Aim/Action/CaptureAction.php:58

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

Как я могу это исправить?
Спасибо!

1

Решение

PayumModule не предоставляет (пока) встроенную функцию ObtainCreditCardAction. Так что есть два пути.

  • Вы можете запросить информацию о кредитной карте самостоятельно. Как создать форму, чем визуализировать ее. Пользователь заполняет его и отправляет. Вы получаете эту информацию и передаете ее Payum вместе с остальной информацией. Authorize.Net AIM запрашивает поля ‘card_num’, ‘exp_date’.

  • Другой способ — создать специфичный для Zend ObtainCreditCardAction и добавить его в объект Payment с помощью метода addAction. Вот пример ObtainCreditCardAction для Symfony: https://github.com/Payum/Payum/blob/master/src/Payum/Core/Bridge/Symfony/Action/ObtainCreditCardAction.php

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector