예제 #1
0
 /**
  * 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;
 }
예제 #2
0
 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']);
         }
     }
 }
예제 #3
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;
 }
예제 #4
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);
}
예제 #5
0
 /**
  * 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;
 }
예제 #6
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;
 }