$платеж->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()
неверно?
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;
}