Aller au contenu

passage de variable a un module de paiement


binjivb

Sujets conseillés

Bonjour à vous. Je suis ici un petit nouveau, même si je viens ici régulièrement pour glaner quelques précieuses informations.

J'avais installé un module de paiement (Cyberplus) sur un site marchand. Je n'avais aucun problème avec. Puis j'ai changé d'hébergement (tout en restant chez le même hébergeur, OVH) et par la même occasion de nom de domaine. En revanche mes codes et mon arborescence sont exactement les même. Depuis le module ne fonctionne qu'une fois sur deux.

En fait au moment ou le client souhaite procéder au paiement, je passe par une page qui me recalcule le montant exact de ce qu'il doit. Ce code fonctionne parfaitement. Puis je passe ma variable "total" en variable de session. Je fait une redirection (header) vers un script dans le repertoire CGI. La je récupère cette variable de session. Et une fois sur deux, il ne reconnait pas cette dernière, et indique à l'écran que le montant n'est pas renseigné. Et je n'arrive pas à comprendre quel est le facteur qui peut faire bugger. Avec mon propre ordinateur cela fonctionne très bien, mais avec celui de mon coloc, ça ne marche plus (avec le même compte client et la même commande). J'ai demandé à des amis d'essayer, y compris à l'étranger, et c'est une vraie loterie.

J'ai appelé la hotline de cyberplus, qui me renvoi vers l'hébergeur sans vraiment comprendre d'ou ça peut venir. OVH me dit que ça ne peut pas venir de chez eux et me renvoi à mes scripts. Et en même temps, passer une variable en session et la récupérer à la page d'après, ce n'est pas bien sorcier. Je ne comprend pas trop ou j'aurais pu faire une bourde.

Si vous avez déjà été confronté à ce problème, ou si vous voyez d'ou ça peut venir, ça m'aiderait beaucoup. Merci d'avance.

Lien vers le commentaire
Partager sur d’autres sites

J'aurais tendance à te répondre la même chose qu'OVH: si tu ne récupères pas la bonne valeur pour ta variable de session, c'est que ton script contient une erreur.

Comment enregistres-tu cette variable, et comment la récupères-tu ?

Dan

Lien vers le commentaire
Partager sur d’autres sites

A ta place j'écarterais un bug du module de paiement en testant ta variable lorsqu'elle est appelée dans le répertoire CGI.

Comment gères-tu les sessions ?

Lorsque la commande est passée sur le module de paiement, les sessions (panier, total,etc...) doivent être abandonnées.

Ensuite ton processus continue avec les variables renvoyées par la banque

Lien vers le commentaire
Partager sur d’autres sites

Merci pour vos réponses ultra rapides.

je déclare mes variables de session de la seule manière que je connais. Je commence ma session par session_start(). A la fin de mon calcul du montant, je déclare ma variable ainsi :

$_SESSION['total'] = total;

Puis je la récupère dans le fichier suivant (dans le repertoire des CGI) :

$total = $_SESSION['total'];

Ensuite je renseigne les paramètres qui vont être envoyés à la banque :

$parm="$parm amount=".$total;

Mais il renvoie sur certains ordinateurs

message erreur : Error in call parameters structure ( amount not filled )

Si je fais un echo $total, il ne me renvoie rien (sur les ordinateurs ou ça plante).

Merci beaucoup de vous creuser la tête sur mon cas.

Lien vers le commentaire
Partager sur d’autres sites

Tu as d'autres nombres décimaux en variables de sessions qui passent bien ou c'est seulement total ?

Sinon as tu des entiers qui passent bien : ID commande par exmple.

Si c'est seulement les décimaux qui ne passent pas vérifie les formats de tes décimaux, l'encodage des pages, les variables locales du serveur...c'est seulement quelques pistes.

Personnellement je détruirais la session lorsque le panier est validé par le client avant de passer les variables au module de paiement = à ce stade les variables de session ne sont plus très intéressantes.

Tu peux préférer poster les variables plutôt que maintenir une session car :

1. Les sessions sont moins fiables. OK pour un panier avant validation mais pas après la validation du panier qui avalise la transaction.

2. il n'y a plus rien de confidentiel à ce stade dans les variables donc pas de problème à les poster: le profil client n'est plus utile, il n'y a plus que des ID, montants, etc...

Lien vers le commentaire
Partager sur d’autres sites

Merci Robinsonvendredi,

Ce n'est je pense pas un problème de décimal. J'ai essayé avec un montant en "dur" (j'ai indiqué 400 directement dans mon code), la seconde page qui doit récupérer le montant ne le récupère pas. Comme si les sessions ne fonctionnaient pas dans le repertoire des CGI ou est stockée cette page.

J'ai essayé avec les post, même chose, il ne reconnait pas les post (enfin comme pour les sessions, c'est une loterie). En revanche ça fonctionne bien avec les GET, mais là... En tout cas ça prouve que mon script est correct.

Est-il possible que ce soit une merde au niveau d'OVH ?

Merci.

Lien vers le commentaire
Partager sur d’autres sites

Tu parles du répertoire CGI d'un côté... et de sessions PHP de l'autre :wacko:

J'imagine que dans ton répertoire CGI tu as des programmes exécutables (compilés) ou écrits en Perl.

Comment veux-tu procéder pour leur passer une variable de session Php ?

Dan

Lien vers le commentaire
Partager sur d’autres sites

>>Dan

J'ai effectivement un script en PHP dans mon repertoire CGI. C'est dans ce script que je récupère ma variable. Ensuite ce script (fournit par Cyberplus, et placé là comme demandé par eux) appelle les executables. Cela fonctionnait sur mon ancien hébergement (chez OVH également) et maintenant ça ne fonctionne qu'une fois sur deux sans vraiment arriver à comprendre pourquoi. Sur mon propre ordinateur, un coup ça passe, un coup ça ne passe pas, avec pourtant le même montant, et le même compte client. Donc j'envoie à priori les mêmes informations.

>>Robinsonvendredi

En fait c'est comme si mon repertoire CGI était situé sur un autre serveur, et que du coup il bloquait les post et sessions. en revanche les GET passent. En même temps je ne m'y connait pas trop la dedans.

Merci à vous deux.

Lien vers le commentaire
Partager sur d’autres sites

As-tu fait un essai en plaçant ce script en Php au même endroit que le reste de ton appli ? Il devrait te suffire de changer les lignes appellant les scripts CGI pour que ça tourne.

Ton répertoire cgi-bin se trouve dans /home/login/cgi-bin tu en as créé un dans /home/login/www/ ?

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...