Level 102
You cannot use laravels auth outside of laravel without implementing it.. So move it inside of laravel or don't use laravel features
1 like
Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.
I'm implementing PayPal Express Checkout outside of Laravel.
And I've those errors:
Fatal error: Uncaught Error: Class "Illuminate\Support\Facades\Auth" not found in C:\wamp64\www\universalink\universalink\public\gopaypal\paypal.class.php on line 257
Error: Class "Illuminate\Support\Facades\Auth" not found in C:\wamp64\www\universalink\universalink\public\gopaypal\paypal.class.php on line 257
<?php
use Illuminate\Support\Facades\Auth;
class MyPayPal {
function GetItemTotalPrice($item){
//(Item Price x Quantity = Total) Get total amount of product;
return $item['ItemPrice'] * $item['ItemQty'];
}
function GetProductsTotalAmount($products){
$ProductsTotalAmount=0;
foreach($products as $p => $item){
$ProductsTotalAmount = $ProductsTotalAmount + $this -> GetItemTotalPrice($item);
}
return $ProductsTotalAmount;
}
function GetGrandTotal($products, $charges){
//Grand total including all tax, insurance, shipping cost and discount
$GrandTotal = $this -> GetProductsTotalAmount($products);
foreach($charges as $charge){
$GrandTotal = $GrandTotal + $charge;
}
return $GrandTotal;
}
function SetExpressCheckout($products, $charges, $noshipping='1'){
//Parameters for SetExpressCheckout, which will be sent to PayPal
$padata = '&METHOD=SetExpressCheckout';
$padata .= '&RETURNURL='.urlencode(PPL_RETURN_URL);
$padata .= '&CANCELURL='.urlencode(PPL_CANCEL_URL);
$padata .= '&PAYMENTREQUEST_0_PAYMENTACTION='.urlencode("SALE");
foreach($products as $p => $item){
$padata .= '&L_PAYMENTREQUEST_0_NAME'.$p.'='.urlencode($item['ItemName']);
$padata .= '&L_PAYMENTREQUEST_0_NUMBER'.$p.'='.urlencode($item['ItemNumber']);
$padata .= '&L_PAYMENTREQUEST_0_DESC'.$p.'='.urlencode($item['ItemDesc']);
$padata .= '&L_PAYMENTREQUEST_0_AMT'.$p.'='.urlencode($item['ItemPrice']);
$padata .= '&L_PAYMENTREQUEST_0_QTY'.$p.'='. urlencode($item['ItemQty']);
}
/*
//Override the buyer's shipping address stored on PayPal, The buyer cannot edit the overridden address.
$padata .= '&ADDROVERRIDE=1';
$padata .= '&PAYMENTREQUEST_0_SHIPTONAME=J Smith';
$padata .= '&PAYMENTREQUEST_0_SHIPTOSTREET=1 Main St';
$padata .= '&PAYMENTREQUEST_0_SHIPTOCITY=San Jose';
$padata .= '&PAYMENTREQUEST_0_SHIPTOSTATE=CA';
$padata .= '&PAYMENTREQUEST_0_SHIPTOCOUNTRYCODE=US';
$padata .= '&PAYMENTREQUEST_0_SHIPTOZIP=95131';
$padata .= '&PAYMENTREQUEST_0_SHIPTOPHONENUM=408-967-4444';
*/
$padata .= '&NOSHIPPING='.$noshipping; //set 1 to hide buyer's shipping address, in-case products that does not require shipping
$padata .= '&PAYMENTREQUEST_0_ITEMAMT='.urlencode($this -> GetProductsTotalAmount($products));
$padata .= '&PAYMENTREQUEST_0_TAXAMT='.urlencode($charges['TotalTaxAmount']);
$padata .= '&PAYMENTREQUEST_0_SHIPPINGAMT='.urlencode($charges['ShippinCost']);
$padata .= '&PAYMENTREQUEST_0_HANDLINGAMT='.urlencode($charges['HandalingCost']);
$padata .= '&PAYMENTREQUEST_0_SHIPDISCAMT='.urlencode($charges['ShippinDiscount']);
$padata .= '&PAYMENTREQUEST_0_INSURANCEAMT='.urlencode($charges['InsuranceCost']);
$padata .= '&PAYMENTREQUEST_0_AMT='.urlencode($this->GetGrandTotal($products, $charges));
$padata .= '&PAYMENTREQUEST_0_CURRENCYCODE='.urlencode(PPL_CURRENCY_CODE);
//paypal custom template
$padata .= '&LOCALECODE='.PPL_LANG; //PayPal pages to match the language on your website;
$padata .= '&LOGOIMG='.PPL_LOGO_IMG; //site logo
$padata .= '&CARTBORDERCOLOR=FFFFFF'; //border color of cart
$padata .= '&ALLOWNOTE=1';
############# set session variable we need later for "DoExpressCheckoutPayment" #######
$_SESSION['ppl_products'] = $products;
$_SESSION['ppl_charges'] = $charges;
$httpParsedResponseAr = $this->PPHttpPost('SetExpressCheckout', $padata);
//Respond according to message we receive from Paypal
if("SUCCESS" == strtoupper($httpParsedResponseAr["ACK"]) || "SUCCESSWITHWARNING" == strtoupper($httpParsedResponseAr["ACK"])){
$paypalmode = (PPL_MODE=='sandbox') ? '.sandbox' : '';
//Redirect user to PayPal store with Token received.
$paypalurl ='https://www'.$paypalmode.'.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token='.$httpParsedResponseAr["TOKEN"].'';
header('Location: '.$paypalurl);
}
else{
//Show error message
echo '<div style="color:red"><b>Error : </b>'.urldecode($httpParsedResponseAr["L_LONGMESSAGE0"]).'</div>';
echo '<pre>';
print_r($httpParsedResponseAr);
echo '</pre>';
}
}
function DoExpressCheckoutPayment(){
if(!empty(_SESSION('ppl_products'))&&!empty(_SESSION('ppl_charges'))){
$products=_SESSION('ppl_products');
$charges=_SESSION('ppl_charges');
$padata = '&TOKEN='.urlencode(_GET('token'));
$padata .= '&PAYERID='.urlencode(_GET('PayerID'));
$padata .= '&PAYMENTREQUEST_0_PAYMENTACTION='.urlencode("SALE");
//set item info here, otherwise we won't see product details later
foreach($products as $p => $item){
$padata .= '&L_PAYMENTREQUEST_0_NAME'.$p.'='.urlencode($item['ItemName']);
$padata .= '&L_PAYMENTREQUEST_0_NUMBER'.$p.'='.urlencode($item['ItemNumber']);
$padata .= '&L_PAYMENTREQUEST_0_DESC'.$p.'='.urlencode($item['ItemDesc']);
$padata .= '&L_PAYMENTREQUEST_0_AMT'.$p.'='.urlencode($item['ItemPrice']);
$padata .= '&L_PAYMENTREQUEST_0_QTY'.$p.'='. urlencode($item['ItemQty']);
}
$padata .= '&PAYMENTREQUEST_0_ITEMAMT='.urlencode($this -> GetProductsTotalAmount($products));
$padata .= '&PAYMENTREQUEST_0_TAXAMT='.urlencode($charges['TotalTaxAmount']);
$padata .= '&PAYMENTREQUEST_0_SHIPPINGAMT='.urlencode($charges['ShippinCost']);
$padata .= '&PAYMENTREQUEST_0_HANDLINGAMT='.urlencode($charges['HandalingCost']);
$padata .= '&PAYMENTREQUEST_0_SHIPDISCAMT='.urlencode($charges['ShippinDiscount']);
$padata .= '&PAYMENTREQUEST_0_INSURANCEAMT='.urlencode($charges['InsuranceCost']);
$padata .= '&PAYMENTREQUEST_0_AMT='.urlencode($this->GetGrandTotal($products, $charges));
$padata .= '&PAYMENTREQUEST_0_CURRENCYCODE='.urlencode(PPL_CURRENCY_CODE);
//We need to execute the "DoExpressCheckoutPayment" at this point to Receive payment from user.
$httpParsedResponseAr = $this->PPHttpPost('DoExpressCheckoutPayment', $padata);
//vdump($httpParsedResponseAr);
//Check if everything went ok..
if("SUCCESS" == strtoupper($httpParsedResponseAr["ACK"]) || "SUCCESSWITHWARNING" == strtoupper($httpParsedResponseAr["ACK"])){
echo '<h2>Success</h2>';
echo 'Your Transaction ID : '.urldecode($httpParsedResponseAr["PAYMENTINFO_0_TRANSACTIONID"]);
/*
//Sometimes Payment are kept pending even when transaction is complete.
//hence we need to notify user about it and ask him manually approve the transiction
*/
if('Completed' == $httpParsedResponseAr["PAYMENTINFO_0_PAYMENTSTATUS"]){
echo '<div style="color:green">Payment Received! Your product will be sent to you very soon!</div>';
}
elseif('Pending' == $httpParsedResponseAr["PAYMENTINFO_0_PAYMENTSTATUS"]){
echo '<div style="color:red">Transaction Complete, but payment may still be pending! '.
'If that\'s the case, You can manually authorize this payment in your <a target="_new" href="http://www.paypal.com">Paypal Account</a></div>';
}
$this->GetTransactionDetails();
}
else{
echo '<div style="color:red"><b>Error : </b>'.urldecode($httpParsedResponseAr["L_LONGMESSAGE0"]).'</div>';
echo '<pre>';
print_r($httpParsedResponseAr);
echo '</pre>';
}
}
else{
// Request Transaction Details
$this->GetTransactionDetails();
}
}
function GetTransactionDetails(){
//MySQL connection details.
$host = 'localhost';
$user = 'root';
$pass = '';
$database = 'objectifs';
//Custom PDO options.
$options = array(
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_EMULATE_PREPARES => false
);
//Connect to MySQL and instantiate our PDO object.
$pdo = new PDO("mysql:host=$host;dbname=$database", $user, $pass, $options);
// we can retrive transection details using either GetTransactionDetails or GetExpressCheckoutDetails
// GetTransactionDetails requires a Transaction ID, and GetExpressCheckoutDetails requires Token returned by SetExpressCheckOut
$padata = '&TOKEN='.urlencode(_GET('token'));
$httpParsedResponseAr = $this->PPHttpPost('GetExpressCheckoutDetails', $padata, PPL_API_USER, PPL_API_PASSWORD, PPL_API_SIGNATURE, PPL_MODE);
if("SUCCESS" == strtoupper($httpParsedResponseAr["ACK"]) || "SUCCESSWITHWARNING" == strtoupper($httpParsedResponseAr["ACK"])){
echo '<br /><b>Stuff to store in database :</b><br /><pre>';
// echo 'SID: ';
// echo $_SESSION['user_id'];
//
// echo '<br>';
// echo 'ObjId : ';
// echo $_SESSION['objectif_id'];
// echo '<br><br>';
#### SAVE BUYER INFORMATION IN DATABASE ###
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "universalink";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
//$userID = intval($_SESSION['id']);
$userID = Auth::user()->id;
//$objectifID = intval($_SESSION['objectif_id']);
$objectifID = 1;
$buyerName = $httpParsedResponseAr["FIRSTNAME"].' '.$httpParsedResponseAr["LASTNAME"];
$buyerEmail = $httpParsedResponseAr["EMAIL"];
$transactionID = isset($httpParsedResponseAr['TRANSACTIONID']) ? urldecode($httpParsedResponseAr['TRANSACTIONID']) : "no data";
$itemName = isset($httpParsedResponseAr['L_NAME0']) ? urldecode($httpParsedResponseAr['L_NAME0']) : "no data";
$itemNumber = isset($httpParsedResponseAr['L_NUMBER0']) ? urldecode($httpParsedResponseAr['L_NUMBER0']) : "no data";
$itemTotalPrice = isset($httpParsedResponseAr['L_AMT0']) ? urldecode($httpParsedResponseAr['L_AMT0']) : "no data";
$ItemQTY = isset($httpParsedResponseAr['L_QTY0']) ? urldecode($httpParsedResponseAr['L_QTY0']) : "no data";
$sql = "INSERT INTO buyers (BuyerUserId, ObjectifId, BuyerName, BuyerEmail, TransactionID, ItemName, ItemNumber, ItemAmount, ItemQTY)
VALUES ($userID, $objectifID, '$buyerName', '$buyerEmail', '$transactionID', '$itemName', '$itemNumber', '$itemTotalPrice', '$ItemQTY')";
if ($conn->query($sql) === TRUE) {
echo "New record created successfully";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
$conn->close();
//header('Location: http://127.0.0.1:8000/objectif/' . $objectifID . '#promesses');
//exit;
echo '<pre>';
print_r($httpParsedResponseAr);
echo '</pre>';
}
else {
echo '<div style="color:red"><b>GetTransactionDetails failed:</b>'.urldecode($httpParsedResponseAr["L_LONGMESSAGE0"]).'</div>';
echo '<pre>';
print_r($httpParsedResponseAr);
echo '</pre>';
}
}
function PPHttpPost($methodName_, $nvpStr_) {
// Set up your API credentials, PayPal end point, and API version.
$API_UserName = urlencode(PPL_API_USER);
$API_Password = urlencode(PPL_API_PASSWORD);
$API_Signature = urlencode(PPL_API_SIGNATURE);
$paypalmode = (PPL_MODE=='sandbox') ? '.sandbox' : '';
$API_Endpoint = "https://api-3t".$paypalmode.".paypal.com/nvp";
$version = urlencode('109.0');
// Set the curl parameters.
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $API_Endpoint);
curl_setopt($ch, CURLOPT_VERBOSE, 1);
//curl_setopt($ch, CURLOPT_SSL_CIPHER_LIST, 'TLSv1');
// Turn off the server and peer verification (TrustManager Concept).
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
// Set the API operation, version, and API signature in the request.
$nvpreq = "METHOD=$methodName_&VERSION=$version&PWD=$API_Password&USER=$API_UserName&SIGNATURE=$API_Signature$nvpStr_";
// Set the request as a POST FIELD for curl.
curl_setopt($ch, CURLOPT_POSTFIELDS, $nvpreq);
// Get response from the server.
$httpResponse = curl_exec($ch);
if(!$httpResponse) {
exit("$methodName_ failed: ".curl_error($ch).'('.curl_errno($ch).')');
}
// Extract the response details.
$httpResponseAr = explode("&", $httpResponse);
$httpParsedResponseAr = array();
foreach ($httpResponseAr as $i => $value) {
$tmpAr = explode("=", $value);
if(sizeof($tmpAr) > 1) {
$httpParsedResponseAr[$tmpAr[0]] = $tmpAr[1];
}
}
if((0 == sizeof($httpParsedResponseAr)) || !array_key_exists('ACK', $httpParsedResponseAr)) {
exit("Invalid HTTP Response for POST request($nvpreq) to $API_Endpoint.");
}
return $httpParsedResponseAr;
}
}
You cannot use laravels auth outside of laravel without implementing it.. So move it inside of laravel or don't use laravel features
Please or to participate in this conversation.