$платеж->getccnumber()?


$payment имеет Mage_Sales_Model_Order_Payment, который расширяет Mage_Payment_Model_Info, который, в свою очередь, расширяет Mage_Core_Model_Abstract.

На EE 1.12 нет столбца cc_number (cc_number_enc существует) в sales_flat_order_payment, и я также не вижу никакой определенной функции getCcNumner(). Есть расширение, которое вызывает payment->getCcNumber(), и оно возвращает значение null. Я вижу и другие основные коды, которые также вызывают эту функцию..

Я что-то здесь упускаю, или это getCcNumber() неверно?

Author: David Manners, 2013-11-15

1 answers

В классе Mage_Payment_Model_Info, который имеет дело с информацией об оплате. Существует пользовательская функция getData. Это займет сохраненное закодированное поле cc_number и расшифрует его, чтобы пользователь мог позвонить getCcNumber()

public function getData($key='', $index=null)
{
    if ('cc_number'===$key) {
        if (empty($this->_data['cc_number']) && !empty($this->_data['cc_number_enc'])) {
            $this->_data['cc_number'] = $this->decrypt($this->getCcNumberEnc());
        }
    }
    if ('cc_cid'===$key) {
        if (empty($this->_data['cc_cid']) && !empty($this->_data['cc_cid_enc'])) {
            $this->_data['cc_cid'] = $this->decrypt($this->getCcCidEnc());
        }
    }
    return parent::getData($key, $index);
}

Когда он сохраняется, есть реверс этого и шифрование. Это делается в соответствии с 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()));
    $info->setCcNumber(null)
        ->setCcCid(null);
    return $this;
}
 2
Author: David Manners, 2013-11-15 19:54:01