ajax()) { return DataTables::of($payments)->addColumn('action', function ($payment) { return ''.ctrans('texts.view').''; })->editColumn('payment_type_id', function ($payment) { return $payment->type->name; }) ->editColumn('status_id', function ($payment){ return Payment::badgeForStatus($payment->status_id); }) ->rawColumns(['action', 'status_id','payment_type_id']) ->make(true); } $data['html'] = $builder; return view('portal.default.payments.index', $data); } /** * Display the specified resource. * * @param \App\Models\Invoice $invoice The invoice * * @return \Illuminate\Http\Response */ public function show(Request $request, Payment $payment) { $payment->load('invoices'); $data['payment'] = $payment; return view('portal.default.payments.show', $data); } /** * Presents the payment screen for a given * gateway and payment method. * The request will also contain the amount * and invoice ids for reference. * * @return void */ public function process() { $invoices = Invoice::whereIn('id', $this->transformKeys(explode(",",request()->input('hashed_ids')))) ->whereClientId(auth()->user()->client->id) ->get(); $amount = $invoices->sum('balance'); $invoices->filter(function ($invoice){ return $invoice->isPayable(); })->map(function ($invoice){ $invoice->balance = Number::formatMoney($invoice->balance, $invoice->client); $invoice->due_date = $this->formatDate($invoice->due_date, $invoice->client->date_format()); return $invoice; }); $payment_methods = auth()->user()->client->getPaymentMethods($amount); //boot the payment gateway $gateway = CompanyGateway::find(request()->input('company_gateway_id')); $payment_method_id = request()->input('payment_method_id'); //if there is a gateway fee, now is the time to calculate it //and add it to the invoice $data = [ 'invoices' => $invoices, 'amount' => $amount, 'fee' => $gateway->calcGatewayFee($amount), 'amount_with_fee' => $amount + $gateway->calcGatewayFee($amount), 'token' => auth()->user()->client->gateway_token($gateway->id, $payment_method_id), 'payment_method_id' => $payment_method_id, 'hashed_ids' => explode(",",request()->input('hashed_ids')), ]; return $gateway->driver(auth()->user()->client)->processPaymentView($data); } public function response(Request $request) { $gateway = CompanyGateway::find($request->input('company_gateway_id')); return $gateway->driver(auth()->user()->client)->processPaymentResponse($request); } }