public function testGetHtmlTxnIdIsNull() { $this->eventManagerMock->expects($this->once())->method('dispatch'); $this->transaction->setData('txn_id', 'test'); $this->assertEquals('test', $this->transaction->getHtmlTxnId()); $this->assertEquals(null, $this->transaction->getData('html_txn_id')); }
/** * Update transaction ids for further processing * If no transactions were set before invoking, may generate an "offline" transaction id * * @param OrderPaymentInterface $payment * @param string $type * @param bool|Transaction $transactionBasedOn * @return string|null */ public function generateTransactionId(OrderPaymentInterface $payment, $type, $transactionBasedOn = false) { if (!$payment->getParentTransactionId() && !$payment->getTransactionId() && $transactionBasedOn) { $payment->setParentTransactionId($transactionBasedOn->getTxnId()); } // generate transaction id for an offline action or payment method that didn't set it if (($parentTxnId = $payment->getParentTransactionId()) && !$payment->getTransactionId()) { return "{$parentTxnId}-{$type}"; } return $payment->getTransactionId(); }
/** * Load the transaction object by specified txn_id * * @param \Magento\Sales\Model\Order\Payment\Transaction $transaction * @param int $orderId * @param int $paymentId * @param string $txnId * @return \Magento\Sales\Model\Order\Payment\Transaction */ public function loadObjectByTxnId(\Magento\Sales\Model\Order\Payment\Transaction $transaction, $orderId, $paymentId, $txnId) { $select = $this->_getLoadByUniqueKeySelect($orderId, $paymentId, $txnId); $data = $this->getConnection()->fetchRow($select); if (!$data) { return $transaction; } $transaction->setData($data); $this->unserializeFields($transaction); $this->_afterLoad($transaction); return $transaction; }
/** * Render block html * * @return string */ protected function _toHtml() { $this->setTxnIdHtml($this->escapeHtml($this->_txn->getTxnId())); $this->setParentTxnIdUrlHtml($this->escapeHtml($this->getUrl('sales/transactions/view', ['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', ['order_id' => $this->_txn->getOrderId()]))); $this->setIsClosedHtml($this->_txn->getIsClosed() ? __('Yes') : __('No')); $createdAt = strtotime($this->_txn->getCreatedAt()) ? $this->formatDate($this->_txn->getCreatedAt(), \IntlDateFormatter::MEDIUM, true) : __('N/A'); $this->setCreatedAtHtml($this->escapeHtml($createdAt)); return parent::_toHtml(); }
public function beforeGetLayout(\Magento\Sales\Block\Adminhtml\Transactions\Detail $subject) { $this->_txn = $this->_coreRegistry->registry('current_transaction'); if (!$this->_txn) { return; } if ($this->_txn->getTxnType() != Transaction::TYPE_REFUND) { return; } /** @var \Magento\Sales\Model\Order\Payment\Interceptor $payment */ $payment = $this->orderPaymentRepository->get($this->_txn->getPaymentId()); $methodInstance = $payment->getMethodInstance(); if ($methodInstance instanceof \Wirecard\CheckoutPage\Model\AbstractPayment) { $addInfo = $this->_txn->getAdditionalInformation('raw_details_info'); if (isset($addInfo['orderNumber']) && isset($addInfo['creditNumber'])) { $fetchUrl = $this->_urlBuilder->getUrl('wirecardcheckoutpage/transactions/refundreversal', ['_current' => true]); $subject->addButton('refundreversal', ['label' => __('Refund Reversal'), 'onclick' => "setLocation('{$fetchUrl}')", 'class' => 'button']); } } }
/** * Render block html * * @return string */ 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() ? __('Yes') : __('No')); $createdAt = strtotime($this->_txn->getCreatedAt()) ? $this->formatDate($this->_txn->getCreatedAt(), \Magento\Framework\Stdlib\DateTime\TimezoneInterface::FORMAT_TYPE_MEDIUM, true) : __('N/A'); $this->setCreatedAtHtml($this->escapeHtml($createdAt)); return parent::_toHtml(); }
/** * Parent transaction getter * May attempt to load it. * * @param bool $shouldLoad * @return bool|\Magento\Sales\Model\Order\Payment\Transaction */ public function getParentTransaction($shouldLoad = true) { if (null === $this->_parentTransaction) { $this->_verifyThisTransactionExists(); $this->_parentTransaction = false; $parentId = $this->getParentId(); if ($parentId) { $this->_parentTransaction = $this->_transactionFactory->create(); if ($shouldLoad) { $this->_parentTransaction->setOrderPaymentObject($this->_paymentObject)->load($parentId); if (!$this->_parentTransaction->getId()) { $this->_parentTransaction = false; } else { $this->_parentTransaction->hasChildTransaction(true); } } } } return $this->_parentTransaction; }
/** * Update transaction ids for further processing * If no transactions were set before invoking, may generate an "offline" transaction id * * @param string $type * @param bool|Transaction $transactionBasedOn * @return void */ 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}"); } }
/** * 2016-07-13 * @param T $t * @param string|null $key [optional] * @param mixed|null $default [optional] * @return array(string => mixed)|mixed */ function df_trans_raw_details(T $t, $key = null, $default = null) { /** @var array(string => mixed)|mixed $result */ $result = $t->getAdditionalInformation(T::RAW_DETAILS); return null === $key ? $result : dfa($result, $key, $default); }
/** * @param Transaction $transaction * @return array */ private function getPreparedTransactionData(Transaction $transaction) { $additionalInfo = []; foreach ($transaction->getAdditionalInformation() as $value) { $additionalInfo[] = $value; } $expectedData = ['transaction_id' => (int) $transaction->getId()]; if ($transaction->getParentId() !== null) { $expectedData['parent_id'] = (int) $transaction->getParentId(); } $expectedData = array_merge($expectedData, ['order_id' => (int) $transaction->getOrderId(), 'payment_id' => (int) $transaction->getPaymentId(), 'txn_id' => $transaction->getTxnId(), 'parent_txn_id' => $transaction->getParentTxnId() ? (string) $transaction->getParentTxnId() : '', 'txn_type' => $transaction->getTxnType(), 'is_closed' => (int) $transaction->getIsClosed(), 'additional_information' => ['data'], 'created_at' => $transaction->getCreatedAt(), 'child_transactions' => []]); return $expectedData; }
/** * Import details data of specified transaction * * @param Transaction $transactionTo * @return $this */ public function importTransactionInfo(Transaction $transactionTo) { $method = $this->getMethodInstance(); $method->setStore($this->getOrder()->getStoreId()); $data = $method->fetchTransactionInfo($this, $transactionTo->getTxnId()); if ($data) { $transactionTo->setAdditionalInformation(Transaction::RAW_DETAILS, $data); } return $this; }
/** * 2016-08-19 * @see df_trans_by_payment() * @param T $t * @return OP */ function dfp_by_trans(T $t) { return dfp_get($t->getPaymentId()); }
/** * Check transaction for expiration in PST * * @param Transaction $transaction * @param int $period * @return bool */ protected function _isTransactionExpired(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; }
/** * @param TrasactionModel $transactionModel * @param bool $lazy * @return Transaction */ public function extractDto(TrasactionModel $transactionModel, $lazy = false) { /** @var TransactionBuilder $transactionBuilder */ $transactionBuilder = $this->transactionBuilderFactory->create(); $transactionBuilder->populateWithArray($transactionModel->getData()); $transactionBuilder->setAdditionalInformation($this->getAdditionalInfo($transactionModel)); $transactionBuilder->setIncrementId($this->getIncrementId($transactionModel)); $transactionBuilder->setChildTransactions($lazy ? [] : $this->getChildTransactions($transactionModel)); return $transactionBuilder->create(); }
/** * Set transaction additional information * @param \Magento\Sales\Model\Order\Payment\Transaction $transaction * @param $responseObject */ public function setTransactionAdditionalInfo($transaction, $responseObject) { $transaction->setAdditionalInformation(\Magento\Sales\Model\Order\Payment\Transaction::RAW_DETAILS, $this->getArrayFromGatewayResponse($responseObject)); }
/** * Revert refund * * @param \Magento\Framework\DataObject|InfoInterface|\Magento\Sales\Model\Order\Payment $payment * @param Transaction $transaction * * @return $this * @throws \Exception * @throws LocalizedException */ public function refundReversal(\Magento\Payment\Model\InfoInterface $payment, Transaction $transaction) { $order = $payment->getOrder(); $this->_logger->debug(__METHOD__); $addInfo = $transaction->getAdditionalInformation('raw_details_info'); if (!isset($addInfo['orderNumber']) || !isset($addInfo['creditNumber'])) { throw new LocalizedException($this->_dataHelper->__('Unable to revert refund, creditNumber and/or orderNumber not found!')); } if (!$this->_dataHelper->isBackendAvailable()) { return $this; } $backendClient = $this->_dataHelper->getBackendClient(); $ret = $backendClient->refundReversal($addInfo['orderNumber'], $addInfo['creditNumber']); if ($ret->hasFailed()) { $msg = implode(',', array_map(function ($e) { /** @var \WirecardCEE_QMore_Error $e */ return $e->getConsumerMessage(); }, $ret->getErrors())); $this->_logger->debug(__METHOD__ . ':' . $msg); throw new \Exception($msg); } $transactionId = $transaction->getTxnId() . '-reversal'; $payment->setTransactionId($transactionId); /** @var \Magento\Sales\Model\Order\Payment\Transaction $transaction */ $transaction = $this->_transactionBuilder->setPayment($payment)->setOrder($order)->setTransactionId($transactionId)->build(Transaction::TYPE_VOID); $transaction->setParentId($transaction->getTransactionId()); $transaction->save(); $payment->addTransactionCommentsToOrder($transaction, 'refund reversal: orderNumber:' . $addInfo['orderNumber'] . ' creditNumber:' . $addInfo['creditNumber']); $order->save(); return $this; }
/** * @param TrasactionModel $transactionModel * @param bool $lazy * @return Transaction */ public function extractDto(TrasactionModel $transactionModel, $lazy = false) { /** @var TransactionBuilder $transactionBuilder */ $transactionBuilder = $this->transactionBuilderFactory->create(); $transactionBuilder->setTransactionId($transactionModel->getTransactionId()); $transactionBuilder->setParentId($transactionModel->getParentId()); $transactionBuilder->setOrderId($transactionModel->getOrderId()); $transactionBuilder->setTxnId($transactionModel->getTxnId()); $transactionBuilder->setPaymentId($transactionModel->getPaymentId()); $transactionBuilder->setParentTxnId($transactionModel->getParentTxnId()); $transactionBuilder->setTxnType($transactionModel->getTxnType()); $transactionBuilder->setIsClosed($transactionModel->getIsClosed()); $transactionBuilder->setAdditionalInformation($this->getAdditionalInfo($transactionModel)); $transactionBuilder->setCreatedAt($transactionModel->getCreatedAt()); $transactionBuilder->setMethod($transactionModel->getMethod()); $transactionBuilder->setIncrementId($this->getIncrementId($transactionModel)); $transactionBuilder->setChildTransactions($lazy ? [] : $this->getChildTransactions($transactionModel)); return $transactionBuilder->create(); }
/** * Register entity * * @param Transaction $object * @return TransactionRepository */ public function register(Transaction $object) { if ($object->getId() && !isset($this->registry[$object->getId()])) { $this->registry[$object->getId()] = $object; } return $this; }