Exemplo n.º 1
0
 /**
  * @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'];
 }