我为我们的一家电子商务公司继承了Magento服务器,我们发生了一些欺诈行为。我们使用自定义API进行CC处理和数据库管理等,我们必须将所有订购和付款变量分配到Magento值的此API中。
我们想要添加卡片验证字段,因为到目前为止我们还没有要求它。无论如何,我激活了Magento配置的Request Card Security Code
部分中的Payment Methods
字段,它现在显示在结账屏幕上...但是,当点击提交时我尝试检索在$payment->getCcCid()
上使用success.phtml
安全代码的值为空。当我进行调试时(如其他SO帖子$_order->getPayment()->debug()
所示),它无法在任何地方显示。我有print_r($payment)
来查看该值是否包含在某个地方,但唉不是。
调查提交
$_order->getPayment()->debug()
产生:
Array
(
[entity_id] => 4619
[parent_id] => 4619
[base_shipping_amount] => 0.0000
[shipping_amount] => 0.0000
[base_amount_ordered] => 74.9500
[amount_ordered] => 74.9500
[cc_exp_month] => 3
[method] => ccsave
[cc_last4] => 1111
[cc_owner] => Andrew
[cc_type] => VI
[cc_exp_year] => 2016
[cc_number_enc] => xSIyni0Ndvnaa4RZxLZS/w==
[additional_information] => Array
(
)
)
../模板/结帐/ success.phtml
我可以检索所有这些其他字段,没问题,安全代码正在逃避我。我问那些最初工作过的人,他们的回答是“#34;那应该有效”#34;在谈到我所做的检索时:
// Value is assigned properly
$CC_NAME_1 = $payment->getCcOwner();
// Value is assigned properly
$CC_NUM_1 = preg_replace("[^0-9]", "", $payment->getCcNumber());
// Value is blank
$CSVCODE_1 = $payment->getCcCid();
在旁注中,分配$payment->getCcCid()
时没有错误,因此它是空白的。任何可能知道我缺少什么的专业Magento开发人员的帮助都会很棒。
答案 0 :(得分:0)
正如评论中所建议的那样,我必须从以下位置检索并转发CID:
/app/code/core/Mage/Checkout/controllers/OnepageController.php
对于任何有兴趣的人来说,这就是流程:
我创建了一个自定义类,添加了salt
并将其添加到CID,对此新值进行编码,将其保存到session
变量,然后在success.php
页面上,解码后,拆分salt
,将CID分配给session
中的变量,销毁会话变量,然后将新的CID变量转发给自定义API
进行第三方处理。 / p>
感谢所评论的人,所提供的信息有助于解决这个问题。
编辑 - 2016/10:
自发布此内容以来,我已重新创建此项目并希望希望更好地实现它。我在使用sales_order_place_before
事件提交付款时在事件上使用了Observer,允许我在此时应用所有API并将成功页面用作成功页面。