render('payment_methods.index'); } /** * Show the form for creating a new resource. * * @param CreatePaymentMethodRequest $request * @return Response */ public function create(CreatePaymentMethodRequest $request) { $gateway = $this->getClientGateway(); $data['gateway'] = $gateway; $data['client'] = auth()->user()->client; return $gateway ->driver(auth()->user()->client) ->setPaymentMethod($request->query('method')) ->checkRequirements() ->authorizeView($data); } /** * Store a newly created resource in storage. * * @param Request $request * @return Response */ public function store(Request $request) { $gateway = $this->getClientGateway(); return $gateway ->driver(auth()->user()->client) ->setPaymentMethod($request->query('method')) ->checkRequirements() ->authorizeResponse($request); } /** * Display the specified resource. * * @param ClientGatewayToken $payment_method * @return Factory|View */ public function show(ClientGatewayToken $payment_method) { return $this->render('payment_methods.show', [ 'payment_method' => $payment_method, ]); } public function verify(ClientGatewayToken $payment_method) { // $gateway = $this->getClientGateway(); return $payment_method->gateway ->driver(auth()->user()->client) ->setPaymentMethod(request()->query('method')) ->verificationView($payment_method); } public function processVerification(Request $request, ClientGatewaytoken $payment_method) { // $gateway = $this->getClientGateway(); return $payment_method->gateway ->driver(auth()->user()->client) ->setPaymentMethod(request()->query('method')) ->processVerification($request, $payment_method); } /** * Remove the specified resource from storage. * * @param ClientGatewayToken $payment_method * @return RedirectResponse */ public function destroy(ClientGatewayToken $payment_method) { // $gateway = $this->getClientGateway(); try { $payment_method->gateway ->driver(auth()->user()->client) ->setPaymentMethod(request()->query('method')) ->detach($payment_method); event(new MethodDeleted($payment_method, auth('contact')->user()->company, Ninja::eventVars(auth('contact')->user()->id))); $payment_method->delete(); } catch (Exception $e) { event(new MethodDeleted($payment_method, auth('contact')->user()->company, Ninja::eventVars(auth('contact')->user()->id))); $payment_method->delete(); nlog($e->getMessage()); return back(); } return redirect() ->route('client.payment_methods.index') ->withSuccess('Payment method has been successfully removed.'); } private function getClientGateway() { if (request()->query('method') == GatewayType::CREDIT_CARD) { return $gateway = auth()->user()->client->getCreditCardGateway(); } if (request()->query('method') == GatewayType::BANK_TRANSFER) { return $gateway = auth()->user()->client->getBankTransferGateway(); } abort(404, 'Gateway not found.'); } }