Bon je vient de passer 6 heures à préparer un code pour me simplifier la vie :
Ce code va servir à simplifier la vie de tous ceux qui veulent pas avoir de migraine affreuse...
( bien sûr le code est plus beau sans les retour à la ligne, et avec une tabulation égale à 5 espaces )
Il y a 11 fichiers ( au minimum )
Le bouton crypté ( autant de fichier
btn.php que de bouton ) :
<?php
//-->> DEMMARRAGE D'UNE SESSION
session_start();
####################################################################
## PROVISOIRE ##
####################################################################
if(!isset($_SESSION['espace_membre']))
{
$_SESSION['espace_membre'] = "****";
}
####################################################################
## PRECONFIGURATION ##
####################################################################
$racine = "test";
$situation_de_test = "OUI"; // OUI ou NON qui défini Paypal ou PayPal SandBox
$id_acheteur = $_SESSION['espace_membre']; // Identifiant du client ou du membre
$montant = "29.99"; // Montant de l'objet ou de l'abonnement
$monaie = "EUR"; // Devise
$nom_produit = "Premium"; // Nom du Produit
$avis = "0"; // 0 ou 1 -> Demander l'avis des clients
$descrip_produit = "Abonnement à **** pendant 1 Mois"; // Description du produit
$ref_produit = "1M"; // Référence du produit
$langue = "FR"; // Langue -> FR, US ou autre
$page_paiement_accepte = "http://www.****.com/".$racine."/acc.php"; // Si le paiement s'est bien déroulé
$page_paiement_annule = "http://www.****.com/".$racine."/ann.php"; // Si le paiement à été annulé
$cac_a = "b_1266149529_biz@****.com"; // Adresse e-mail du compte vendeur PayPal SandBox
$cac_b = "service.client@****.com"; // Adresse e-mail du compte vendeur PayPal
$type_de_bouton = "3"; // pour " Acheter maintenant " tapez 1 et réglez la " Partie 1 " ci-dessous et le fichier " notify1.php "
// pour " Don " tapez 2 et réglez la " Partie 2 " ci-dessous et le fichier " notify2.php "
// pour " Abonnement " tapez 3 et réglez la " Partie 3 " ci-dessous et le fichier " notify3.php "
// pour " Chèques cadeaux " tapez 4 et réglez la " Partie 4 " ci-dessous et le fichier " notify4.php "
// pour " Panier " tapez 5 et réglez la " Partie 5 " ci-dessous et le fichier " notify5.php "
####################################################################
## CERTIFICATS ##
####################################################################
putenv("HOME=~");
$MY_KEY_FILE = "/homez.323/****/www/".$racine."/9f71d63e4dac3a6f7c41b0058479a280-prvkey.pem";
$MY_CERT_FILE = "/homez.323/****/www/".$racine."/9f71d63e4dac3a6f7c41b0058479a280-pubcert.pem";
$PAYPAL_CERT_FILE = "/homez.323/****/www/".$racine."/paypal_cert_pem.pem";
$OPENSSL = "/usr/bin/openssl";
$cert_id = "BYMFYZCEEREN6";
####################################################################
## NE PAS MODIFIER CETTE PARTIE ##
####################################################################
if($situation_de_test == "OUI")
{
$paypaltype = '<form action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post">';
$cac = $cac_a;
}
else
{
$paypaltype = '<form action="https://www.paypal.com/cgi-bin/webscr" method="post">';
$cac = $cac_b;
}
####################################################################
## Partie 1 ##
####################################################################
$page_ipn = "http://www.****.com/".$racine."/notify1.php"; // Page IPN 1
$frais_de_port = "0.00"; // 0.00 -> Frais de livraison
$taxe = "0.00"; // 0.00 -> Pas de taxe
$u_quantity = "0"; // 1 -> Permet aux clients de choisir la quantité d'objet
$poids = "15"; // Poids de l'objet en Kg
$poids_units = "kgs"; // Unité du poids kgs ou lbs
$address_override = "1"; // 1 -> Ne pas laisser le vendeur définir l'adresse
$address1 = ""; // 1ère Rue du client
$address2 = ""; // 2ème Rue du client
$city = ""; // Ville du client
$email = ""; // Adresse e-mail du client
$first_name = ""; // Prénom du client
$last_name = ""; // Nom du client
$night_phone_a = ""; // Indicatif régional pour les numéros de téléphone aux Etats-Unis ou indicatif national pour les numéros hors des Etats-Unis. Cette variable préremplit le numéro de téléphone du domicile du payeur.
$night_phone_b = ""; // Indicatif à trois chiffres pour les numéros de téléphone aux Etats-Unis ou intégralité du numéro de téléphone pour les numéros hors des Etats-Unis, sans l'indicatif du pays. Cette variable préremplit le numéro de téléphone du domicile du payeur.
$night_phone_c = ""; // Numéro à quatre chiffres pour les numéros de téléphone aux Etats-Unis. Cette variable préremplit le numéro de téléphone du domicile du payeur.
$state = ""; // Eats -> voir sur : http://www.usps.com/ncsc/lookups/abbreviations.html#states
$zip = ""; // Code Postal
###############################################################
## Ne pas toucher cette partie de la Partie 1 ##
###############################################################
$bouton = "_xclick";
$form_1 = array('cmd' => $bouton,
'business' => $cac,
'cert_id' => $cert_id,
'item_name' => $nom_produit,
'amount' => $montant,
'weight' => $poids,
'weight_unit' => $poids_units,
'undefined_quantity' => $u_quantity,
'shipping' => $frais_de_port,
'no_shipping' => $activation_frais_de_port,
'return' => $page_paiement_accepte,
'notify_url' => $page_ipn,
'cancel_return' => $page_paiement_annule,
'no_note' => $avis,
'item_number' => $ref_produit,
'custom' => $id_acheteur.'-*-'.$descrip_produit.'-*-'.$date_us.'-*-'.$date_fr.'-*-'.$heure.'-*-'.$montant,
'currency_code' => $monaie,
'tax' => $taxe,
'address_override' => $address_override,
'address1' => $address1,
'address2' => $address2,
'city' => $city,
'email' => $email,
'first_name' => $first_name,
'last_name' => $last_name,
'charset' => $charset,
'night_phone_a' => $night_phone_a,
'night_phone_b' => $night_phone_b,
'night_phone_c' => $night_phone_c,
'state' => $state,
'zip' => $zip,
'lc' => $langue
);
####################################################################
## Partie 2 ##
####################################################################
$page_ipn = "http://www.****.com/".$racine."/notify2.php"; // Page IPN 2
###############################################################
## Ne pas toucher cette partie de la Partie 2 ##
###############################################################
$bouton = "_donations";
$form_2 = array('cmd' => $bouton,
'business' => $cac,
'cert_id' => $cert_id,
'item_name' => $nom_produit,
'amount' => $montant,
'return' => $page_paiement_accepte,
'notify_url' => $page_ipn,
'cancel_return' => $page_paiement_annule,
'no_note' => $avis,
'item_number' => $ref_produit,
'custom' => $id_acheteur.'-*-'.$descrip_produit.'-*-'.$date_us.'-*-'.$date_fr.'-*-'.$heure.'-*-'.$montant,
'currency_code' => $monaie,
'tax' => $taxe,
'lc' => $langue
);
####################################################################
## Partie 3 ##
####################################################################
$page_ipn = "http://www.****.com/".$racine."/notify3.php"; // Page IPN 3
$p3 = "1"; // Quantité de : Jours ou Semaines ou Mois ou d'Année de l'abonnement.
$t3 = "M"; // D (jours), W (semaines), M (mois), Y (ans) de l'abonnement.
$src = "1"; // 0 –> Les paiements d'abonnement ne sont pas récurrents
// 1 –> Les paiements d'abonnement sont récurrents
$srt = "3"; // Nombre de récurrences, suppérieur à 1 et n'est valable que si $src = 1
$sra = "1"; // 0 –> Pas de nouvelle tentative pour les paiements récurrents ayant échoué
// 1 –> Nouvelle tentative pour les paiements récurrents ayant échoué avant
###############################################################
## Ne pas toucher cette partie de la Partie 3 ##
###############################################################
$bouton = "_xclick-subscriptions";
$form_3 = array('cmd' => $bouton,
'business' => $cac,
'cert_id' => $cert_id,
'item_name' => $nom_produit,
'a3' => $montant,
'p3' => $p3,
't3' => $t3,
'src' => $src,
'srt' => $srt,
'sra' => $sra,
'return' => $page_paiement_accepte,
'notify_url' => $page_ipn,
'cancel_return' => $page_paiement_annule,
'no_note' => $avis,
'custom' => $id_acheteur.'-*-'.$descrip_produit.'-*-'.$date_us.'-*-'.$date_fr.'-*-'.$heure.'-*-'.$montant,
'currency_code' => $monaie,
'lc' => $langue
);
####################################################################
## Partie 4 ##
####################################################################
$page_ipn = "http://www.****.com/".$racine."/notify4.php"; // Page IPN 4
###############################################################
## Ne pas toucher cette partie de la Partie 4 ##
###############################################################
$bouton = "_oe-gift-certificate";
$form_4 = array('cmd' => $bouton,
'business' => $cac,
'cert_id' => $cert_id,
'return' => $page_paiement_accepte,
'notify_url' => $page_ipn,
'cancel_return' => $page_paiement_annule,
'no_note' => $avis,
'custom' => $id_acheteur.'-*-'.$descrip_produit.'-*-'.$date_us.'-*-'.$date_fr.'-*-'.$heure.'-*-'.$montant,
'currency_code' => $monaie,
'tax' => $taxe,
'lc' => $langue
);
####################################################################
## Partie 5 ##
####################################################################
$page_ipn = "http://www.****.com/".$racine."/notify5.php"; // Page IPN 5
$quantity = "5"; // Nombre d'objet du même type
$frais_de_port = "0.00"; // 0.00 -> Frais de livraison
$taxe = "0.00"; // 0.00 -> Pas de taxe
$address_override = "0"; // 1 -> Ne pas laisser le vendeur définir l'adresse
$address1 = ""; // 1ère Rue du client
$address2 = ""; // 2ème Rue du client
$city = ""; // Ville du client
$email = ""; // Adresse e-mail du client
$first_name = ""; // Prénom du client
$last_name = ""; // Nom du client
$night_phone_a = ""; // Indicatif régional pour les numéros de téléphone aux Etats-Unis ou indicatif national pour les numéros hors des Etats-Unis. Cette variable préremplit le numéro de téléphone du domicile du payeur.
$night_phone_b = ""; // Indicatif à trois chiffres pour les numéros de téléphone aux Etats-Unis ou intégralité du numéro de téléphone pour les numéros hors des Etats-Unis, sans l'indicatif du pays. Cette variable préremplit le numéro de téléphone du domicile du payeur.
$night_phone_c = ""; // Numéro à quatre chiffres pour les numéros de téléphone aux Etats-Unis. Cette variable préremplit le numéro de téléphone du domicile du payeur.
$state = ""; // Eats -> voir sur : http://www.usps.com/ncsc/lookups/abbreviations.html#states
$zip = ""; // Code Postal
###############################################################
## Ne pas toucher cette partie de la Partie 5 ##
###############################################################
$bouton = "_cart";
$form_5 = array('cmd' => $bouton,
'business' => $cac,
'cert_id' => $cert_id,
'item_name' => $nom_produit,
'amount' => $montant,
'weight' => $poids,
'weight_unit' => $poids_units,
'shipping' => $frais_de_port,
'no_shipping' => $activation_frais_de_port,
'return' => $page_paiement_accepte,
'notify_url' => $page_ipn,
'cancel_return' => $page_paiement_annule,
'no_note' => $avis,
'custom' => $id_acheteur.'-*-'.$descrip_produit.'-*-'.$date_us.'-*-'.$date_fr.'-*-'.$heure.'-*-'.$montant,
'currency_code' => $monaie,
'tax' => $taxe,
'address_override' => $address_override,
'address1' => $address1,
'address2' => $address2,
'city' => $city,
'email' => $email,
'first_name' => $first_name,
'last_name' => $last_name,
'charset' => $charset,
'night_phone_a' => $night_phone_a,
'night_phone_b' => $night_phone_b,
'night_phone_c' => $night_phone_c,
'state' => $state,
'zip' => $zip,
'lc' => $langue,
'quantity' => $quantity
);
####################################################################
## OPTIMISER LE CODE ##
####################################################################
//->> Voir sur ce lien : https://cms.paypal.com/fr/cgi-bin/?cmd=_render-content&content_ID=developer/e_howto_html_Appx_websitestandard_htmlvariables
####################################################################
## NE PAS MODIFIER CETTE PARTIE ##
####################################################################
if($frais_de_port == "0.00")
{
$activation_frais_de_port = "0";
}
$date_us = date("Y-m-d");
$date_fr = date("d-m-Y");
$heure = date("H:i:s");
function paypal_encrypt($hash)
{
global $MY_KEY_FILE;
global $MY_CERT_FILE;
global $PAYPAL_CERT_FILE;
global $OPENSSL;
if (!file_exists($MY_KEY_FILE))
{
echo "ERROR: MY_KEY_FILE $MY_KEY_FILE not found\n";
}
if (!file_exists($MY_CERT_FILE))
{
echo "ERROR: MY_CERT_FILE $MY_CERT_FILE not found\n";
}
if (!file_exists($PAYPAL_CERT_FILE))
{
echo "ERROR: PAYPAL_CERT_FILE $PAYPAL_CERT_FILE not found\n";
}
if (!file_exists($OPENSSL))
{
echo "ERROR: OPENSSL $OPENSSL not found\n";
}
$hash['bn']= 'StellarWebSolutions.PHP_EWP';
$openssl_cmd = "$OPENSSL smime -sign -signer $MY_CERT_FILE -inkey $MY_KEY_FILE " ."-outform der -nodetach -binary | $OPENSSL smime -encrypt " ."-des3 -binary -outform pem $PAYPAL_CERT_FILE";
$descriptors = array(
0 => array("pipe", "r"),
1 => array("pipe", "w"),
);
$process = proc_open($openssl_cmd, $descriptors, $pipes);
if (is_resource($process))
{
foreach ($hash as $key => $value)
{
if ($value != "")
{
fwrite($pipes[0], "$key=$value\n");
}
}
fflush($pipes[0]);
fclose($pipes[0]);
$output = "";
while (!feof($pipes[1]))
{
$output .= fgets($pipes[1]);
}
fclose($pipes[1]);
$return_value = proc_close($process);
return $output;
}
return "ERROR";
};
if($type_de_bouton == 1)
{
$encrypted = paypal_encrypt($form_1);
}
elseif($type_de_bouton == 2)
{
$encrypted = paypal_encrypt($form_2);
}
elseif($type_de_bouton == 3)
{
$encrypted = paypal_encrypt($form_3);
}
elseif($type_de_bouton == 4)
{
$encrypted = paypal_encrypt($form_4);
}
elseif($type_de_bouton == 5)
{
$encrypted = paypal_encrypt($form_5);
}
echo''.$paypaltype.'
<input type="hidden" name="cmd" value="_s-xclick">
<input name="encrypted" type="hidden" value="'.$encrypted.'" />
<input class="button68" type="submit" value="S\'abonner" />
</form>
';
?>
Il y a 5 fichiers
notify.php ( un pour chaque type de bouton : Acheter maintenant, Abonnement, Panier... ) soit :
notify1.php,
notify2.php,
notify3.php,
notify4.php et
notify5.php
<?php
####################################################################
## RECEPTION DES CHAMPS ##
####################################################################
$sonde = $sonde." 1";
$notify_situation_de_test = "OUI";
$notify_DB_Server = "****";
$notify_DB_Username = "****";
$notify_DB_Password = "****";
$notify_DB_DBName = "****";
$notify_recep_item_name = $_POST['item_name']; // Nom du produit
$notify_recep_a3 = $_POST['a3']; // Montant de la transaction
$notify_recep_p3 = $_POST['p3']; // Quantitié de la durée de l'abonnement
$notify_recep_t3 = $_POST['t3']; // Unité de la durée de l'abonnemen
$notify_recep_currency_code = $_POST['currency_code']; // Type de Monaie
$notify_recep_shipping = $_POST['shipping']; // Frais de port
$notify_recep_tax = $_POST['tax']; // Taxes
$notify_recep_cmd = $_POST['cmd']; // Type de transaction
$notify_recep_business = $_POST['business']; // Compte à créditer
$notify_recep_no_note = $_POST['no_note']; // Avis des clients
$notify_recep_lc = $_POST['lc']; // Langue
$notify_recep_custom = $_POST['custom']; // ID Acheteur
####################################################################
## NE PAS MODIFIER CETTE PARTIE ##
####################################################################
$notify_tableau = explode("-*-",$notify_recep_custom);
$notify_recep_espace_membre = $notify_tableau[0];
$notify_recep_code_produit = $notify_tableau[1];
$notify_recep_date_us = date("Y-m-d");
$notify_recep_date_fr = date("d-m-Y");
$notify_recep_heure = date("H:i:s");
$notify_prix = $notify_tableau[5];
if($notify_situation_de_test == "OUI")
{
$notify_paypal = "www.sandbox.paypal.com";
$sonde = $sonde." 2";
}
else
{
$notify_paypal = "www.paypal.com";
$sonde = $sonde." 3";
}
$notify_Connect = @mysql_connect($notify_DB_Server, $notify_DB_Username, $notify_DB_Password)or die("Couldn’t connect to MySQL:" . mysql_error() . "" . mysql_errno());
$notify_Db = @mysql_select_db($notify_DB_DBName, $notify_Connect)or die("Couldn’t select database:" . mysql_error(). "" . mysql_errno());
$notify_req = 'cmd=_notify-validate';
foreach ($_POST as $notify_key => $notify_value)
{
$notify_value = urlencode(stripslashes($notify_value));
$notify_req .= "&$notify_key=$notify_value";
$sonde = $sonde." 4";
}
$notify_header .= "POST /cgi-bin/webscr HTTP/1.0\r\n";
$notify_header .= "Content-Type: application/x-www-form-urlencoded\r\n";
$notify_header .= "Content-Length: " . strlen($notify_req) . "\r\n\r\n";
$notify_fp = fsockopen ($notify_paypal, 80, $notify_errno, $notify_errstr, 30);
$notify_headerMail= "Content-Type:text/html;charset=iso-8859-1\n";
$notify_headerMail.= "Content-Transfer-Encoding: 8bit\n";
$notify_headerMail.="From: ****";
####################################################################
## CODE ##
####################################################################
$sonde = $sonde." 5";
if (!$notify_fp)
{
// Envoyer un e-mail si il y a une erreur HTTP
$sonde = $sonde." Erreur HTTP - $notify_recep_item_name le $notify_recep_date_fr à $notify_recep_heure - valeur $notify_prix EUR";
$sonde = $sonde." 6";
}
else
{
$sonde = $sonde." 7";
fputs ($notify_fp, $notify_header . $notify_req);
while (!feof($notify_fp))
{
$sonde = $sonde." 8";
$notify_res = fgets ($notify_fp, 1024);
if (strcmp ($notify_res, "VERIFIED") == 0)
{
$sonde = $sonde." 9";
$sonde = $sonde." Statut VERIFIED - $notify_recep_item_name le $notify_recep_date_fr à $notify_recep_heure - valeur $notify_prix EUR";
$notify_succes = "ok";
}
else if (strcmp ($notify_res, "INVALIDE") == 0)
{
$sonde = $sonde." 10";
// consigner pour étude manuelle
$sonde = $sonde." Statut INVALIDE - $notify_recep_item_name le $notify_recep_date_fr à $notify_recep_heure - valeur $notify_prix EUR";
}
}
fclose ($notify_fp);
}
$sonde = $sonde." 11";
if($notify_succes == "ok")
{
$sonde = $sonde." 12";
// Vérifier si le client à déjà un forfait en cours
$notify_req = mysql_query("SELECT identifiant FROM forfait WHERE identifiant = '".$notify_recep_espace_membre."'") or ($notify_erreur = mysql_error());
while($notify_data = mysql_fetch_assoc($notify_req));
{
$sonde = $sonde." 13";
$notify_identifiant = $notify_data['identifiant'];
}
if($notify_erreur == 1)
{
$sonde = $sonde." 14";
// Envoyer un e-mail si la requete n'as pas été envoyé
$sonde = $sonde." Erreur requête échoué - $notify_recep_item_name le $notify_recep_date_fr à $notify_recep_heure - valeur $notify_prix EUR";
}
else
{
$sonde = $sonde." 15";
$notify_duree = $notify_recep_code_produit;
// Ajoute dans la table créer le récapitulatif du paiement paypal
$notify_strQuery = "INSERT INTO paypal (var,identifiant,date_us,date_fr,heure,code_produit,nom_produit,montant,duree,type_monnaie,frais_de_port,taxes,type_transaction,compte_crediter_paypal,avis_clients,langue) values ('".$notify_recep_espace_membre.$notify_recep_date_us.$notify_recep_date_fr.$notify_recep_heure.$notify_recep_code_produit.$notify_recep_item_name.$notify_prix.$notify_duree."EUR0.000.00_xclick-subscriptions".$notify_recep_business."0FR','".$notify_recep_espace_membre."', '".$notify_recep_date_us."', '".$notify_recep_date_fr."', '".$notify_recep_heure."', '".$notify_recep_code_produit."', '".$notify_recep_item_name."', '".$notify_prix."', '".$notify_duree."', 'EUR', '0.00', '0.00', '_xclick-subscriptions', '".$notify_recep_business."', '0', 'FR')";
$notify_result = mysql_query($notify_strQuery) or ($notify_erreur = mysql_error());
if(isset($notify_erreur))
{
$sonde = $sonde." 16";
// Envoyer un e-mail si la requete n'as pas été envoyé
$sonde = $sonde." Erreur requête échoué - $notify_recep_item_name le $notify_recep_date_fr à $notify_recep_heure - valeur $notify_prix EUR";
}
else
{
$sonde = $sonde." 17";
$notify_tm = str_replace("1","",$notify_duree);
$notify_tm = str_replace("3","",$notify_tm);
$notify_tm = str_replace(" ","",$notify_tm);
$notify_tn = str_replace("M","",$notify_duree);
$notify_tn = str_replace("A","",$notify_tn);
if($notify_tm == "M")
{
$sonde = $sonde." 18";
// Année
$notify_duree_php_bis = "month";
}
else
{
$sonde = $sonde." 19";
// Année
$notify_duree_php_bis = "year";
}
$notify_duree_php = "+".$notify_tn." ".$notify_duree_php_bis;
// Ensuite on crée le forfait
$notify_date_expiration_fr = date('d-m-Y',strtotime("$notify_duree_php", strtotime(date("d-m-Y"))));
$notify_date_expiration_us = date('Y-m-d',strtotime("$notify_duree_php", strtotime(date("Y-m-d"))));
if($notify_recep_code_produit == "1M")
{
$notify_duree = "1 Mois"; $sonde = $sonde." 20";
}
elseif($notify_recep_code_produit == "3M")
{
$notify_duree = "3 Mois"; $sonde = $sonde." 21";
}
elseif($notify_recep_code_produit == "1A")
{
$notify_duree = "1 AN"; $sonde = $sonde." 22";
}
// Requête
mysql_query("INSERT INTO forfait (identifiant,forfait,heure_debut,duree,date_debut_us,date_debut_fr,etat,date_fin_us,date_fin_fr) VALUES ('".$notify_recep_espace_membre."','".$notify_recep_code_produit."','".$notify_recep_heure."','".$notify_duree."','".$notify_recep_date_us."','".$notify_recep_date_fr."','en_cours','".$notify_date_expiration_us."','".$notify_date_expiration_fr."')") or ($notify_erreur = mysql_error());
if(isset($notify_erreur))
{
$sonde = $sonde." 23";
// Envoyer un e-mail
$sonde = $sonde." Erreur la requête FORFAIT échoué - $notify_recep_item_name le $notify_recep_date_fr à $notify_recep_heure - valeur $notify_prix EUR - $notify_erreur";
}
else
{
$sonde = $sonde." 24";
// Envoyer un e-mail si tout se spasse bien
$sonde = $sonde." VERIFIED - SUCCES requête effectué - $notify_recep_item_name le $notify_recep_date_fr à $notify_recep_heure - valeur $notify_prix EUR";
}
}
}
}
$sonde = $sonde." 25";
$sondes = str_replace("VERIFIED","<42545>VERIFIED</42545>",$sonde);
$md = '<42545>';
$d = strpos( $sondes, $md ) + strlen( $md );
$mf = '</42545>';
$f = strpos( $sondes, $mf );
$verified = substr( $sondes, $d, $f - $d );
if($verified == "VERIFIED")
{
$etat = "Transaction Effectuée";
}
else
{
$etat = "Transaction Erronée";
}
//-->> ENVOI DU RAPPORT
mail("****@hotmail.fr",$etat,$sonde);
?>
Et le reste :
acc.php,
ann.php,
****-prvkey.pem ( pour moi :
9f71d63e4dac3a6f7c41b0058479a280-prvkey.pem ),
****-pubcert.pem et
paypal_cert_pem.pem
Il y a l'intégralité de ces fichiers ici, sur une partie de mon site : [url]http://www.%20Vente%20en%20ligne.com/source/paypal.rar[/url]
et pour ceux qui n'ont pas WinRar... [url]http://www.%20Vente%20en%20ligne.com/source/paypal.exe[/url]
Si il y a des erreurs, je vais les corriger, si vous en voyez merci de me les indiquer...