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

Magento 扩展模型以获取信用卡验证码值为空,magento,Magento,我正在扩大和发展现金流 获取信用卡表单信息存在问题,但读取的信息少于信用卡验证号(CVN) 例如,课堂 class Xxx_Yzz_Model_Method_Zcc extends Mage_Payment_Model_Method_Abstract { public function setParams () { .... $ CcCid = $ this-> getInfoInstance () -> getCcCid ();

我正在扩大和发展现金流 获取信用卡表单信息存在问题,但读取的信息少于信用卡验证号(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 override,只能获取信用卡号码,但没有获取验证码

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;
}

希望您能帮助我,谢谢

为了保存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代码,因为它违反了信用卡公司的服务条款。我不建议您重新引入此功能,但您可以这样做。让我知道这是否有效(除非您已经找到解决方案)。

看起来不错,但我想您还需要在sales\u flat\u order\u payment table中创建一个cc\u cid\u enc列。