我在基于 magento 的购物车中使用 Authorize.net 支付网关。它是仅授权,这意味着我首先对卡进行授权,然后在将产品运送给客户后,我会获取金额。
授权 paygate 以序列化形式将 cc_exp_month、cc_exp_year 等信息存储在表 sales_flat_order_payment 的“additional_information”字段中。
magento 中是否有任何方法可以从附加信息列中简单地检索这些值(cc_exp_month,cc_exp_year)?
我在基于 magento 的购物车中使用 Authorize.net 支付网关。它是仅授权,这意味着我首先对卡进行授权,然后在将产品运送给客户后,我会获取金额。
授权 paygate 以序列化形式将 cc_exp_month、cc_exp_year 等信息存储在表 sales_flat_order_payment 的“additional_information”字段中。
magento 中是否有任何方法可以从附加信息列中简单地检索这些值(cc_exp_month,cc_exp_year)?
我相信接下来的两行会成功:
$ccExpMonth = $order->getPayment()->getAdditionalInformation('cc_exp_month');
$ccExpYear = $order->getPayment()->getAdditionalInformation('cc_exp_year');
当然 $order 是 Mage_Sales_Model_Order 的实例。
作为参考,您还可以查看:如何获取 Magento 的付款信息?
magento 中是否有任何方法可以从附加信息列中简单地检索这些值(cc_exp_month,cc_exp_year)?
不,没有。您需要深入了解 additional_information 数组。这是我添加的用于检索 cc_type 值的方法。它可以很容易地调整为返回所有数据或只是另一部分:
public function getCcType(Mage_Sales_Model_Order_Payment $payment)
{
if(count($payment->getAdditionalInformation()))
{
foreach($payment->getAdditionalInformation() as $auth_cards)
{
foreach($auth_cards as $ac_id)
{
if(isset($ac_id['cc_type']))
{
return $ac_id['cc_type'];
}
}
}
}
return false;
}
尝试
$order_id = 113
$order = Mage::getModel('sales/order')->load($order_id);
如果存储信息 cc_exp_month 和 cc_exp_year
$ccExpMonth = $order->getPayment()->getCcExpMonth();
$ccExpYear = $order->getPayment()->getCcExpYear();
如果信息存储在附加信息中
$ccExpMonth = $order->getPayment()->getAdditionalInformation('cc_exp_month');
$ccExpYear = $order->getPayment()->getAdditionalInformation('cc_exp_year');