扩展模型以获取信用卡验证码值为Null

时间:2012-05-18 07:24:46

标签: magento

我在现金流的扩张和发展期间 获取信用卡表格信息有问题,但读取的信用卡验证号码(CVN)不足

例如,课程

class Xxx_Yzz_Model_Method_Zcc extends Mage_Payment_Model_Method_Abstract
{
    public function setParams ()
    {
        ....
        $ CcCid = $ this-> getInfoInstance () -> getCcCid ();
        ....
    }
}

我在assignData覆盖中引用了Mage_Payment_Model_Method_Cc,但是徒劳无功

public function assignData ($ data)
{
    if (! ($ data instanceof Varien_Object)) {
        $ data = new Varien_Object ($ data);
    }
    $ info = $ this-> getInfoInstance ();
    $ info-> setCcType ($ data-> getCcType ())
        -> setCcOwner ($ data-> getCcOwner ())
        -> setCcLast4 (substr ($ data-> getCcNumber (), -4))
        -> setCcNumber ($ data-> getCcNumber ())
        -> setCcCid ($ data-> getCcCid ())
        -> setCcExpMonth ($ data-> getCcExpMonth ())
        -> setCcExpYear ($ data-> getCcExpYear ())
        -> setCcSsIssue ($ data-> getCcSsIssue ())
        -> setCcSsStartMonth ($ data-> getCcSsStartMonth ())
        -> setCcSsStartYear ($ data-> getCcSsStartYear ())
    ;
    return $ this;
}

另外,我还参考了Mage_Payment_Model_Method_Cc,prepareSave覆盖,只能获取信用卡号,但没有得到验证码

public function prepareSave ()
{
    $ info = $ this-> getInfoInstance ();
    if ($ this-> _canSaveCc) {
        $ info-> setCcNumberEnc ($ info-> encrypt ($ info-> getCcNumber ()));
    }
    // $ info-> setCcCidEnc ($ info-> encrypt ($ info-> getCcCid ())); 
    // These three lines seems useless
    $ info-> setCcNumber (null) 
        // These three lines seems useless
        -> setCcCid (null); 
        // These three lines seem useless
    return $ this;
}

希望你能帮助我,谢谢你

1 个答案:

答案 0 :(得分:2)

为了保存CVV代码(验证码),prepareSave()方法应如下所示:

public function prepareSave ()
{
    $info = $this->getInfoInstance();
    if ($this->_canSaveCc) {
        $info->setCcNumberEnc($info->encrypt($info->getCcNumber()));
    }

    // Uncommented this line
    $info->setCcCidEnc($info->encrypt($info->getCcCid()));

    $info->setCcNumber(null)->setCcCid(null); 

    return $this;
}

除非在其他地方也禁用了此保存/检索功能,否则应该使Magento保存CVV代码。我认为注释掉的行是用于将CVV代码设置为保存在数据库中的内容。

您可能需要为管理员编辑模板文件,以使其显示在订单管理页面上。我不是肯定的。

在某些时候,Magento停止存储CVV代码的原因是因为它违反了信用卡公司的服务条款。我不建议重新引入这个功能,但是你去了。如果有效,请告诉我(除非您已找到解决方案)。