/** * Load the tansaction object by specified txn_id * @param Mage_Sales_Model_Order_Payment_Transaction $transaction * @param int $orderId * @param int $paymentId * @param string $txnId */ public function loadObjectByTxnId(Mage_Sales_Model_Order_Payment_Transaction $transaction, $orderId, $paymentId, $txnId) { $select = $this->_getLoadByUniqueKeySelect($orderId, $paymentId, $txnId); $data = $this->_getWriteAdapter()->fetchRow($select); $transaction->setData($data); $this->unserializeFields($transaction); $this->_afterLoad($transaction); }
public function testLoadByTxnId() { $order = new Mage_Sales_Model_Order(); $order->loadByIncrementId('100000001'); $model = new Mage_Sales_Model_Order_Payment_Transaction(); $model->setOrderPaymentObject($order->getPayment())->loadByTxnId('invalid_transaction_id'); $this->assertNull($model->getId()); $model->loadByTxnId('trx1'); $this->assertNotNull($model->getId()); }
protected function _toHtml() { $this->setTxnIdHtml($this->escapeHtml($this->_txn->getTxnId())); $this->setParentTxnIdUrlHtml($this->escapeHtml($this->getUrl('*/sales_transactions/view', array('txn_id' => $this->_txn->getParentId())))); $this->setParentTxnIdHtml($this->escapeHtml($this->_txn->getParentTxnId())); $this->setOrderIncrementIdHtml($this->escapeHtml($this->_txn->getOrder()->getIncrementId())); $this->setTxnTypeHtml($this->escapeHtml($this->_txn->getTxnType())); $this->setOrderIdUrlHtml($this->escapeHtml($this->getUrl('*/sales_order/view', array('order_id' => $this->_txn->getOrderId())))); $this->setIsClosedHtml($this->_txn->getIsClosed() ? Mage::helper('sales')->__('Yes') : Mage::helper('sales')->__('No')); $createdAt = strtotime($this->_txn->getCreatedAt()) ? $this->formatDate($this->_txn->getCreatedAt(), Mage_Core_Model_Locale::FORMAT_TYPE_MEDIUM, true) : $this->__('N/A'); $this->setCreatedAtHtml($this->escapeHtml($createdAt)); return parent::_toHtml(); }
/** * Parent transaction getter * May attempt to load it. * * @param bool $shouldLoad * @return Mage_Sales_Model_Order_Payment_Transaction|false */ public function getParentTransaction($shouldLoad = true) { if (null === $this->_parentTransaction) { $this->_verifyThisTransactionExists(); $this->_parentTransaction = false; $parentId = $this->getParentId(); if ($parentId) { $class = get_class($this); $this->_parentTransaction = new $class(); if ($shouldLoad) { $this->_parentTransaction->setOrderPaymentObject($this->_paymentObject)->load($parentId); if (!$this->_parentTransaction->getId()) { $this->_parentTransaction = false; } else { $this->_parentTransaction->hasChildTransaction(true); } } } } return $this->_parentTransaction; }
/** * Re-create order with new transaction returned by Eway * @param $data */ private function __createNewTransaction(Mage_Sales_Model_Order $order, $transId) { // Load transaction $currentTrans = Mage::getModel('sales/order_payment_transaction')->getCollection()->addFieldToFilter('order_id', array('eq' => $order->getEntityId())); foreach ($currentTrans as $t) { } if ($t == null) { $t = new Mage_Sales_Model_Order_Payment_Transaction(); } $trans = new Mage_Sales_Model_Order_Payment_Transaction(); // Load payment object $payment = Mage::getModel('sales/order_payment')->load($t->getPaymentId()); $trans->setOrderPaymentObject($payment); $trans->setOrder($order); $trans->setParentId($t->getTransactionId()); $trans->setOrderId($order->getEntityId()); $trans->setPaymentId($t->getPaymentId()); // Get new TxnId $break = true; for ($i = 0; $i < 100; $i++) { $transId += 1; $newTrans = Mage::getModel('sales/order_payment_transaction')->getCollection()->addFieldToFilter('txn_id', array('eq' => $transId)); if (count($newTrans) == 0) { $break = false; break; } } if ($break) { return false; } $trans->setTxnId($transId); $trans->setParentTxnId($t->getTxnId()); $trans->setTxnType($t->getTxnType()); $trans->setIsClosed($t->getIsClosed()); $trans->setCreatedAt(date('Y-m-d H:i:s')); $trans->save(); }
/** * Check transaction for expiration in PST * * @param Mage_Sales_Model_Order_Payment_Transaction $transaction * @param int $period * @return boolean */ protected function _isTransactionExpired(Mage_Sales_Model_Order_Payment_Transaction $transaction, $period) { $period = intval($period); if (0 == $period) { return true; } $transactionClosingDate = new DateTime($transaction->getCreatedAt(), new DateTimeZone('GMT')); $transactionClosingDate->setTimezone(new DateTimeZone('US/Pacific')); /** * 11:49:00 PayPal transactions closing time */ $transactionClosingDate->setTime(11, 49, 00); $transactionClosingDate->modify('+' . $period . ' days'); $currentTime = new DateTime(null, new DateTimeZone('US/Pacific')); if ($currentTime > $transactionClosingDate) { return true; } return false; }
/** * Update transaction ids for further processing * If no transactions were set before invoking, may generate an "offline" transaction id * * @param string $type * @param Mage_Sales_Model_Order_Payment_Transaction $transactionBasedOn */ protected function _generateTransactionId($type, $transactionBasedOn = false) { if (!$this->getParentTransactionId() && !$this->getTransactionId() && $transactionBasedOn) { $this->setParentTransactionId($transactionBasedOn->getTxnId()); } // generate transaction id for an offline action or payment method that didn't set it if (($parentTxnId = $this->getParentTransactionId()) && !$this->getTransactionId()) { $this->setTransactionId("{$parentTxnId}-{$type}"); } }
/** * Check whether order transaction can be loaded * * @param Mage_Sales_Model_Order_Payment_Transaction $model */ public function salesOrderTransactionLoadAfter($model) { if (!$this->_role->hasWebsiteAccess($model->getOrderWebsiteId())) { $this->_throwLoad(); } }
/** * Re-create order with new transaction returned by Eway * @param $data */ private function __createNewTransaction(Mage_Sales_Model_Order $order, $transId) { // Load transaction $currentTrans = Mage::getModel('sales/order_payment_transaction')->getCollection()->addFieldToFilter('order_id', array('eq' => $order->getEntityId())); foreach ($currentTrans as $t) { } if ($t == null) { $t = new Mage_Sales_Model_Order_Payment_Transaction(); } $trans = new Mage_Sales_Model_Order_Payment_Transaction(); // Load payment object $payment = Mage::getModel('sales/order_payment')->load($t->getPaymentId()); $trans->setOrderPaymentObject($payment); $trans->setOrder($order); $trans->setParentId($t->getTransactionId()); $trans->setOrderId($order->getEntityId()); $trans->setPaymentId($t->getPaymentId()); $trans->setTxnId($transId); $trans->setParentTxnId($t->getTxnId()); $trans->setTxnType($t->getTxnType()); $trans->setIsClosed($t->getIsClosed()); $trans->setCreatedAt(date('Y-m-d H:i:s')); $trans->save(); }
/** * Update transaction ids for further processing * If no transactions were set before invoking, may generate an "offline" transaction id * * @param string $type * @param Mage_Sales_Model_Order_Payment_Transaction $transactionBasedOn */ protected function _generateTransactionId($payment, $type, $transactionBasedOn = false) { if (!$payment->getParentTransactionId() && $transactionBasedOn) { $payment->setParentTransactionId($transactionBasedOn->getTxnId()); } // generate transaction id for an offline action or payment method that didn't set it if ($parentTxnId = $payment->getParentTransactionId()) { $transactionId = "{$parentTxnId}-{$type}"; $collection = Mage::getModel('sales/order_payment_transaction')->getCollection()->setOrderFilter($payment->getOrder())->addPaymentIdFilter($payment->getId())->addTxnTypeFilter($type); if ($collection->count() > 0) { $transactionId .= '-' . ($collection->count() + 1); } $payment->setTransactionId($transactionId); } }
protected function _construct() { parent::_construct(); $this->_init('payperrentals/sales_payment_transaction'); return $this; }
/** * Unserialize additional information if required * @param Mage_Sales_Model_Order_Payment_Transaction $transaction */ public function unserializeFields(Mage_Sales_Model_Order_Payment_Transaction $transaction) { $additionalInformation = $transaction->getData('additional_information'); if (empty($additionalInformation)) { $transaction->setData('additional_information', array()); } elseif (!is_array($additionalInformation)) { $transaction->setData('additional_information', unserialize($additionalInformation)); } }
/** * Determine if a transaction has been voided, using the "txn_type" field * instead of "type" like the native isVoided method does * * @param Mage_Sales_Model_Order_Payment_Transaction $trans * @return bool */ public function transactionIsVoided($trans) { $children = $trans->getChildTransactions(); $result = false; if (Mage_Sales_Model_Order_Payment_Transaction::TYPE_AUTH === $trans->getTxnType()) { foreach ($children as $child) { if (Mage_Sales_Model_Order_Payment_Transaction::TYPE_VOID === $child->getTxnType()) { $result = true; } } } return $result; }