MEthode http post php + token

Fermé
gbrylk Messages postés 3 Date d'inscription lundi 27 mai 2013 Statut Membre Dernière intervention 27 mai 2013 - Modifié par irongege le 27/05/2013 à 16:52
[Dal] Messages postés 6193 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 4 juillet 2024 - 28 mai 2013 à 10:50
Bonjour,
Bonjour,
Je travaille actu sur le module de paiement d'un site de e-commerce. Ma plateforme de paiement utilise la methode HTTP POST pour la procédure de connexion. Pour cela j'envoye une premier requete qui me ramène un token. Ensuite j'utilise ce token auquelle j'ajoute encore d'autre variable pour ouvrir ma session. Mon problème est que après avoir envoyer le premier post je recois le token sur la page du navigateur a l'url du site de paiement; je ne sais vraiment pas comment comment recuperer le token qui est sur le navigateur le convertir en variable et ensuite le ramené via HTTP POST


Mon code

<form action="<?php echo $action; ?>" method="post" target="_blank">
<?php if (!$test) { ?>
<input type="hidden" name="merchantid" value="<?php echo $merchantid; ?>" />
<input type="hidden" name="success_url" value="<?php echo $success_url; ?>" />
<input type="hidden" name="cancel_url" value="<?php echo $cancel_url; ?>" />
<input type="hidden" name="declined_url" value="<?php echo $declined_url; ?>" />
<?php } else { ?>
<input type="hidden" name="merchantid" value="ompay_test" />
<input type="hidden" name="test_transaction" value="100" />
<input type="hidden" name="test_success_url" value="<?php echo $success_url; ?>" />
<input type="hidden" name="test_cancel_url" value="<?php echo $cancel_url; ?>" />
<input type="hidden" name="test_declined_url" value="<?php echo $declined_url; ?>" />
<input type="hidden" name="callback_url" value="<?php echo $callback_url; ?>" />
<?php } ?>
<input type="hidden" name="amount" value="<?php echo $amount; ?>" />
<input type="hidden" name="sessionid" value="<?php echo $sessionid; ?>" />
<input type="hidden" name="purchaseref" value="<?php echo $purchaseref; ?>" />
<input type="hidden" name="billing_fullname" value="<?php echo $billing_fullname; ?>" />
<input type="hidden" name="billing_address" value="<?php echo $billing_address; ?>" />
<input type="hidden" name="billing_postcode" value="<?php echo $billing_postcode; ?>" />
<input type="hidden" name="delivery_fullname" value="<?php echo $delivery_fullname; ?>" />
<input type="hidden" name="delivery_address" value="<?php echo $delivery_address; ?>" />
<input type="hidden" name="delivery_postcode" value="<?php echo $delivery_postcode; ?>" />
<input type="hidden" name="customer_phone_number" value="<?php echo $customer_phone_number; ?>" />
<input type="hidden" name="email_address" value="<?php echo $email_address; ?>" />
<input type="hidden" name="hide_billing_details" value="true" />

<div class="buttons">
<div class="right">
<input type="submit" value="<?php echo $button_confirm; ?>" class="button" />
</div>
</div>
</form>














A voir également:

3 réponses

[Dal] Messages postés 6193 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 4 juillet 2024 1 090
Modifié par [Dal] le 27/05/2013 à 11:36
Salut gbrylk,

La documentation de la plateforme de paiement doit t'indiquer comment se présente le "token", comment il est transmis, et comment l'utiliser. Après avoir validé le paiement, le site de la plateforme va rediriger le visiteur sur la page que tu as indiquée comme étant la page de retour notamment en cas de succès du paiement.

C'est souvent un paramètre glissé dans l'URL, exploitable selon les indications de la plateforme.

Dans ce cas, tu le récupère avec $_GET sur la page d'arrivée, par exemple en supposant que la plateforme te le renvoie sous le nom "token" :

if (isset($_GET["token"]))
{
  // faire quelque chose avec $_GET["token"]
}

https://www.php.net/manual/fr/reserved.variables.get.php


