1

我使用 Payum 稳定版 0.13 和 Zend 框架 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.

我该如何解决?谢谢!

4

1 回答 1

1

PayumModule 不提供(尚未)内置的获取信用卡操作。所以有两条路可以走。

  • 您可以自己询问信用卡信息。就像创建一个表单而不是渲染它一样。用户填写并提交。您获得该信息并将其与其余信息一起传递给 Payum。Authorize.Net AIM 要求提供“card_num”、“exp_date”字段。

  • 另一种方法是创建一个特定于 zend 的 ObtainCreditCardAction 并使用 addAction 方法将其添加到 Payment 对象。这是 Symfony 的获取信用卡操作示例:https ://github.com/Payum/Payum/blob/master/src/Payum/Core/Bridge/Symfony/Action/ObtainCreditCardAction.php

于 2015-01-06T07:47:40.497 回答