我在基于magento的购物车中使用Authorize.net支付网关。它仅授权,这意味着我首先授权该卡,后续运送产品给客户我捕获金额。
授权paygate以序列化形式在表sales_flat_order_payment中的“additional_information”字段中存储cc_exp_month,cc_exp_year等信息。
magento中是否有任何方法只需从additional_information列中检索这些值(cc_exp_month,cc_exp_year)?
答案 0 :(得分:3)
我相信接下来的2行会起到作用:
$ccExpMonth = $order->getPayment()->getAdditionalInformation('cc_exp_month');
$ccExpYear = $order->getPayment()->getAdditionalInformation('cc_exp_year');
当然$ order是Mage_Sales_Model_Order的实例。
作为参考,您还可以查看:how to get payment information on Magento?
答案 1 :(得分:1)
magento中是否有任何方法可以从additional_information列中简单地检索这些值(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;
}
答案 2 :(得分:0)
尝试
$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');