'/^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 "
| Ack : | $doDirectPaymentResponse->Ack |
| TransactionID : | $doDirectPaymentResponse->TransactionID |
";
print_r($doDirectPaymentResponse);
echo "";
// 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�er un num�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';