File: //var/www/html/punjabcabs/Original_Backup/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());
}
}
}
}