コード例 #1
0
 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'));
 }
コード例 #2
0
 /**
  * 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();
 }
コード例 #3
0
 /**
  * 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;
 }
コード例 #4
0
ファイル: Detail.php プロジェクト: shabbirvividads/magento2
 /**
  * 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();
 }
コード例 #5
0
ファイル: Plugin.php プロジェクト: wirecard/magento2-wcp
 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']);
         }
     }
 }
コード例 #6
0
ファイル: Detail.php プロジェクト: aiesh/magento2
 /**
  * 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();
 }
コード例 #7
0
ファイル: Transaction.php プロジェクト: opexsw/magento2
 /**
  * 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;
 }
コード例 #8
0
ファイル: Payment.php プロジェクト: niranjanssiet/magento2
 /**
  * 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}");
     }
 }
コード例 #9
0
ファイル: trans.php プロジェクト: mage2pro/core
/**
 * 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);
}
コード例 #10
0
 /**
  * @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;
 }
コード例 #11
0
ファイル: Payment.php プロジェクト: whoople/magento2-testing
 /**
  * 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;
 }
コード例 #12
0
ファイル: main.php プロジェクト: mage2pro/core
/**
 * 2016-08-19
 * @see df_trans_by_payment()
 * @param T $t
 * @return OP
 */
function dfp_by_trans(T $t)
{
    return dfp_get($t->getPaymentId());
}
コード例 #13
0
ファイル: Express.php プロジェクト: pradeep-wagento/magento2
 /**
  * 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;
 }
コード例 #14
0
ファイル: TransactionMapper.php プロジェクト: aiesh/magento2
 /**
  * @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();
 }
コード例 #15
0
 /**
  * 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));
 }
コード例 #16
0
 /**
  * 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;
 }
コード例 #17
0
 /**
  * @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();
 }
コード例 #18
0
 /**
  * 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;
 }