Trash Posté 1 Mars 2005 Posté 1 Mars 2005 Bonjour, Nous utilisons le système de paiement de la Société générale « Sogenactif ». Celui-ci est basé sur deux modules : un module de requête envoyant les informations de paiement au serveur Sogenactif et un module réponse chargé de réceptionner la réponse du serveur Sogenactif suite à la requête envoyée. Les modules « request » et « response » sont donc deux applications utilisées par le système Sogenactif. Le SAV Sogenactif nous précise que ces deux modules doivent avoir des droits dexécution pour pouvoir sexécuter correctement. Les deux modules ont les mêmes CHMOD (755 dans notre cas ce qui est suffisant), cependant le module de requête fonctionne depuis toujours, tandis que le module de réponse ne fonctionne plus depuis plusieurs semaines. Hors, le module de réponse a fonctionné pendant plusieurs jours après linstallation du système et, un jour, celui-ci a cessé de fonctionner, alors quaucun fichier na été modifié sur le serveur de notre part. Nous avons bien essayé tout ce que le SAV Sogenactif nous a conseillé de faire, même avec des modules compilés pour différentes versions de Linux (Debien dans notre cas), mais rien ny fait, personne ne semble avoir de solution à notre problème. Le SAV précise également que tout est fonctionnel de leur côté et que le problème vient bien de notre script/configuration. Ils ont également testé nos scripts avec succès de leur côté. Voici le message d'erreur rencontré : erreur appel response executable response non trouve /home/sogenactif/payment/bin/response Auriez-vous une idée de la provenance de ce dysfonctionnement ? Merci davance.
Anonymus Posté 2 Mars 2005 Posté 2 Mars 2005 Peux tu mettre en ligne le script qui pose problème ? Merci.
Trash Posté 2 Mars 2005 Auteur Posté 2 Mars 2005 Peux tu mettre en ligne le script qui pose problème ? Merci. <{POST_SNAPBACK}> <? echo "<table width=\"100%\" border=\"0\" align=\"center\"> <tr> <td height=\"65\" colspan=\"2\"><div align=\"center\"><img src=\"images/titre1.gif\" width=\"185\" height=\"39\"></div></td> </tr> <tr> <td align=\"center\" height=\"111\" colspan=\"2\"><br><br><font size=\"2\" face=\"Geneva, Arial, Helvetica, sans-serif\"> "; // Récupération de la variable cryptée DATA $message="message=$DATA"; // Initialisation du chemin du fichier pathfile (à modifier) // ex : // -> Windows : $pathfile="pathfile=c:\\repertoire\\pathfile"; // -> Unix : $pathfile="pathfile=/home/repertoire/pathfile"; // // Cette variable est facultative. Si elle n'est pas renseignée, // l'API positionne la valeur à "./pathfile". // $parm="$parm pathfile=chemin_du_fichier_pathfile"; // Initialisation du chemin de l'executable response (à modifier) // ex : // -> Windows : $path_bin = "c:\\repertoire\\bin\\response"; // -> Unix : $path_bin = "/home/repertoire/bin/response"; // $path_bin = "/home/sogenactif/payment/bin/response"; // Appel du binaire response $result=exec("$path_bin $message $pathfile"); // Sortie de la fonction : !code!error!v1!v2!v3!...!v29 // - code=0 : la fonction retourne les données de la transaction dans les variables v1, v2, ... // : Ces variables sont décrites dans le GUIDE DU PROGRAMMEUR // - code=-1 : La fonction retourne un message d'erreur dans la variable error // on separe les differents champs et on les met dans une variable tableau $tableau = explode ("!", $result); // Récupération des données de la réponse $code = $tableau[1]; $error = $tableau[2]; $merchant_id = $tableau[3]; $merchant_country = $tableau[4]; $amount = $tableau[5]; $transaction_id = $tableau[6]; $payment_means = $tableau[7]; $transmission_date= $tableau[8]; $payment_time = $tableau[9]; $payment_date = $tableau[10]; $response_code = $tableau[11]; $payment_certificate = $tableau[12]; $authorisation_id = $tableau[13]; $currency_code = $tableau[14]; $card_number = $tableau[15]; $cvv_flag = $tableau[16]; $cvv_response_code = $tableau[17]; $bank_response_code = $tableau[18]; $complementary_code = $tableau[19]; $return_context = $tableau[20]; $caddie = $tableau[21]; $receipt_complement = $tableau[22]; $merchant_language = $tableau[23]; $language = $tableau[24]; $customer_id = $tableau[25]; $order_id = $tableau[26]; $customer_email = $tableau[27]; $customer_ip_address = $tableau[28]; $capture_day = $tableau[29]; $capture_mode = $tableau[30]; $data = $tableau[31]; // analyse du code retour if (( $code == "" ) && ( $error == "" ) ) { print ("<BR><CENTER>erreur appel response</CENTER><BR>"); print ("executable response non trouve $path_bin"); } // Erreur, affiche le message d'erreur else if ( $code != 0 ){ print ("<center><b><h2>Erreur appel API de paiement.</h2></center></b>"); print ("<br><br><br>"); print (" message erreur : $error <br>"); } // OK, affichage des champs de la réponse else { echo "<meta http-equiv=\"refresh\" content=\"0; URL=index.php?cat=28&newuser=$return_context&id=$transaction_id\">"; } echo " </font> </td> </tr> </table> "; ?>
Guest Ben Posté 22 Mars 2005 Posté 22 Mars 2005 (modifié) j'ai eu le même problème avec le script call_response.php ma solution a été de remplacer $message="message=$DATA"; par $message="message=".$_POST['DATA']; sachant que DATA est envoyé par une methode POST (et non pas GET) Il suffit que PHP ait été réinstallé avec les options de protection des variables globales pour faire planter le script. *Bon courage Modifié 22 Mars 2005 par Ben
Trash Posté 25 Mars 2005 Auteur Posté 25 Mars 2005 j'ai eu le même problème avec le script call_response.phpma solution a été de remplacer $message="message=$DATA"; par $message="message=".$_POST['DATA']; sachant que DATA est envoyé par une methode POST (et non pas GET) Il suffit que PHP ait été réinstallé avec les options de protection des variables globales pour faire planter le script. *Bon courage <{POST_SNAPBACK}> J'ai testé en enregistrant la variable $message dans une base de données, il en résulte une valeur correcte. Le problème ne vient donc pas de là... :s Merci quand même.
sam75 Posté 31 Mars 2005 Posté 31 Mars 2005 Contrepartie financière assurée pour la résolution de ce problème. Très urgent. Merci de votre aide,
NiGhMa Posté 31 Mars 2005 Posté 31 Mars 2005 Je ne sais pas si le problème vient de là mais tu as oublié de préciser un chemin pour : // Initialisation du chemin du fichier pathfile (à modifier) // ex : // -> Windows : $pathfile="pathfile=c:\\repertoire\\pathfile"; // -> Unix : $pathfile="pathfile=/home/repertoire/pathfile"; // // Cette variable est facultative. Si elle n'est pas renseignée, // l'API positionne la valeur à "./pathfile". // $parm="$parm pathfile=chemin_du_fichier_pathfile"; Aussi, peux-tu nous dire d'où vient le $DATA ? Vient-il du POST ? Si tu ajoutes un echo ' '.$DATA.' '; , as-tu un résultat ? et pour $result ? Y a-t-il qqch de dans ? Je ne sais pas si tu l'utilises déjà mais un bon débugger dans une chouette interface GUI c'est ZEND... Il m'a déjà beaucoup aidé dans ce genre de cas.
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant