Aller au contenu

Sujets conseillés

Posté

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.

Posté

Peux tu mettre en ligne le script qui pose problème ?

Merci.

Posté
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>

";

?>

  • 3 semaines plus tard...
Posté (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é par Ben
Posté
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

<{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.

Posté

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.

Veuillez vous connecter pour commenter

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



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