Ошибка: данные кредитной карты должны быть указаны явно или должно быть действие, поддерживающее запрос 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.

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


person Enustik    schedule 05.01.2015    source источник


Ответы (1)


PayumModule не предоставляет (пока) встроенного действия ObtainCreditCardAction. Итак, есть два пути.

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

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

person Maksim Kotlyar    schedule 06.01.2015
comment
Спасибо. Я выбрал первый вариант. Мне помогло. - person Enustik; 12.01.2015