Magento:使用Authorize.net网关检索付款信息

时间:2012-11-14 08:26:16

标签: magento magento-1.7

我在基于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)?

3 个答案:

答案 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');