检索卡验证号在Magento中产生空结果

时间:2014-10-01 22:11:39

标签: php magento

我为我们的一家电子商务公司继承了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开发人员的帮助都会很棒。

1 个答案:

答案 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并将成功页面用作成功页面。