1

我在扩展和发展现金流期间 获取信用卡表格的信息时出现问题,但读取不到信用卡验证号(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;
}

希望你能帮助我,谢谢

4

1 回答 1

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

于 2012-08-30T17:03:42.283 回答