احصل على معلومات إضافية عن المعاملة في استرداد أموال الماجنتو
-
13-12-2019 - |
سؤال
أقوم بإنشاء بوابة دفع مخصصة ولديها في 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;
}
لا تنتمي إلى magento.stackexchange