1

我在基于 magento 的购物车中使用 Authorize.net 支付网关。它是仅授权,这意味着我首先对卡进行授权,然后在将产品运送给客户后,我会获取金额。

授权 paygate 以序列化形式将 cc_exp_month、cc_exp_year 等信息存储在表 sales_flat_order_payment 的“additional_information”字段中。

magento 中是否有任何方法可以从附加信息列中简单地检索这些值(cc_exp_month,cc_exp_year)?

4

3 回答 3

3

我相信接下来的两行会成功:

$ccExpMonth = $order->getPayment()->getAdditionalInformation('cc_exp_month');
$ccExpYear = $order->getPayment()->getAdditionalInformation('cc_exp_year');

当然 $order 是 Mage_Sales_Model_Order 的实例。

作为参考,您还可以查看:如何获取 Magento 的付款信息?

于 2012-11-14T09:58:25.510 回答
1

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;
}
于 2013-07-11T17:46:29.273 回答
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');
于 2012-11-14T10:09:43.133 回答