/** * Reverses a payment so money will be refunded to the customer * * @param Order $order * * @return Order */ function refundPayment(Order $order) { $parameters = array('terminalId' => $this->terminalId, 'userName' => $this->username, 'userPassword' => $this->password, 'orderId' => $order->getOrderId(), 'saleOrderId' => $order->getOrderId(), 'saleReferenceId' => $order->getReferenceCode()); $result = (array) $this->call('bpReversalRequest', $parameters); $responseCode = is_array($result) ? $result['return'] : $result; if ($responseCode != "0") { throw new BankWebserviceException($responseCode); } // Update order with new refunded status (money goes back to customer) $order->setStatus(Order::STATUS_REFUNDED); return $order; }
$terminalId = $_SESSION['vendora.bankmellat.terminalId'] = $request->get('terminalId'); } else { $terminalId = $_SESSION['vendora.bankmellat.terminalId']; } if ($request->get('username')) { $username = $_SESSION['vendora.bankmellat.username'] = $request->get('username'); } else { $username = $_SESSION['vendora.bankmellat.username']; } if ($request->get('password')) { $password = $_SESSION['vendora.bankmellat.password'] = $request->get('password'); } else { $password = $_SESSION['vendora.bankmellat.password']; } // Set credentionals $bankmellat->setCredentials($terminalId, $username, $password); // Create a new order instance $order = new Order(); $order->setOrderId($request->get('orderId')); $order->setReferenceCode($request->get('referenceCode')); // Try to settle the order if ($bankmellat->getGateway()->settlePayment($order)) { $referenceCode = $response->getReferenceCode(); $successMessage = "Your order has been successfully settled with reference code of <b>{$referenceCode}</b>"; } else { $errorMessage = "Could not refund your order. Unexpected error happend."; } } catch (Exception $exception) { $errorMessage = $exception->getMessage(); } }