coreHelper = $coreHelper; $this->productMetaData = $productMetadata; $this->subjectReader = $subjectReader; $this->orderRepository = $orderRepository; $this->orderAdapterFactory = $orderAdapterFactory; } /** * @param array $buildSubject * @return array */ public function build(array $buildSubject) { $data = []; $paymentDO = $this->subjectReader->readPayment($buildSubject); $payment = $paymentDO->getPayment(); $orderDO = $paymentDO->getOrder(); $currencyCode = $orderDO->getCurrencyCode(); $total = $buildSubject['amount']; $storeId = $orderDO->getStoreId(); // The magento order adapter doesn't expose everything we need to send a request to the AP API so we // need to use our own version with the details we need exposed in custom methods. $orderAdapter = $this->orderAdapterFactory->create( ['order' => $payment->getOrder()] ); $amazonId = $orderAdapter->getAmazonOrderID(); $multicurrency = $orderAdapter->getMulticurrencyDetails($total); if ($multicurrency['multicurrency']) { $currencyCode = $multicurrency['order_currency']; $total = $multicurrency['total']; $storeId = $multicurrency['store_id']; } if ($amazonId) { $data = [ 'amazon_capture_id' => $payment->getParentTransactionId(), 'refund_reference_id' => $amazonId . '-R' . time(), 'refund_amount' => $total, 'currency_code' => $currencyCode, 'store_id' => $storeId ]; } return $data; } }