HEX
Server: Apache/2.4.41 (Amazon) OpenSSL/1.0.2k-fips PHP/5.6.40
System: Linux ip-172-31-40-18 4.14.146-93.123.amzn1.x86_64 #1 SMP Tue Sep 24 00:45:23 UTC 2019 x86_64
User: apache (48)
PHP: 5.6.40
Disabled: NONE
Upload Files
File: //var/www/html/punjabcabs/app/Http/Controllers/PaymentController.php
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Http\Controllers\SendPushNotification;

use Stripe\Charge;
use Stripe\Stripe;
use Stripe\StripeInvalidRequestError;

use Auth;
use Setting;
use Exception;

use App\Card;
use App\User;
use App\UserRequests;
use App\UserRequestPayment;

class PaymentController extends Controller
{
    /**
     * payment for user.
     *
     * @return \Illuminate\Http\Response
     */
    public function payment(Request $request)
    {
        $this->validate($request, [
                'request_id' => 'required|exists:user_request_payments,request_id|exists:user_requests,id,paid,0,user_id,'.Auth::user()->id
            ]);


        $UserRequest = UserRequests::find($request->request_id);

        if($UserRequest->payment_mode == 'CARD') {

            $RequestPayment = UserRequestPayment::where('request_id',$request->request_id)->first(); 

            $StripeCharge = $RequestPayment->total * 100;

            try {

                $Card = Card::where('user_id',Auth::user()->id)->where('is_default',1)->first();

                Stripe::setApiKey(Setting::get('stripe_secret_key'));

                $Charge = Charge::create(array(
                      "amount" => $StripeCharge,
                      "currency" => "aud",
                      "customer" => Auth::user()->stripe_cust_id,
                      "card" => $Card->card_id,
                      "description" => "Payment Charge for ".Auth::user()->email,
                      "receipt_email" => Auth::user()->email
                    ));

                $RequestPayment->payment_id = $Charge["id"];
                $RequestPayment->payment_mode = 'CARD';
                $RequestPayment->save();

                $UserRequest->paid = 1;
                $UserRequest->status = 'COMPLETED';
                $UserRequest->save();

                if($request->ajax()) {
                   return response()->json(['message' => trans('api.paid')]); 
                } else {
                    return redirect('dashboard')->with('flash_success','Paid');
                }

            } catch(StripeInvalidRequestError $e){
                if($request->ajax()){
                    return response()->json(['error' => $e->getMessage()], 500);
                } else {
                    return back()->with('flash_error', $e->getMessage());
                }
            } catch(Exception $e) {
                if($request->ajax()){
                    return response()->json(['error' => $e->getMessage()], 500);
                } else {
                    return back()->with('flash_error', $e->getMessage());
                }
            }
        }
    }


    /**
     * add wallet money for user.
     *
     * @return \Illuminate\Http\Response
     */
    public function add_money(Request $request){

        $this->validate($request, [
                'amount' => 'required|integer',
                'card_id' => 'required|exists:cards,card_id,user_id,'.Auth::user()->id
            ]);

        try{
            
            $StripeWalletCharge = $request->amount * 100;

            Stripe::setApiKey(Setting::get('stripe_secret_key'));

            $Charge = Charge::create(array(
                  "amount" => $StripeWalletCharge,
                  "currency" => "aud",
                  "customer" => Auth::user()->stripe_cust_id,
                  "card" => $request->card_id,
                  "description" => "Adding Money for ".Auth::user()->email,
                  "receipt_email" => Auth::user()->email
                ));

            $update_user = User::find(Auth::user()->id);
            $update_user->wallet_balance += $request->amount;
            $update_user->save();

            Card::where('user_id',Auth::user()->id)->update(['is_default' => 0]);
            Card::where('card_id',$request->card_id)->update(['is_default' => 1]);

            //sending push on adding wallet money
            (new SendPushNotification)->WalletMoney(Auth::user()->id,currency($request->amount));

            if($request->ajax()){
                return response()->json(['message' => currency($request->amount).trans('api.added_to_your_wallet'), 'user' => $update_user]); 
            } else {
                return redirect('wallet')->with('flash_success',currency($request->amount).' added to your wallet');
            }

        } catch(StripeInvalidRequestError $e) {
            if($request->ajax()){
                 return response()->json(['error' => $e->getMessage()], 500);
            }else{
                return back()->with('flash_error',$e->getMessage());
            }
        } catch(Exception $e) {
            if($request->ajax()) {
                return response()->json(['error' => $e->getMessage()], 500);
            } else {
                return back()->with('flash_error', $e->getMessage());
            }
        }
    }
    /**
     * setting stripe.
     *
     * @return \Illuminate\Http\Response
     */
    public function payment_mode(Request $request){
    
        $cash = Setting::get('CASH');
        $card = Setting::get('CARD');
        return response()->json(['cash' => $cash,'card'=>$card]);
    }

