mise en place d'un système de paiement

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : mise en place d'un système de paiement

Re: mise en place d'un système de paiement

par @rthur » 15 sept. 2022, 17:59

Dit autrement :
- Les vérifications côté serveur en PHP sont obligatoires car nécessaires à la sécurité
- Les vérification côté front (HTML ou JS) sont facultatives mais recommandées car elles permettent une meilleure expérience utilisateur.

Re: mise en place d'un système de paiement

par Patriboom » 15 sept. 2022, 14:16

Les vérifications en PHP sont bienvenues, mais elle ne pourront toujours être faites qu'après soumission du formulaire car PHP travaille du côté serveur. Avant que le formulaire soit soumis, il faut travailler côté client, donc en javascript, json et autres membres de la famille js

Re: mise en place d'un système de paiement

par gabinou » 15 sept. 2022, 11:54

Je croyais qu'il fallait faire des vérifications en PHP car le Javascript pouvais etre désactivé ?

Re: mise en place d'un système de paiement

par Patriboom » 13 sept. 2022, 17:29

Bonjour Gabinou,

il vous serait peut-être utile de soumettre votre formulaire à une vérification avant de le soumettre. Cette façon de faire pourrait alors vous ouvrir la porte à l'enregistrement de données dans votre BDD avant la soumission des infos bancaire et le tutti-quanti traitement par la banque.

Pour ce faire, votre balise body doit inclure la commande de pré-vérification
<body name="blabla" action="blibli" method="POST"  onSubmit="return Verif(this.form)" >
Ensuite, on crée la fonction Verif en javascript; de là, nous pourrons lancer à la fois une vérification et une inscription en BDD comme suit:
<script type="text/javascript">
	function Verif(formulaire) {
		//D'abord la vérification des données, voyons que tout y est complet
		if (document.getElementById('NumeroCarte').value == "") { alert("Il faut inscrire votre numéro de carte"); return false; }
		if (document.getElementById('NomPrenom').value == "") { alert("Il faut inscrire vos prénom et nom"); return false; }
		//Vous voyez l'idée !!!
		
		//Maintenant, nous ferons un appel ajax pour traiter l'information supplémentaire et l'enregistrer en BDD
		var LaPage = "PageDeTraitementDesDonnees.php";
		var xhttp = getXMLHttpRequest();
		var valeurs = "Voici mes valeurs";
		valeurs = valeurs + "&Nom=" + document.getElementBy('input_Nom').value;
		valeurs = valeurs + "&Cod=" + document.getElementBy('input_Cod').value;
		valeurs = valeurs + "&Bam=" + document.getElementBy('input_Bam').value;
		valeurs = valeurs + "&Bom=" + document.getElementBy('input_Bom').value;
		xhttp.open("POST", LaPage, true);
		xhttp.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
		xhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
		xhttp.onreadystatechange = function() {
			if (this.status == 200 && this.readyState == 4 ) {
				var reponse = this.responseText;
//				alert('Voici ma réponse : \n\n' + reponse);
				return reponse;
			}
		}
		xhttp.send(valeurs);
	}
</script>
Finalement, dans la page de traitement des données supplémentaires qu'ajax a appelée, nous traitons les données supplémentaires ainsi ( page « PageDeTraitementDesDonnees.php » ):
var_dump($_POST);
return (mysqli_query($db, $requete);

Re: mise en place d'un système de paiement

par gabinou » 13 sept. 2022, 09:06

Je me suis mal expliqué.
J'avais commencer à créer des lignes supplémentaires pour les champs voulus par mon chef.
Par contre, je ne vois pas comment moi je les récupère pour pouvoir faire un suivi des paiements et un export de tous les paiements .
Par contre, ce matin, j'ai réussi a aller jusqu'à la page de paiement avec ticket de paiement .
Et depuis je ressaye sois j'arrive sur une page accès refusé ou la page paiement annulé avant de rentrer mes coordonnées bancaire.
Peut etre que leur api de test qui dysfonctionne?

Re: mise en place d'un système de paiement

par Patriboom » 12 sept. 2022, 04:37

Ce que t'a fourni la banque, c'est le minimum requis pour le fonctionnement.
Les champs que veut voir ton patron sont en supplément. Ce sont donc, selon ce que je comprends, de simples champs HTML à créer avec des balises
<input name="">
que tu géreras ensuite dans ton fichier PHP de réception (voir l'élément "action" de ta balise
<form>
Si ta balise
<form>
a une méthode « POST » , tu retrouveras - du côté de la page de réception - ton contenu dans le tableau $_POST, si non - la méthode est « GET », tu retrouveras ton contenu dans le tableau $_GET
Ainsi (exemple):
<form action="soumettre.php" method="POST">
blabla, les champs requis par la banque, champs cachés
Les tiens: 
Votre nom : <input name="Nom" type="input" /><br />
Votre pointure de soulier : <input name="soulier" type="number" /><br />
Votre mets préféré : <input name="mets" type="text" /><br />
etc.
<br />
<input type="submit" value="Soumettre" />
<br /><br />
</form>
Dans la page soumettre.php du récupéreras les données ainsi:
echo 'Monsieur  / madame '.$_POST["Nom"].'<br />';
echo 'chausse du '.$_POST["soulier"].'<br />';
echo 'et aime manger ça : '.$_POST["mets"].'<br />';

mise en place d'un système de paiement

par gabinou » 09 sept. 2022, 15:18

Je suis confrontée a un soucis.
Ma société veux mettre un paiement en ligne concernant des factures.
Elle veux que je l'intègre sur le site web de celle ci .
Ce site web est juste un simple site vitrine qui a été fait par WordPress.
C'est pas l'intégré qui me soucis actuellement mais la rédaction de ce fichier.
La banque m'a bien fourni une documentation sur la mise en place via PHP sauf que je ne comprend pas une chose .
Sur leur fichier, sur le formulaire, il n'y a qu'un bouton validé , ts les autres champs sont cachés.
Le problème c'est que mon chef veux que le client rentre son nom, son email, la référence de la facture, la référence facture et le montant de la facture qu'il veux régler.
Je ne trouve aucun explication pour ces ajouts de ligne.
Dois je créer une base de données?
Je n'ai trouvé aucun tutos sur google
J'ajouterai bien ses lignes dans le formulaire.
A moins que je dois faire un formulaire a part?
Si une personne a déjà du mettre ce système en place , j'aimerai bien un peu d'aide
Je ne vous mets que le fichier du formulaire
<?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_shoppingcart .
	"&PBX_EMAIL=" . $pbx_shoppingcart .
	"&PBX_REFERENCE_PIECE=" . $pbx_shoppingcart .
	"&PBX_REFERENCE_CLIENT=" . $pbx_shoppingcart .

	"&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>