احصل على معلومات إضافية عن المعاملة في استرداد أموال الماجنتو

magento.stackexchange https://magento.stackexchange.com//questions/79393

سؤال

أقوم بإنشاء بوابة دفع مخصصة ولديها في capture payment في Magento عندما تتم عملية الدفع من خلال:

$payment->setTransactionAdditionalInfo                     
           (Mage_Sales_Model_Order_Payment_Transaction::RAW_DETAILS,array
('TransactionGUId'=>$result['transaction_guid'], 'TransactionId'=>$result
['transaction_id'],'Messages'=>$result['messages'])); 

الذي يكتب معلومات إضافية لمعاملة الدفع.أحتاج إلى استرداد هذه المعلومات الإضافية لإرسالها إلى بوابة الدفع.حاولت:

 $collection = Mage::getModel('sales/order_payment_transaction')->getCollection()
 ->addAttributeToFilter('order_id', array('eq' => $payment->getOrder()->getEntityId()))
 ->addAttributeToFilter('txn_type', array('eq' => 'capture'))
        ->addPaymentIdFilter($payment->getId());


       $transaction = $collection->getAdditionalInformation('transactionId');
        $transactionGUId = $collection->getAdditionalInformation('transactionGUId');

لكنها ترجع خطأ.

هل كانت مفيدة؟

المحلول

تحتاج إلى الحصول على الكائن الفردي من المجموعة

يحاول

 $collection = Mage::getModel('sales/order_payment_transaction')
                  ->getCollection()
                  ->addAttributeToFilter('order_id',  
                      array('eq' => $payment->getOrder()->getEntityId()))
                  ->addAttributeToFilter('txn_type', array('eq' => 'capture'))
                  ->addPaymentIdFilter($payment->getId());


 foreach($collection as $transaction){
       print_r($transaction->getAdditionalInformation(Mage_Sales_Model_Order_Payment_Transaction::RAW_DETAILS));
 }

تحديث - مفتاحك هو Mage_Sales_Model_Order_Payment_Transaction::RAW_DETAILS

من أجل الحصول على القيمة الفردية حاول

$rawValue = $transaction->getAdditionalInformation(Mage_Sales_Model_Order_Payment_Transaction::RAW_DETAIL)
if(is_array($rawValue) && array_key_exist(...)){
    $transactionGUId = $rawValue['TransactionGUId']; 
    ...
}

ألقِ نظرة على /app/code/core/Mage/Sales/Model/Order/Payment/Transaction.php،

 /**
 * Additional information setter
 * Updates data inside the 'additional_information' array
 * Doesn't allow to set arrays
 *
 * @param string $key
 * @param mixed $value
 * @return Mage_Sales_Model_Order_Payment_Transaction
 * @throws Mage_Core_Exception
 */
public function setAdditionalInformation($key, $value)
{
    if (is_object($value)) {
        Mage::throwException(Mage::helper('sales')->__('Payment transactions disallow storing objects.'));
    }
    $info = $this->_getData('additional_information');
    if (!$info) {
        $info = array();
    }
    $info[$key] = $value;
    return $this->setData('additional_information', $info);
}

/**
 * Getter for entire additional_information value or one of its element by key
 * @param string $key
 * @return array|null|mixed
 */
public function getAdditionalInformation($key = null)
{
    $info = $this->_getData('additional_information');
    if (!$info) {
        $info = array();
    }
    if ($key) {
        return (isset($info[$key]) ? $info[$key] : null);
    }
    return $info;
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى magento.stackexchange
scroll top