    /**
     * payment for user.
     *
     * @return \Illuminate\Http\Response
     */
    public function streetride_pay(Request $request)
    {
        $this->validate($request, [
                'request_id' => 'required|exists:user_request_payments,request_id|exists:user_requests,id,paid,0',
                'stripe_token' => 'required',
                'payment_mode' => 'required',
                'email' => 'required'
            ]);


        $UserRequest = UserRequests::find($request->request_id);
        if($UserRequest->status !='DROPPED'){
            return response()->json(['message' => 'Please drop the trip']);
        }
        $UserRequest->payment_mode = $request->payment_mode;
        $UserRequest->save();

        if($UserRequest->payment_mode == 'CARD') {
            $RequestPayment = UserRequestPayment::where('request_id',$request->request_id)->first();

            $transaction_fare =0.00;
            
            if(Setting::get('transaction_percentage') !=0) {
                $transaction_percentage = Setting::get('transaction_percentage');
                $transaction_fare = $RequestPayment->total * ($transaction_percentage/100);
                $RequestPayment->transaction_fare = $transaction_fare;
            }
           
            $RequestPayment->total = $RequestPayment->total + $transaction_fare;
            $Total = $RequestPayment->total + round($transaction_fare);
            $RequestPayment->save();
            
            $StripeCharge = ceil($Total*100);
            
            try {

                Stripe::setApiKey(Setting::get('stripe_secret_key'));
                
                $Charge = Charge::create(array(
                      "amount" => $StripeCharge,
                      "currency" => "aud",
                      "source" => $request->stripe_token,
                      "description" => "Payment Charge for ".$request->email,
                      "receipt_email" => $request->email
                    ));

                $RequestPayment->payment_id = $Charge["id"];
                $RequestPayment->payment_mode = 'CARD';
                $RequestPayment->save();
                
                $UserRequest->paid = 1;
                $UserRequest->status = 'COMPLETED';
                $UserRequest->save();

                if($request->ajax()) {
                   return response()->json(['message' => trans('api.paid')]); 
                } else {
                    return redirect('dashboard')->with('flash_success','Paid');
                }

            } catch(StripeInvalidRequestError $e){
                if($request->ajax()){
                    return response()->json(['message' => $e->getMessage()], 500);
                } else {
                    return back()->with('flash_error', $e->getMessage());
                }
            } catch(Exception $e) {
                if($request->ajax()){
                    return response()->json(['message' => $e->getMessage()], 500);
                } else {
                    return back()->with('flash_error', $e->getMessage());
                }
            }
        }
    }
    /**
     * add wallet money for user.
     *
     * @return \Illuminate\Http\Response
     */
    public function due_payment($id){

        try{
            $update_user = User::find($id);
            $cards = Card::where('user_id',$id)->where('is_default',1)->first();
            $due_balance = $update_user->due_balance;
            $StripeWalletCharge = $update_user->due_balance * 100;
            Stripe::setApiKey(Setting::get('stripe_secret_key'));

            $Charge = Charge::create(array(
                  "amount" => $StripeWalletCharge,
                  "currency" => "aud",
                  "customer" => $update_user->stripe_cust_id,
                  "card" => $cards->card_id,
                  "description" => "Due Money for ".$update_user->email,
                  "receipt_email" => $update_user->email
                ));

            $update_user->due_balance = 0;
            $update_user->due_trip = null;
            $update_user->save();
            //sending push on adding wallet money
            (new SendPushNotification)->CancelMoney($id,currency($due_balance));

        } catch(StripeInvalidRequestError $e) {
            /*if($request->ajax()){
                 return response()->json(['error' => $e->getMessage()], 500);
            }else{
                return back()->with('flash_error',$e->getMessage());
            }*/
        } catch(Exception $e) {
            /*if($request->ajax()) {
                return response()->json(['error' => $e->getMessage()], 500);
            } else {
                return back()->with('flash_error', $e->getMessage());
            }*/
        }
    }
    /**
     * add wallet money for user.
     *
     * @return \Illuminate\Http\Response
     */
    public function trip_payment($id,$user_id){

        $update_user = User::find($user_id);
        $cards = Card::where('user_id',$user_id)->where('is_default',1)->first();
        $UserRequest = UserRequests::find($id);
        $RequestPayment = UserRequestPayment::where('request_id',$UserRequest->id)->first();

        if($UserRequest->payment_mode == 'CARD'){
          if($RequestPayment->total !=0.00){
              try{
                $StripeCharge = $RequestPayment->total * 100;
                Stripe::setApiKey(Setting::get('stripe_secret_key'));
                $Charge = Charge::create(array(
                      "amount" => $StripeCharge,
                      "currency" => "aud",
                      "customer" => $update_user->stripe_cust_id,
                      "card" => $cards->card_id,
                      "description" => "Payment Charge for ".$update_user->email,
                      "receipt_email" => $update_user->email
                    ));

                $RequestPayment->payment_id = $Charge["id"];
                $RequestPayment->payment_mode = 'CARD';
                $RequestPayment->save();
                
                $UserRequest->paid = 1;
                $UserRequest->save();

                $update_user->due_balance = 0;
                $update_user->due_trip = null;
                $update_user->save();
                //sending push on adding wallet money
                (new SendPushNotification)->AutoPay($update_user->id,currency($RequestPayment->total));
             

              } catch(StripeInvalidRequestError $e) {

                $update_user->due_balance = $RequestPayment->total;
                $update_user->due_trip = $UserRequest->id;
                $update_user->save();

                $UserRequest->paid = 1;
                $UserRequest->save();

                  /*if($request->ajax()){
                       return response()->json(['error' => $e->getMessage()], 500);
                  }else{
                      return back()->with('flash_error',$e->getMessage());
                  }*/
              } catch(Exception $e) {

                $update_user->due_balance = $RequestPayment->total;
                $update_user->due_trip = $UserRequest->id;
                $update_user->save();

                $UserRequest->paid = 1;
                $UserRequest->save();

                  /*if($request->ajax()) {
                      return response()->json(['error' => $e->getMessage()], 500);
                  } else {
                      return back()->with('flash_error', $e->getMessage());
                  }*/
              }
          } 
        }
    }
    /**
     * add wallet money for user.
     *
     * @return \Illuminate\Http\Response
     */
    public function get_pendingdue(Request $request){

        try{
            $user = User::find(Auth::user()->id);
            if($user->due_trip !=null){
                $UserRequest = UserRequests::where('id', '=', $user->due_trip)->firstOrFail();
                return response()->json(['data' => $UserRequest, 'message' => 1, 'due_pending' =>$user->due_balance]);
            }else{
                return response()->json(['message' => 0]);
            }
        } catch(Exception $e) {
            if($request->ajax()) {
                return response()->json(['error' => $e->getMessage()], 500);
            } else {
                return back()->with('flash_error', $e->getMessage());
            }
        }
    }
    /**
     * add wallet money for user.
     *
     * @return \Illuminate\Http\Response
     */
    public function pay_pendingdue(Request $request){

        $this->validate($request, [
                'card_id' => 'required|exists:cards,card_id,user_id,'.Auth::user()->id
            ]);

        try{
            $update_user = User::find(Auth::user()->id);
            $cards = Card::where('user_id',Auth::user()->id)->where('is_default',1)->first();
            $due_balance = $update_user->due_balance;
            $StripeWalletCharge = $update_user->due_balance * 100;
            Stripe::setApiKey(Setting::get('stripe_secret_key'));

            $Charge = Charge::create(array(
                  "amount" => $StripeWalletCharge,
                  "currency" => "aud",
                  "customer" => $update_user->stripe_cust_id,
                  "card" => $request->card_id,
                  "description" => "Due Money for ".$update_user->email,
                  "receipt_email" => $update_user->email
                ));

            $update_user->due_balance = 0;
            $update_user->due_trip = null;
            $update_user->save();
            //sending push on adding wallet money
            (new SendPushNotification)->DueMoney(Auth::user()->id,currency($due_balance));

            if($request->ajax()){
                return response()->json(['message' => 'Due amount '.currency($due_balance).' debited from your account']); 
            } else {
                return redirect('wallet')->with('flash_success','Due amount '.currency($due_balance).' debited from your account');
            }
        } catch(StripeInvalidRequestError $e) {
            if($request->ajax()){
                 return response()->json(['error' => $e->getMessage()], 500);
            }else{
                return back()->with('flash_error',$e->getMessage());
            }
        } catch(Exception $e) {
            if($request->ajax()) {
                return response()->json(['error' => $e->getMessage()], 500);
            } else {
                return back()->with('flash_error', $e->getMessage());
            }
        }
    }


    public function test(Request $request){
        try {

                Stripe::setApiKey(Setting::get('stripe_secret_key'));
                
                $Charge = Charge::create(array(
                      "amount" => 1000,
                      "currency" => "aud",
                      "source" => 'tok_visa',
                      "description" => "Payment Charge for guru@ngfot.com",
                      "receipt_email" => 'guru@ngfot.com'
                    ));

                if($request->ajax()) {
                   return response()->json(['message' => trans('api.paid')]); 
                } else {
                    return response()->json(['message' => trans('api.paid')]); 
                }

            } catch(StripeInvalidRequestError $e){
                if($request->ajax()){
                    return response()->json(['error' => $e->getMessage()], 500);
                } else {
                    return back()->with('flash_error', $e->getMessage());
                }
            } catch(Exception $e) {
                if($request->ajax()){
                    return response()->json(['error' => $e->getMessage()], 500);
                } else {
                    return back()->with('flash_error', $e->getMessage());
                }
            }
    }

}