2012-04-13 41 views
1

我已经创建了一个自定义支付网关,但现在我需要处理支付后通知(就像IPN一样),以便为给定交易附加附加信息。如何填写Magento Admin的交易屏幕中的“交易详细信息”键/值表?

我已经尝试了很多不同的组合,包括:

Mage::getModel('sales/order')->load('#id') 
    ->getPayment() 
     ->getTransaction('#id') 
      ->setAdditionalInformation('foo', 'bar') 
       ->save(); 

不产生任何错误(我能检索订单/支付/交易) 但保存操作似乎inoperant 。我也试图通过付款对象保存,但没有运气。

+0

我想这取决于你正在使用的版本,但至少在EE 1 .12.x这似乎是正确的做法,下面的答案不起作用。事实上,由于在adminhtml块中使用了'Mage_Sales_Model_Order_Payment_Transaction :: RAW_DETAILS',我无法获得此信息以显示在管理员中,因此必须用调用没有任何参数的getter的版本进行覆盖。 – mkilmanas 2014-06-27 12:42:56

回答

4

由我自己找到了:P

$payment->getTransaction($id) 
    ->setAdditionalInformation(
     Mage_Sales_Model_Order_Payment_Transaction::RAW_DETAILS, 
     $data 
    )->save(); 
0

如果you're尝试包括paymnet的“授权”阶段的信息,here's一个有用的片段(请变量改为自己的数据!) :

public function authorize(Varien_Object $payment, $amount) { 
    ..... 
    $_data = array('Tranx' => $_transax, 'Auth' => $_autho ...); 
    $payment->setTransactionAdditionalInfo(
       Mage_Sales_Model_Order_Payment_Transaction::RAW_DETAILS, 
       $_data); 
    $payment->setTransactionId($_authid)->setIsTransactionClosed(0); 
    return $this 
    } 
0
$transactin_detail = Mage::getModel('sales/order')->loadByIncrementId($order_id)->getPayment()->getTransaction($transId)->save(); 

echo '<pre>'; 
print_r($transactin_detail); 

 

+0

使用代码标签! – gsamaras 2015-05-26 09:23:07