/** * Converts additional_info from array of strings to array of Transaction\AdditionalInformation * * @param TrasactionModel $transactionModel * @return Transaction\AdditionalInformation[] */ public function getAdditionalInfo(TrasactionModel $transactionModel) { $additionalInfo = []; foreach ($transactionModel->getAdditionalInformation() as $key => $value) { $this->additionalInfoBuilder->populateWithArray([Transaction\AdditionalInformation::KEY => $key, Transaction\AdditionalInformation::VALUE => $value]); $additionalInfo[] = $this->additionalInfoBuilder->create(); } return $additionalInfo; }
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']); } } }
/** * @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; }
/** * 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); }
/** * Get Transaction Additional Parameter Value * @param \Magento\Sales\Model\Order\Payment\Transaction $transaction * @param string $paramName * @return null|string */ public function getTransactionAdditionalInfoValue($transaction, $paramName) { $transactionInformation = $transaction->getAdditionalInformation(\Magento\Sales\Model\Order\Payment\Transaction::RAW_DETAILS); if (is_array($transactionInformation) && isset($transactionInformation[$paramName])) { return $transactionInformation[$paramName]; } return null; }
/** * 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; }