Methode de paiement Mercanet de BNP [Résolu]

cs_eli42 114 Messages postés mardi 24 décembre 2002Date d'inscription 20 juillet 2018 Dernière intervention - 12 juil. 2018 à 14:12 - Dernière réponse : cs_eli42 114 Messages postés mardi 24 décembre 2002Date d'inscription 20 juillet 2018 Dernière intervention
- 12 juil. 2018 à 15:08
Bonjour

Un ami voulant travailler avec moi a fait un transfert de domaine :
Ancien hébergement :
OVH + Wordpress + système paiement Mercanet
(Je n’ai pas testé le système paiement qui était en place)

Nouveau hébergement :
1and1 Mutualisé :
Le site est construit de A à Z fait maison HML, PHP et PHP 7.02

Communication site -> Mercanet méthode POST
Mode test 1 euros : tout fonctionne
Mode production 3 euros : je saisie les données visa, je saisie le code sécurité reçu pars SMS et là j’ai mercanet qui me répond paiement refusé

J’ai testé :
Visa premier : banque postale
MasterCard : compte-Nickel

J’utilise le même code qu'en test sauf :
- merchantId,
- keyVersion=1 passe à keyVersion=3 (la clé que j’utile est la 3eme généré le 3 avr. 2017)
- secretKey
- https://payment-webinit.mercanet.bnpparibas.net/paymentInit

Nota : j'utilise la clé secrète récupéré sur l'ancien site.

Je tourne en rond lol

Beaux temps belle mer
Jorge

Le code est récupére sur la doc Mercanet :
paiement.php
<?php
  // Génère un numéro de transaction aléatoire
  $transactionReference = rand(100000,999999);
  // Construit l'URL de retour pour récupérer le résultat du paiement sur le site e-commerce du marchand
  $normalReturnUrl = 'https://www.white-bird-decouverte.com/bnpresult.php';
  // Contruit la requête des données à envoyer à Mercanet
  $data = "amount=300|currencyCode=978|merchantId=XXXXXXXXXXXXXXX|normalReturnUrl=".$normalReturnUrl."|transactionReference=".$transactionReference."|keyVersion=3";
  // Encode en UTF-8 des données à envoyer à Mercanet
  $dataToSend= utf8_encode($data);
  // Clé secrète correspondant au merchandId de simulation
  $secretKey = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
  // Calcul du certificat par un cryptage SHA256 des données envoyées suffixé par la clé secrète
  $seal=hash('sha256', $dataToSend.$secretKey);
  // Envoi des données à Mercanet par un formulaire POST
?>

<form method="post" action="https://payment-webinit.mercanet.bnpparibas.net/paymentInit">
  <input type="hidden" name="Data" value="<?php echo $data; ?>">
  <input type="hidden" name="InterfaceVersion" value="HP_2.20">
  <input type="hidden" name="Seal" value="<?php echo $seal; ?>">
  <input type="submit" value="Payer">
</form>


Code retour :

paiement_retour.php
<?php
session_start();

if (strlen($_POST['Data']) > 0) {
    $str = str_replace("|", "&", $_POST['Data']);
    parse_str($str, $dataArray);
    if (strcmp($dataArray['responseCode'], "00") == 0) {
        
        echo 'autorisationid       = ' . $dataArray['authorisationId'] . '<br>';
        echo 'transactionReference = ' . $dataArray['transactionReference'] . '<br>';
        echo 'Paiement ACCEPTE';
        
    } else {
        echo 'transactionReference = : ' . $dataArray['transactionReference'];
        echo '<br>Paiement REFUSE';
    }
} else {
    echo 'aucun retour POST : Paiement REFUSE';
}
?>
Afficher la suite 

Votre réponse

1 réponse

cs_eli42 114 Messages postés mardi 24 décembre 2002Date d'inscription 20 juillet 2018 Dernière intervention - 12 juil. 2018 à 15:08
0
Merci
Re,

J'ai fait une grosse boulette, j'ai oubliai de mettre le retourerreur dans paiement_retour.php
du coup je m'appercois que c'est l'erreur 03 qui correspond a : L’identifiant commerçant est invalide
Faut que j'arrete de coder à de 20 heures à 10 Heures

Beau temps belle mer

--
Commenter la réponse de cs_eli42

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.