Files
ms1inscription-v5/paypal_advanced/DoDirectPaymentadv.php
2026-05-13 09:43:32 -04:00

267 lines
8.4 KiB
PHP
Raw Blame History

<?php
global $vPaypal_devise,$objDatabase, $vDomaine,$vPaypaladv_SANDBOX;
// en test
// Include the configuration file
require_once './paypal_advanced/config.php';
echo("DoDirectPaymentadv.php");
// Include the database connection file
include_once './paypal_advanced/dbConnect.php';
$db = new mysqli(DB_HOST, DB_USERNAME, DB_PASSWORD, DB_NAME);
// Display error if failed to connect
if ($db->connect_errno) {
printf("sl Connect failed: %s\n", $db->connect_error);
exit();
}
// Include the PayPal API library
require_once './paypal_advanced/PaypalCheckout.class.php';
$paypal = new PaypalCheckout;
function getCreditCardType($str, $format = 'string') {
if (empty($str)) {
return false;
}
$matchingPatterns = array(
'Visa' => '/^4[0-9]{12}(?:[0-9]{3})?$/',
'MasterCard' => '/^5[1-5][0-9]{14}$/'
// 'amex' => '/^3[47][0-9]{13}$/',
// 'diners' => '/^3(?:0[0-5]|[68][0-9])[0-9]{11}$/',
// 'discover' => '/^6(?:011|5[0-9]{2})[0-9]{12}$/',
// 'jcb' => '/^(?:2131|1800|35\d{3})\d{11}$/',
// 'any' => '/^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\d{3})\d{11})$/'
);
$ctr = 1;
foreach ($matchingPatterns as $key=>$pattern) {
if (preg_match($pattern, $str)) {
return $format == 'string' ? $key : $ctr;
}
$ctr++;
}
}
function getCreditCardTypebad($str, $format = 'string') {
if (empty($str)) {
return false;
}
$matchingPatterns = array(
'visa' => '/^4[0-9]{12}(?:[0-9]{3})?$/',
'mastercard' => '/^5[1-5][0-9]{14}$/',
'amex' => '/^3[47][0-9]{13}$/',
'diners' => '/^3(?:0[0-5]|[68][0-9])[0-9]{11}$/',
'discover' => '/^6(?:011|5[0-9]{2})[0-9]{12}$/',
'jcb' => '/^(?:2131|1800|35\d{3})\d{11}$/',
'any' => '/^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\d{3})\d{11})$/'
);
$ctr = 1;
foreach ($matchingPatterns as $key=>$pattern) {
if (preg_match($pattern, $str)) {
return $format == 'string' ? $key : $ctr;
}
$ctr++;
}
}
$strLangue = $_SESSION['lang'];
// Sortir les infos de l'acheteur
$tabPanier = fxlistPanier($_SESSION['no_panier']);
$tabAcheteur = $tabPanier[0];
$mem_province = fxGetProvinces($tabAcheteur['pro_id'], $strLangue);
$mem_province = fxUnescape($mem_province['pro_paypal']);
$mem_pays = fxGetPays($tabAcheteur['pay_id'], $strLangue);
$mem_pays = fxreplace_accents_string(fxUnescape($mem_pays['pay_nom_' . $strLangue]));
// Set l'adresse de l'acheteur
// MSIN-3853
// prepare le tableau d info pour paypal
$product_data = array(
"intent" => "CAPTURE",
"purchase_units" => array(
array(
"custom_id" => "custom_id_test",
"description" => "description_test",
"amount" => array(
"currency_code" => "CAD",
"value" => $tabTotal['total']
),
"shipping" => array(
"name" => array(
"full_name" => "stephan leith test"),
"address" => array(
"address_line_1" => "123 Townsend St",
"address_line_2" => "Floor 6",
"admin_area_2" => "San Francisco",
"admin_area_1" => "CA",
"postal_code" => "94107",
"country_code" => "US"
)
)
)
)
);
$response = array('status' => 0, 'msg' => 'Request Failed!');
$api_error = '';
$payment_source = "card";
// Create order with PayPal Orders API
try {
$order = $paypal->createOrder($product_data, $payment_source);
} catch(Exception $e) {
$api_error = $e->getMessage();
}
if(!empty($order)){
$response = array(
'status' => 1,
'data' => $order
);
}else{
$response['msg'] = $api_error;
}
print_r($response);
echo("<br>adv2");
exit;
$paymentDetails->OrderTotal = new BasicAmountType('CAD', $tabTotal['total']);
if ($_SESSION['lang'] == 'fr')
$strPage = 'panier';
else
$strPage = 'cart';
if (isset($doDirectPaymentResponse)) {
echo "<table>";
echo "<tr><td>Ack :</td><td><div id='Ack'>$doDirectPaymentResponse->Ack</div> </td></tr>";
echo "<tr><td>TransactionID :</td><td><div id='TransactionID'>$doDirectPaymentResponse->TransactionID</div> </td></tr>";
echo "</table>";
echo "<pre>";
print_r($doDirectPaymentResponse);
echo "</pre>";
// MSIN-1078: JS was here
$strErrorLog = '';
foreach ($doDirectPaymentResponse->Errors as $objError) {
$strErrorLog .= print_r($objError, true);
}
$strErrorLog = print_r($doDirectPaymentResponse, true);
if ($doDirectPaymentResponse->Ack == 'Success' || $doDirectPaymentResponse->Ack == 'SuccessWithWarning') {
// sauvegarder les infos dans la bdd
if ($_SESSION['lang'] == 'fr')
$strResultat = 'APPROUVEE - MERCI';
else
$strResultat = 'APPROVED - THANK YOU';
$sqlUpdate = "UPDATE inscriptions_panier_acheteurs SET receipt_text = '" . $strResultat . "', TransactionID = '" . $doDirectPaymentResponse->TransactionID . "', pai_id = 2, ach_error_log = '" . $objDatabase->fxEscape($strErrorLog) . "', ach_ack = '" . $objDatabase->fxEscape($doDirectPaymentResponse->Ack) . "' WHERE no_panier = '" . $objDatabase->fxEscape($_SESSION['no_panier']) . "'";
$qryUpdate = $objDatabase->fxQuery($sqlUpdate);
header('Location: ' . $vDomaine . '/' . $strPage . '/resultat/' . $_SESSION['eve_label_url'] . '?ResponseFile=' . $doDirectPaymentResponse->TransactionID . '&p=success');
exit;
} else {
// cr<63>er un num<75>ro de transaction
$strTransaction = uniqid('trx_');
if ($_SESSION['lang'] == 'fr')
$strResultat = 'ERREUR';
else
$strResultat = 'ERROR';
$sqlUpdate = "UPDATE inscriptions_panier_acheteurs SET receipt_text = '" . $strResultat . "', TransactionID = '" . $strTransaction . "', ach_error_log = '" . $objDatabase->fxEscape($strErrorLog) . "', ach_ack = '" . $objDatabase->fxEscape($doDirectPaymentResponse->Ack) . "' WHERE no_panier = '" . $objDatabase->fxEscape($_SESSION['no_panier']) . "'";
$qryUpdate = $objDatabase->fxQuery($sqlUpdate);
if ($blnDons) {
fxcreer_log("ERREUR DE PAIMENT (DON): no_panier = :" . $_SESSION['no_panier'] . "\n" . $strErrorLog);
unset($_SESSION['no_panier']);
$_SESSION['eve_label_url'] = fxGetEvenementsUrl($_POST['eve_id']);
if ($strLangue == 'fr')
$strPage = 'don';
else
$strPage = 'donate';
if ($strLangue == 'fr')
$_SESSION['msg'] = 'e130';
else
$_SESSION['msg'] = 'e530';
$strURL = '/' . $strPage . '/' . $_SESSION['eve_label_url'] . '/' . md5($_POST['pec_id']);
if ($_POST['par_id'] != 0) {
$strURL .= '/' . md5($_POST['par_id']);
}
header('Location: ' . $vDomaine . $strURL);
} else {
fxcreer_log("ERREUR DE PAIMENT: no_panier = :" . $_SESSION['no_panier'] . "\n" . $strErrorLog);
if ($strLangue == 'fr')
$_SESSION['msg'] = 'e130';
else
$_SESSION['msg'] = 'e530';
header('Location: ' . $vDomaine . '/' . $strPage . '/resultat/' . $_SESSION['eve_label_url'] . '?p=error&ResponseFile=' . $strTransaction);
}
exit;
}
}
if ($blnDons) {
unset($_SESSION['no_panier']);
$_SESSION['eve_label_url'] = fxGetEvenementsUrl($_POST['eve_id']);
if ($strLangue == 'fr')
$strPage = 'don';
else
$strPage = 'donate';
if ($strLangue == 'fr')
$_SESSION['msg'] = 'e130';
else
$_SESSION['msg'] = 'e530';
$strURL = '/' . $strPage . '/' . $_SESSION['eve_label_url'] . '/' . md5($_POST['pec_id']);
if ($_POST['par_id'] != 0) {
$strURL .= '/' . md5($_POST['par_id']);
}
header('Location: ' . $vDomaine . $strURL);
} else {
if ($strLangue == 'fr')
$_SESSION['msg'] = 'e130';
else
$_SESSION['msg'] = 'e530';
header('Location: ' . $vDomaine . '/' . $strPage . '/checkout/' . $_SESSION['eve_label_url'] );
}
exit;
// require_once '../Response.php';