logger = $logger; $this->subjectReader = $subjectReader; $this->coreHelper = $coreHelper; $this->messageManager = $messageManager; $this->pendingRefundFactory = $pendingRefundFactory; } /** * @param array $handlingSubject * @param array $response */ public function handle(array $handlingSubject, array $response) { if (isset($response['status']) && !$response['status']) { $this->messageManager->addErrorMessage( __('The refund amount or the Amazon Order ID is incorrect.') ); } else { $paymentDO = $this->subjectReader->readPayment($handlingSubject); $payment = $paymentDO->getPayment(); $payment->setTransactionId($response['refund_id']); if ($response['state'] == 'Pending') { $this->pendingRefundFactory->create() ->setRefundId($response['refund_id']) ->setPaymentId($payment->getEntityId()) ->setOrderId($payment->getOrder()->getId()) ->save(); } $this->messageManager->addSuccessMessage(__('Amazon Pay refund successful.')); } } }