File "PaypalIPNController.php"
Full Path: /home/isoftco/public_html/hrm/app/Http/Controllers/PaypalIPNController.php
File size: 3.56 KB
MIME-type: text/x-php
Charset: utf-8
<?php
namespace App\Http\Controllers;
use App\ClientPayment;
use App\Company;
use App\Notification;
use App\Notifications\CompanyPurchasedPlan;
use App\Notifications\CompanyUpdatedPlan;
use App\PaypalInvoice;
use App\User;
use Carbon\Carbon;
use Illuminate\Http\Request;
class PaypalIPNController extends Controller
{
public function verifyIPN(Request $request)
{
$txnType = $request->get('txn_type');
if ($txnType == 'recurring_payment') {
$recurringPaymentId = $request->get('recurring_payment_id');
$eventId = $request->get('ipn_track_id');
$event = ClientPayment::where('event_id', $eventId)->count();
if($event == 0)
{
$payment = ClientPayment::where('transaction_id', $recurringPaymentId)->first();
$clientPayment = new ClientPayment();
$clientPayment->invoice_id = $payment->invoice_id;
$clientPayment->amount = $payment->amount;
$clientPayment->gateway = 'Paypal';
$clientPayment->status = 'complete';
$clientPayment->event_id = $eventId;
$clientPayment->paid_on = Carbon::now();
$clientPayment->save();
return response('IPN Handled', 200);
}
}
}
public function verifyBillingIPN(Request $request)
{
$txnType = $request->get('txn_type');
if ($txnType == 'recurring_payment') {
$recurringPaymentId = $request->get('recurring_payment_id');
$eventId = $request->get('ipn_track_id');
$event = PaypalInvoice::where('event_id', $eventId)->count();
if($event == 0)
{
$payment = PaypalInvoice::where('transaction_id', $recurringPaymentId)->first();
$today = Carbon::now();
if(company()->package_type == 'annual') {
$nextPaymentDate = $today->addYear();
} else if(company()->package_type == 'monthly') {
$nextPaymentDate = $today->addMonth();
}
$paypalInvoice = new PaypalInvoice();
$paypalInvoice->transaction_id = $recurringPaymentId;
$paypalInvoice->company_id = $payment->company_id;
$paypalInvoice->currency_id = $payment->currency_id;
$paypalInvoice->total = $payment->total;
$paypalInvoice->status = 'paid';
$paypalInvoice->plan_id = $payment->plan_id;
$paypalInvoice->billing_frequency = $payment->billing_frequency;
$paypalInvoice->event_id = $eventId;
$paypalInvoice->billing_interval = 1;
$paypalInvoice->paid_on = $today;
$paypalInvoice->next_pay_date = $nextPaymentDate;
$paypalInvoice->save();
// Change company status active after payment
$company = Company::findOrFail($payment->company_id);
$company->status = 'active';
$company->save();
$superAdmin = User::whereNull('company_id')->get();
$lastInvoice = PaypalInvoice::where('company_id')->count();
if($lastInvoice > 1){
Notification::send($superAdmin, new CompanyUpdatedPlan($company, $payment->plan_id));
}else{
Notification::send($superAdmin, new CompanyPurchasedPlan($company, $payment->plan_id));
}
return response('IPN Handled', 200);
}
}
}
}