1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187
|
<?php
// --------------- D�CLARATION DES VARIABLES ---------------
$pbx_site = '9999999'; //variable de test 9999999
$pbx_rang = ' 95'; //variable de test 95
$pbx_identifiant = '123456789'; //variable de test 123456789
$pbx_total = "200"; //variable de test 200
// Suppression des points ou virgules dans le montant
$pbx_total = str_replace(",", "", $pbx_total);
$pbx_total = str_replace(".", "", $pbx_total);
$pbx_cmd = 'cmd_test1'; //variable de test cmd_test1 ( référence commande coté commerçant)
$pbx_porteur = ''; //variable de test (adresse email du porteur de la cb )
//ajout SUPPLEMENTAIRE de champ dans le formulaire
$pbx_name = "";
$pbx_mail = "";
$pbx_reference_piece = "";
$pbx_reference_client = "";
// Param�trage de l'url de retour back office site (notification de paiement IPN) :
$pbx_repondre_a = '';
// Param�trage des donn�es retourn�es via l'IPN :
$pbx_retour = 'Mt:M;Ref:R;Auto:A;Erreur:E'; //référence a recevoir (le E permets de savoir l'erreur ( chiffre comment par 000 ou 001XX) , se reporter à la notice, en cas de succés : E égale 00000)
// Param�trage des urls de redirection navigateur client apr�s paiement :
$pbx_effectue = 'http://www.votre-site.extention/accepte.php';
$pbx_annule = 'http://www.votre-site.extention/annule.php';
$pbx_refuse = 'http://www.votre-site.extention/refuse.php';
// On r�cup�re la date au format ISO-8601 :
$dateTime = date("c");
// Nombre de produit envoy� dans PBX_SHOPPINGCART :
$pbx_nb_produit = 'nombre de produit dans le panier'; //variable de test 5
// Construction de PBX_SHOPPINGCART :
$pbx_shoppingcart = "<?xml version=\"1.0\" encoding=\"utf-8\"?><shoppingcart><total><totalQuantity>" . $pbx_nb_produit . "</totalQuantity></total></shoppingcart>";
// Valeurs envoyées dans PBX_BILLING :
$pbx_prenom_fact = 'prenom de l utilisateur de facturation'; //variable de test Jean-Marie
$pbx_nom_fact = 'nom de l utilisateur de facturation'; //variable de test Thomson
$pbx_adresse1_fact = 'ligne1 de l adresse de facturation'; //variable de test 1 rue de Paris
$pbx_adresse2_fact = 'ligne2 de l adresse de facturation'; //variable de test <vide>
$pbx_zipcode_fact = 'code postal de l adresse de facturation'; //variable de test 75001
$pbx_city_fact = 'ville de l adresse de facturation'; //variable de test Paris
$pbx_country_fact = 'code pays iso-3166-1 numérique de l adresse de facturation'; //variable de test 250 (pour la France)
// Construction de PBX_BILLING :
$pbx_billing = "<?xml version=\"1.0\" encoding=\"utf-8\"?><Billing><Address><FirstName>" . $pbx_prenom_fact . "</FirstName>" .
"<LastName>" . $pbx_nom_fact . "</LastName><Address1>" . $pbx_adresse1_fact . "</Address1>" .
"<Address2>" . $pbx_adresse2_fact . "</Address2><ZipCode>" . $pbx_zipcode_fact . "</ZipCode>" .
"<City>" . $pbx_city_fact . "</City><CountryCode>" . $pbx_country_fact . "</CountryCode>" .
"</Address></Billing>";
// --------------- SELECTION DE L'ENVIRRONEMENT ---------------
// Recette (paiements de test) :
$urletrans = "";
// Production (paiements r�els) :
// URL principale :
// $urletrans ="";
// URL secondaire :
// $urletrans ="";
// --------------- RECUPERATION DE LA CLE HMAC ---------------
// Connection à la base de données
// mysql_connect...
// On récupère la clé secréte HMAC (stockée dans une base de données par exemple) et que l'on renseigne dans la variable $hmackey;
$hmackey = '4642EDBBDFF9790734E673A9974FC9DD4EF40AA2929925C40B3A95170FF5A578E7D2579D6074E28A78BD07D633C0E72A378AD83D4428B0F3741102B69AD1DBB0';
// $hmackey = 'votre clé générée depuis le back office Vision';
// --------------- TRAITEMENT DES VARIABLES ---------------
// On cr�e la cha�ne � hacher sans URLencodage
$msg = "PBX_SITE=" . $pbx_site .
"&PBX_RANG=" . $pbx_rang .
"&PBX_IDENTIFIANT=" . $pbx_identifiant .
"&PBX_TOTAL=" . $pbx_total .
"&PBX_DEVISE=978" .
"&PBX_CMD=" . $pbx_cmd .
"&PBX_PORTEUR=" . $pbx_porteur .
"&PBX_REPONDRE_A=" . $pbx_repondre_a .
"&PBX_RETOUR=" . $pbx_retour .
"&PBX_EFFECTUE=" . $pbx_effectue .
"&PBX_ANNULE=" . $pbx_annule .
"&PBX_REFUSE=" . $pbx_refuse .
"&PBX_HASH=SHA512" .
"&PBX_TIME=" . $dateTime .
"&PBX_SHOPPINGCART=" . $pbx_shoppingcart .
//ajout des differents names
"&PBX_NAME=" . $pbx_name.
"&PBX_EMAIL=" . $pbx_mail .
"&PBX_REFERENCE_PIECE=" . $pbx_reference_piece .
"&PBX_REFERENCE_CLIENT=" . $pbx_reference_client .
"&PBX_BILLING=" . $pbx_billing;
// echo "$ msg :" . $msg;
// Si la cl� est en ASCII, On la transforme en binaire
$binKey = pack("H*", $hmackey);
// On calcule l�empreinte (� renseigner dans le param�tre PBX_HMAC) gr�ce � la fonction hash_hmac et //
// la cl� binaire
// On envoi via la variable PBX_HASH l'algorithme de hachage qui a �t� utilis� (SHA512 dans ce cas)
// Pour afficher la liste des algorithmes disponibles sur votre environnement, d�commentez la ligne //
// suivante
//print_r(hash_algos());
$hmac = strtoupper(hash_hmac('sha512', $msg, $binKey));
// La cha�ne sera envoy�e en majuscule, d'o� l'utilisation de strtoupper()
// On cr�e le formulaire � envoyer
// ATTENTION : l'ordre des champs dans le formulaire est extr�mement important, il doit
// correspondre exactement � l'ordre des champs dans la cha�ne hach�e.
?>
<!------------------ ENVOI DES INFORMATIONS A e-Transactions (Formulaire) ------------------>
<!--les commentaires sont en dessous des variables désignées et celles qui possèdent une astèrisque * sont obligatoires-->
<form method="POST" action="<?php echo $urletrans; ?>">
<input type="hidden" name="PBX_SITE" value="<?php echo $pbx_site; ?>">
<!--*numéro de site fourni par e-Transactions-->
<input type="hidden" name="PBX_RANG" value="<?php echo $pbx_rang; ?>">
<!--*numéro de rang fourni par e-Transactions-->
<input type="hidden" name="PBX_IDENTIFIANT" value="<?php echo $pbx_identifiant; ?>">
<!--*indentifiant interne fourni par e-Transactions-->
<div>
<label>montant à payer </label>
<input type="number" name="PBX_TOTAL" value="<?php echo $pbx_total ?>">
<!--*montant total de la transaction-->
</div>
<input type="hidden" name="PBX_DEVISE" value="978">
<!--*devise de la transaction -->
<input type="hidden" name="PBX_CMD" value="<?php echo $pbx_cmd; ?>">
<!--*référence commande coté commerçant -->
<!-- <input type="hidden" name="PBX_SOURCE" value="RWD">
systématique RWD pour affichage responsive design -->
<input type="hidden" name="PBX_PORTEUR" value="<?php echo $pbx_porteur; ?>">
<!--*adresse e-mail de l'acheteur-->
<input type="hidden" name="PBX_REPONDRE_A" value="<?php echo $pbx_repondre_a; ?>">
<input type="hidden" name="PBX_RETOUR" value="<?php echo $pbx_retour; ?>">
<!--*listes des variables a retourner par e-transactions-->
<input type="hidden" name="PBX_EFFECTUE" value="<?php echo $pbx_effectue; ?>">
<input type="hidden" name="PBX_ANNULE" value="<?php echo $pbx_annule; ?>">
<input type="hidden" name="PBX_REFUSE" value="<?php echo $pbx_refuse; ?>">
<input type="hidden" name="PBX_HASH" value="SHA512">
<!--*type d'algorithme de hachage pour le calcul de l'empreinte-->
<input type="hidden" name="PBX_TIME" value="<?php echo $dateTime; ?>">
<!--*horodatage de la transaction-->
<input type="hidden" name="PBX_SHOPPINGCART" value="<?php echo htmlspecialchars($pbx_shoppingcart); ?>">
<!---------champs que j'ai ajouté sur le formulaire -------->
<div>
<label>nom:</label>
<input type="text" id="nom" name="PBX_NAME" required />
</div>
<div>
<label>Email:</label>
<input type="email" id="email" name="PBX_EMAIL" required />
</div>
<div>
<label>Référence pièce:</label>
<input type="text" id="reference_piece" name="PBX_REFERENCE_PIECE" required />
</div>
<div>
<label>Référence client:</label>
<input type="text" id="reference_client" name="PBX_REFERENCE_CLIENT" required />
</div>
<!--------------------------------------------------------------------------------->
<input type="hidden" name="PBX_BILLING" value="<?php echo htmlspecialchars($pbx_billing); ?>">
<input type="hidden" name="PBX_HMAC" value="<?php echo $hmac; ?>">
<!--*signature cachée avec la clé secrète HMAC-->
<!--*signaturecalculée avec la clé secrete-->
<input type="submit" value="Envoyer">
</form> |
Partager