/** * @param Request $request * @param \PHPixie\View $view * @param PaymentOperation $operation * @param Payment $payment * @param bool $isTesting * @return mixed|void */ public function getRefundParameters(Request $request, \PHPixie\View $view, PaymentOperation $operation, Payment $payment, $isTesting = false) { if (!$operation || !$operation->loaded()) { $operation = $this->pixie->payments->createRefundOperation($payment); $payment->refund_operation_id = $operation->id(); $payment->save(); } if ($operation->status != PaymentOperation::STATUS_COMPLETED) { $operation->setStatus(PaymentOperation::STATUS_PENDING); $operation->save(); } if ($payment->payment_operation && $payment->payment_operation->loaded()) { $operation->setRrn($payment->payment_operation->getRrn()); $operation->setInternalReference($payment->payment_operation->getInternalReference()); } $refundRequest = $this->createRequestFromPaymentOperation($operation); $refundRequest->setMerchantUrl($this->getMerchantUrl()); if ($isTesting && $request->get('amount')) { $refundRequest->setAmount($request->get('amount')); } $macFields = null; if ($isTesting) { $macFieldsArr = $request->get('mac_fields'); if (is_array($macFieldsArr)) { $macFields = $macFieldsArr; } else { if ($macFieldsArr == 'none') { $macFields = []; } } } $refundRequest->setPSign($this->calculateRequestMAC($refundRequest, $macFields)); $view->gatewayParameters = $refundRequest->getParametersArray(); $paymentConfig = $this->pixie->config->get('payment'); $view->gatewayUrl = $paymentConfig['gateway_url']; }