Methode de paiement Mercanet de BNP

Résolu
cs_eli42 Messages postés 139 Date d'inscription mardi 24 décembre 2002 Statut Membre Dernière intervention 8 juillet 2022 - 12 juil. 2018 à 14:12
cs_eli42 Messages postés 139 Date d'inscription mardi 24 décembre 2002 Statut Membre Dernière intervention 8 juillet 2022 - 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';
}
?>

1 réponse

cs_eli42 Messages postés 139 Date d'inscription mardi 24 décembre 2002 Statut Membre Dernière intervention 8 juillet 2022
12 juil. 2018 à 15:08
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

--
0