270 lines
9.5 KiB
PHP
270 lines
9.5 KiB
PHP
<?php
|
||
global $objDatabase, $vDomaine;
|
||
|
||
|
||
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'];
|
||
|
||
require_once('paypal_prod/api/PPBootStrap.php');
|
||
/* require_once('../../../php/inc_start_time.php');
|
||
require_once('../../../php/inc_fonctions.php');
|
||
require_once('../../../php/inc_fx_panier.php'); */
|
||
/**
|
||
* Get required parameters from the web form for the request
|
||
*/
|
||
$logger = new PPLoggingManager('DoDirectPayment');
|
||
|
||
$mem_var_paypal['notifyURL'] = '';
|
||
$mem_var_paypal['noShipping'] = 0;
|
||
$mem_var_paypal['addressOverride'] = 0;
|
||
$mem_var_paypal['reqConfirmShipping'] = 0;
|
||
$mem_var_paypal['billingType'] = 'None';
|
||
$mem_var_paypal['billingAgreementText'] = '';
|
||
$mem_var_paypal['CountryCode'] = 'CA';
|
||
$mem_var_paypal['allowNote'] = 0;
|
||
|
||
// 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
|
||
$firstName = fxreplace_accents_string(fxUnescape($tabAcheteur['com_prenom']));
|
||
$lastName = fxreplace_accents_string(fxUnescape($tabAcheteur['com_nom']));
|
||
$courriel = fxreplace_accents_string(fxUnescape($tabAcheteur['com_courriel']));
|
||
|
||
$address = new AddressType();
|
||
$address->CityName = fxreplace_accents_string(fxUnescape($tabAcheteur['com_ville']));
|
||
$address->Name = "$firstName $lastName";
|
||
$address->Street1 = fxreplace_accents_string(fxUnescape($tabAcheteur['com_adresse']));
|
||
$address->StateOrProvince = $mem_province;
|
||
$address->PostalCode = strtoupper(fxUnescape($tabAcheteur['com_codepostal']));
|
||
$address->Country = $mem_var_paypal['CountryCode'];
|
||
$address->CountryName = fxreplace_accents_string($mem_pays);
|
||
$address->Phone = fxUnescape($tabAcheteur['com_telephone1']);
|
||
|
||
// Sortir le prix de la facture
|
||
// $tabTotal = fxTotalPanier($_SESSION['no_panier'], $strLangue);
|
||
|
||
// Set infos du paiement
|
||
$paymentDetails = new PaymentDetailsType();
|
||
$paymentDetails->ShipToAddress = $address;
|
||
$paymentDetails->OrderTotal = new BasicAmountType('CAD', $tabTotal['total']);
|
||
|
||
if (isset($mem_var_paypal['notifyURL'])) {
|
||
$paymentDetails->NotifyURL = $mem_var_paypal['notifyURL'];
|
||
}
|
||
|
||
// Set les infos du payeur
|
||
$personName = new PersonNameType();
|
||
$personName->FirstName = $firstName;
|
||
$personName->LastName = $lastName;
|
||
|
||
$payer = new PayerInfoType();
|
||
$payer->Payer = $courriel;
|
||
$payer->PayerName = $personName;
|
||
$payer->Address = $address;
|
||
$payer->PayerCountry = $mem_var_paypal['CountryCode'];
|
||
|
||
// Set les infos de la carte
|
||
$cardDetails = new CreditCardDetailsType();
|
||
$cardDetails->CreditCardNumber = $_POST['ccnumber'];
|
||
|
||
$mem_cctype=getCreditCardType($_POST['ccnumber']);
|
||
$cardDetails->CreditCardType = $mem_cctype;
|
||
|
||
|
||
//$cardDetails->CreditCardType = $_POST['cctype'];
|
||
|
||
|
||
$cardDetails->ExpMonth = $_POST['ccmonth'];
|
||
$cardDetails->ExpYear = $_POST['ccyear'];
|
||
$cardDetails->CVV2 = $_POST['cvv'];
|
||
$cardDetails->CardOwner = $payer;
|
||
|
||
$ddReqDetails = new DoDirectPaymentRequestDetailsType();
|
||
$ddReqDetails->CreditCard = $cardDetails;
|
||
$ddReqDetails->PaymentDetails = $paymentDetails;
|
||
|
||
$doDirectPaymentReq = new DoDirectPaymentReq();
|
||
$doDirectPaymentReq->DoDirectPaymentRequest = new DoDirectPaymentRequestType($ddReqDetails);
|
||
$logger->info("created doDirectPaymentReq Object");
|
||
$paypalService = new PayPalAPIInterfaceServiceService();
|
||
|
||
try {
|
||
/* wrap API method calls on the service object with a try catch */
|
||
$doDirectPaymentResponse = $paypalService->DoDirectPayment($doDirectPaymentReq);
|
||
} catch (Exception $ex) {
|
||
include_once("error.php");
|
||
exit;
|
||
}
|
||
|
||
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';
|