/** * @param array $orderItems * @param \Orm\Zed\Sales\Persistence\SpySalesOrder $orderEntity * @param \Spryker\Zed\Oms\Business\Util\ReadOnlyArrayObject $data * * @return array Array */ public function run(array $orderItems, SpySalesOrder $orderEntity, ReadOnlyArrayObject $data) { $payoneRefundTransfer = new PayoneRefundTransfer(); $orderTransfer = new OrderTransfer(); $orderTransfer->fromArray($orderEntity->toArray(), true); $refundTransfer = $this->getFactory()->getRefundFacade()->calculateRefund($orderItems, $orderEntity); $payoneRefundTransfer->setAmount($refundTransfer->getAmount() * -1); $paymentPayoneEntity = $orderEntity->getSpyPaymentPayones()->getFirst(); $payonePaymentTransfer = new PayonePaymentTransfer(); $payonePaymentTransfer->fromArray($paymentPayoneEntity->toArray(), true); $payoneRefundTransfer->setPayment($payonePaymentTransfer); $payoneRefundTransfer->setUseCustomerdata(PayoneApiConstants::USE_CUSTOMER_DATA_YES); $narrativeText = $this->getFactory()->getConfig()->getNarrativeText($orderItems, $orderEntity, $data); $payoneRefundTransfer->setNarrativeText($narrativeText); $this->getFacade()->refundPayment($payoneRefundTransfer); return []; }
/** * @param \Generated\Shared\Transfer\PayoneRefundTransfer $refundTransfer * * @return \Spryker\Zed\Payone\Business\Api\Response\Container\RefundResponseContainer */ public function refundPayment(PayoneRefundTransfer $refundTransfer) { $payonePaymentTransfer = $refundTransfer->getPayment(); $paymentEntity = $this->getPaymentEntity($payonePaymentTransfer->getFkSalesOrder()); $paymentMethodMapper = $this->getPaymentMethodMapper($paymentEntity); $requestContainer = $paymentMethodMapper->mapPaymentToRefund($paymentEntity); $requestContainer->setAmount($refundTransfer->getAmount()); $this->setStandardParameter($requestContainer); $apiLogEntity = $this->initializeApiLog($paymentEntity, $requestContainer); $rawResponse = $this->executionAdapter->sendRequest($requestContainer); $responseContainer = new RefundResponseContainer($rawResponse); $this->updateApiLogAfterRefund($apiLogEntity, $responseContainer); return $responseContainer; }