在这里使用最新的Magento 2.3.0,其中有一个自定义模块,可通过API调用以编程方式创建订单。
一切正常,到目前为止,我仅设置了payment method
(用于测试/开发人员),没有添加任何信用卡详细信息。
现在,我正在模拟通过Authorize.net进行的信用卡付款。使用正确的沙箱帐户设置配置的Mage 2管理员,并在自定义模块的订单中添加了信用卡详细信息,但是该交易未显示在我的Auth.net沙箱帐户中-仅适用于Authorization
,不是用于捕获/充电。
仔细检查后,我认为抄送细节未添加到订单中(仅添加到报价中),因此提交订单时未授权交易...(这是我的假设)
这是我用于将cc详细信息添加到报价中的代码:
$quote->getPayment()->importData(
[
'method' => "authorizenet_directpost",
'cc_type' => $orderData['cc_data']['cc_type'],
'cc_owner' => $orderData['cc_data']['cc_holder'],
'cc_last_4' => substr($orderData['cc_data']['cc_num'], -4),
'cc_number' => $orderData['cc_data']['cc_num'],
'cc_cid' => $orderData['cc_data']['cc_ccv'],
'cc_exp_month' => $orderData['cc_data']['cc_exp_month'],
'cc_exp_year' => $orderData['cc_data']['cc_exp_year']
]
);
第一个问题:
(1)这些是cc详细信息的正确字段名称吗? (2)是否需要所有这些字段(例如cc_type)?
然后将报价转换为订单:
$quote->collectTotals()->save();
$order = $this->quoteManagement->submit($quote);
$this->orderSender->send($order);
同样,创建订单时不会出现任何错误,并且在管理员订单详细信息视图中,我可以看到付款信息为Credit Card Direct Post (Authorize.net)
,但根本没有抄送详细信息。
quote_payment
数据库表具有抄送数据。
最后的问题:
(3)为什么抄送详细信息未正确添加到订单中,并且授权未完成? (4)是否需要将cc详细信息添加到订单对象而不是报价对象?
注意:当我尝试向这些测试订单开具发票时,它失败并带有Gateway error: Credit card number is required.
,因此很明显订单中的抄送详细信息丢失了...
谢谢!