示例#1
0
 /**
  * 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);
 }
示例#2
0
 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();
 }
示例#4
0
 /**
  * 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;
 }
示例#5
0
 /**
  * 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}");
     }
 }
示例#8
0
 /**
  * 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();
 }
示例#10
0
 /**
  * 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);
     }
 }
示例#11
0
 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));
     }
 }
示例#13
0
文件: Data.php 项目: xiaoguizhidao/bb
 /**
  * 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;
 }