Dal
0
gbrylk Messages postés 3 Date d'inscription lundi 27 mai 2013 Statut Membre Dernière intervention 27 mai 2013
Modifié par gbrylk le 27/05/2013 à 21:19
Merci pour ta réponse mais DAL mais elle ne me sort pas encore de mon impasse ! Lorsque je clique sur le bouton valide du code si dessus je suis rediriger directement sur l'url de la plateforme qui est du genre [https://www.site.partenaire/init.php . Et c'est sur cette page de mon navigateur que s'affiche le token qui est une clef EX: 8ee51caaa2c2f4ee2e5b4b7ef5a89db7df1068d7
A cette etape les instruction du ma plateforme sont les suivante:


*INSTRUCTION DE LA PLATEFORME:

Après l'obtention du token, le marchand doit effectuer une redirection vers l'URL [https://www.site.partenaire/e-commerce/ en postant
des variables. Cette redirection ouvre la session préalablement crée lors de l'initialisation. Chaque session
sera limitée de 5 ouvertures max et valide pendant 30 minutes. Ces paramètres sont ajustables pour
chaque marchand.
Les paramètres de cette requête sont décrits dans le tableau ci-dessous :

-merchantid
-token
-amount
-sessionid
- etc..................


j'ai donc un "POST" a faire sur [https://www.site.partenaire/init.php pour obtenir le TOKEN puis un autre sur [https://www.site.partenaire/e-commerce/ pour ouvrir ma session . Et je ne comprends vraiment pas comment je peux réalise cela. J'ai vraiment besoin de votre aide merci infiniment !
0
[Dal] Messages postés 6193 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 4 juillet 2024 1 090
Modifié par [Dal] le 28/05/2013 à 10:56
Salut gbrylk,

OK, c'est un peu confus, y compris avec tes explications additionnelles.

Tu n'utiliserai pas le même système que cet autre personne : http://forum.opencart-france.com/developpement/cree-module-de-paiement-opencart-t1882.html ?

Si c'est cela, ta description ne correspond pas exactement aux instructions détaillées.

Tu dis que ce token que tu recherches est en fait le token de session avec le partenaire de paiement électronique, alors l'URL contenant le script https://www.site.partenaire/init.php est celle qui sert à ouvrir la session chez le partenaire en question (si un token de session est attribué, c'est bien qu'elle est créée), avec une requête POST formulée avec les paramètres adéquats que tu mentionnes.

Je ne pense pas, comme tu le dis, que le résultat de cette requête donne le token "dans l'URL". Cela devrait être le résultat de la requête renvoyé par le serveur.

Par ailleurs, je comprends qu'une fois ce token récupéré, tu dois rediriger l'utilisateur vers une autre URL, en utilisant le token récupéré, cette fois, dans une URL utilisée pour une redirection.

Si c'est bien cela, tu dois générer ta première requête avec curl sur ton serveur, je pense, car si tu la génère sur le navigateur de l'utilisateur, tu n'en verras pas le résultat.

Puis, tu fais ta redirection sur la 2ème URL.

Pour utiliser curl depuis Php tu devrais faire quelque chose comme cela (à adapter), avec un serveur Php supportant curl :

$ch = curl_init();

$postparams = array(
    'merchantid'    => urlencode($merchantid),
    'amount'        => urlencode($amount),
    'sessionid'     => urlencode($sessionid),
    'purchaseref'   => urlencode($purchaseref),
    'description'   => urlencode($description)
);

curl_setopt($ch, CURLOPT_URL,"https://www.site.partenaire/init.php");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postparams);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
// l'option suivante est en principe non nécessaire, si
// le site dispose d'un vrai certificat signé par une
// autorité de certification reconnue
// curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);

$response_token = curl_exec ($ch);

curl_close ($ch);

// TODO : vérifier qu'on a bien reçu quelque chose qui ressemble
// un token valide dans $response_token

// rediriger l'utilisateur vers la 2ème URL aveec le token obtenu
$url = "https://www.site.partenaire/e-commerce/?"   .
    "merchantid="   . urlencode($merchantid)        .
    "&token="       . urlencode($response_token)    .
    "&amount="      . urlencode($amount)            .
    "&sessionid="   . urlencode($sessionid)         .
    "&purchaseref=" . urlencode($purchaseref)       .
    "&description=" . urlencode($description);

if (headers_sent())
{
    die('<script type="text/javascript">window.location.href="' . $url . '";</script>');
} else
{
    header('Location: ' . $url);
    die();
} 

Ce code n'est pas testé, mais cela devait te donner une idée.


Dal
0