1

每当我尝试捕获信用卡付款时,我都会从 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()函数是引发错误的函数。我还从错误中提到了相同的问题:必须明确设置信用卡详细信息,或者必须有一个支持获取信用卡请求的操作

4

1 回答 1

0

为什么要创建一个新的 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'
        ])
    ;
});
于 2016-03-17T18:04:09.983 回答