/** * @param string $payuplOrderId * @return bool */ public function getOrderIdIfCanRepeat($payuplOrderId = null) { if ($payuplOrderId && $this->transactionResource->checkIfNewestByPayuplOrderId($payuplOrderId)) { return $this->transactionResource->getOrderIdByPayuplOrderId($payuplOrderId); } return false; }
protected function _prepareSpecificInformation($transport = null) { /** * @var $client \Orba\Payupl\Model\Client */ $transport = parent::_prepareSpecificInformation($transport); $orderId = $this->getInfo()->getParentId(); $status = $this->transactionResource->getLastStatusByOrderId($orderId); $client = $this->clientFactory->create(); $statusDescription = $client->getOrderHelper()->getStatusDescription($status); $transport->setData((string) __('Status'), $statusDescription); return $transport; }
/** * @param string $payuplOrderId * @param string $status * @param bool $close * @throws LocalizedException */ public function updateStatus($payuplOrderId, $status, $close = false) { /** * @var $transaction \Magento\Sales\Model\Order\Payment\Transaction */ $id = $this->transactionResource->getIdByPayuplOrderId($payuplOrderId); if (!$id) { throw new LocalizedException(new Phrase('Transaction ' . $payuplOrderId . ' not found.')); } $transaction = $this->transactionRepository->get($id); if ($close) { $transaction->setIsClosed(1); } $rawDetailsInfo = $transaction->getAdditionalInformation(\Magento\Sales\Model\Order\Payment\Transaction::RAW_DETAILS); $rawDetailsInfo['status'] = $status; $transaction->setAdditionalInformation(\Magento\Sales\Model\Order\Payment\Transaction::RAW_DETAILS, $rawDetailsInfo)->save(); }
public function testGetLastStatusByOrderSuccess() { $orderId = 1; $status = 'status'; $resultTableRow = ['additional_information' => serialize([\Magento\Sales\Model\Order\Payment\Transaction::RAW_DETAILS => ['status' => $status]])]; $this->internalTestGetLastByOrderId($orderId, $resultTableRow); $this->assertEquals($status, $this->model->getLastStatusByOrderId($orderId)); }
/** * @inheritDoc */ public function create($orderId = '', $description = '', $amount = null) { $realPayuplOrderId = $this->transactionResource->getExtOrderIdByPayuplOrderId($orderId); if ($realPayuplOrderId) { $posId = $this->orderDataGetter->getPosId(); $ts = $this->orderDataGetter->getTs(); $sig = $this->orderDataGetter->getSigForOrderRetrieve(['pos_id' => $posId, 'session_id' => $realPayuplOrderId, 'ts' => $ts]); $authData = ['posId' => $posId, 'sessionId' => $realPayuplOrderId, 'ts' => $ts, 'sig' => $sig]; $getResult = $this->methodCaller->call('refundGet', [$authData]); if ($getResult) { $createResult = $this->methodCaller->call('refundAdd', [$authData, ['refundsHash' => $getResult->refsHash, 'amount' => $amount, 'desc' => $description, 'autoData' => true]]); if ($createResult < 0) { $this->logger->error('Refund error ' . $createResult . ' for transaction ' . $orderId); } return $createResult === 0; } } return false; }
/** * @inheritDoc */ public function processNotification($payuplOrderId, $status, $amount) { /** * @var $result \Magento\Framework\Controller\Result\Raw */ $newest = $this->transactionResource->checkIfNewestByPayuplOrderId($payuplOrderId); $this->orderProcessor->processStatusChange($payuplOrderId, $status, $amount, $newest); $result = $this->rawResultFactory->create(); $result->setHttpResponseCode(200)->setContents('OK'); return $result; }
/** * @param \Magento\Payment\Model\InfoInterface $payment * @param float $amount * @return $this */ public function refund(\Magento\Payment\Model\InfoInterface $payment, $amount) { /** * @var $order \Magento\Sales\Model\Order */ $order = $payment->getOrder(); $payuplOrderId = $this->transactionResource->getLastPayuplOrderIdByOrderId($order->getId()); $client = $this->clientFactory->create(); $client->refundCreate($payuplOrderId, __('Refund for order # %1', $order->getIncrementId()), $amount * 100); return $this; }
/** * @param \Magento\Sales\Model\Order $order * @return bool */ public function validateNoTransactions(\Magento\Sales\Model\Order $order) { return $this->transactionResource->getLastPayuplOrderIdByOrderId($order->getId()) === false; }
/** * @param \Magento\Sales\Model\Order $order * @return string */ public function generate(\Magento\Sales\Model\Order $order) { $try = $this->transactionResource->getLastTryByOrderId($order->getId()) + 1; return $order->getIncrementId() . ':' . $this->dateTime->timestamp() . ':' . $try; }