IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

EDI, CMS, Outils, Scripts et API PHP Discussion :

[ATOS] Réception variable POST avec paiement Atos


Sujet :

EDI, CMS, Outils, Scripts et API PHP

  1. #1
    Membre à l'essai
    Inscrit en
    Janvier 2007
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 35
    Points : 16
    Points
    16
    Par défaut [ATOS] Réception variable POST avec paiement Atos
    Bonjour,
    J'ai un fichier php sur un serveur apache sensé récupérer une variable envoyée par un fichier se trouvant sur un autre serveur.

    Mais tout d'abord je dois vous expliquer l'environnement.
    J'installe une boutique en ligne avec solution de paiement e-transaction version Atos. Je suis hébergé en mutualisé chez OVH
    Le problème principal vient du fait que les deux hotline concernées se renvoient la responsabilité, vu les arguments (bidons - ça je sais au moins voir)de la hotline d'ovh je penche pour un problème serveur)
    Donc voilà pourquoi je vous pose cette question.

    Le système de paiement semble bien installé, une partie dans le cgi/bin le reste au coeur du site, il fonctionne en mode test mais le fichier sensé récupérer les infos de confirmation ne reçoit pas la variable

    J'ai essayé plusieurs syntaxes de récupération de la donnée envoyée par le serveur de paiement au cas où le problème se situe dans une compatibilité avec php, voici les différentes versions
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    // Récupération de la variable cryptée DATA
        $message="message=$HTTP_POST_VARS[DATA]";
        echo $message;
        $message="message=".$_POST['DATA'];
        echo $message;
        $message="message=$DATA";
        echo $message;
    Je ne connais rien en serveur mais je me dis qu'il doit y avoir un fichier de configuration qui bloque quelque part.
    Au fait le fichier de réception de la confirmation affiche en gros:
    pb de réception de DATA wrong lengh

    Il semble donc que seule des données d'une certaine longueur ne soit autorisée; mais pour ce que j'en dis ...

    Merci d'avance à ceux qui auront eut le courage de lire ce post jusqu'au bout
    et bien sûr à ceux qui vont y répondre.

  2. #2
    Expert confirmé
    Avatar de N1bus
    Homme Profil pro
    Dev. Web & OpenERP
    Inscrit en
    Janvier 2003
    Messages
    2 827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Dev. Web & OpenERP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 827
    Points : 5 673
    Points
    5 673
    Par défaut
    Bonjour,
    Au fait le fichier de réception de la confirmation affiche en gros:
    pb de réception de DATA wrong lengh
    Ceci arrive lorsque la variable DATA ne retourne rien ou 0 .
    ça peut arriver lors d'une coupure de la connexion avec le serveur ou une mauvaise config .

    ceci est la bonne syntaxe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $message="message=".$_POST['DATA'];
    Quelle version de l'API as-tu ? La V6 ?

    le fichier sensé récupérer les infos de confirmation ne reçoit pas la variable
    Quel fichier (call_autoresponse ou response) ?

    As tu bien mis les bonnes URL de retour dans ton fichier parmcom.xxxxxxxx de test ?
    En sachant que tu peux les mettre directement dans le call_request . C'est trés pratique pour y passer les paramètres à la volée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $parm="$parm cancel_return_url=https://xxxxxx/index.php?var1=0";
    $parm="$parm automatic_response_url=https://xxxxxxxxxxx/shop/call_autoresponse.php";
    $parm="$parm normal_return_url=https://xxxxxxxxx/index.php?var1=1&var2=2";
    Enregistre-tu les résultats dans le fichier de log (comme c'est fait dans les fichiers d'exemple) ? Trés pratique pour voir les erreurs.

  3. #3
    Membre à l'essai
    Inscrit en
    Janvier 2007
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 35
    Points : 16
    Points
    16
    Par défaut
    Merci pour cette si rapide réponse.

    C'est bien la version 6 du kit (e-transactions-APIv6-Linux-Plugin.zip)

    Je me doutais que la bonne syntaxe était la seconde car correspondant à php5 mais comme c'était la première réponse qui était livrée avec le Kit ....

    Le fichier qui ne reçoit pas la variable DATA est call_response.php mais ce pourrait-être call_autoresponse.php

    Je suppose que response qui se trouve dans le cgi/bin fonctionne correctement puisque le fichier call_response.php s'ouvre dans le navigateur

    L'adressage de retour a était fait puis refait avec la hotline de e-transaction, il semble donc bon, il est fait dans le parmcom.xxxxxxxx

    Je n'ai pas vu comment activer l'enregistrement des logs donc ils ne sont pas enregistrés
    J'utilise les fichiers et ledossier Sample et je n'ai rien vu qui ressemble a fichier texte enregistrant des log.
    ceci dit je demande qu'a activer les logs...

    Je crois bien avoir répondu à toutes tes questions, je poste ...

    Ps Ta réponse me fait passer d'un gris orageux à un gris ciel-dégagé, merci pour le beau temps à venir.

  4. #4
    Expert confirmé
    Avatar de N1bus
    Homme Profil pro
    Dev. Web & OpenERP
    Inscrit en
    Janvier 2003
    Messages
    2 827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Dev. Web & OpenERP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 827
    Points : 5 673
    Points
    5 673
    Par défaut
    Lorsque tu appelles le call_request, as tu un message d'erreur ?
    Vois tu les icones des cartes de paiement ?

    Dans le fichier pathfile tu peux mettre :Enleves le # si il y en a un devant. ça t'affichera éventuellement les erreurs (c'est écrit tout petit, alors si tu n'arrives pas à lire, tu copies/colles dans un fichier texte pour y voir plus clair)

    Note :
    Vérifie que les binaires request et response soient bien dans le bon répertoire.
    Si tu as safe_mode à ON, tu dois les mettre dans le répertoire défini par safe_mode_exec_dir

    En réalité, tu peux placer seulement ces deux là dans le cgi/bin ou celui de safe_mode_exec_dir . Tu peux mettre tous les autres fichiers (call_request, call_response, call_autoresponse, pathfile, parmcom et certf ) dans un répertoire de ton site que tu peux appeler "shop" par exemple. c'est plus facile de s'y retrouver à cause des chemins. c'est peut-etre de là que viens ton erreur.

  5. #5
    Membre à l'essai
    Inscrit en
    Janvier 2007
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 35
    Points : 16
    Points
    16
    Par défaut Réception variable POST avec paiement Atos
    Quand on appelle le call_request tout se passe normalement.
    On accede au choix de carte puis au formulaire de paiement.
    On rempli les champs n° carte, n° complémentaire (comme au loto!) et on selectionne une date (le tout donné par e-transaction pour pouvoir faire les premiers test- mais tu sais déjà ça).
    Le clic sur envoyer fonctionne et nous revient une page disant que le paiement à été effectué.
    C'est en appuyant sur "retour à la boutique" que call_response php est appelé et qu'il renvoie son message d'erreur.

    Pour ce qui est du mode debug je l'avais effectivement mis sur YES rien ne semblait anormal, la hotLine de e-transaction dit avoir vérifié de son coté et n'a rien trouvé d'aniormal, et je pense qu'elle la fait.

  6. #6
    Expert confirmé
    Avatar de N1bus
    Homme Profil pro
    Dev. Web & OpenERP
    Inscrit en
    Janvier 2003
    Messages
    2 827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Dev. Web & OpenERP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 827
    Points : 5 673
    Points
    5 673
    Par défaut
    Tu peux mettre une partie du code de call_response ( en masquant les urls )

  7. #7
    Membre à l'essai
    Inscrit en
    Janvier 2007
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 35
    Points : 16
    Points
    16
    Par défaut
    voila le script (complet)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
     
     
    <?php
        print ("<HTML><HEAD><TITLE>E-TRANSACTIONS - Paiement Securise sur Internet</TITLE></HEAD>");
        print ("<BODY bgcolor=#ffffff>");
        print ("<Font color=#000000>");
        print ("<center><H1>Test de l'API plug-in E-TRANSACTIONS</H1></center><br><br>");
     
        // Récupération de la variable cryptée DATA
        $message="message=$HTTP_POST_VARS[DATA]";
        echo $message;
        $message="message=".$_POST['DATA'];
        echo $message;
        $message="message=$DATA";
        echo $message;
    //
    // ici viens de se jouer l'essai de syntaxe------c'est moi qui rajoute
    //
        // Initialisation du chemin du fichier pathfile (à modifier)
        // Initialisation du chemin du fichier pathfile (à modifier)
    // ex :
    // -> Windows : $pathfile="pathfile=c:\\repertoire\\pathfile";
    // -> Unix : $pathfile="pathfile=/home/repertoire/pathfile";
     
    $pathfile="pathfile=/home.10.3/leDomaine/www/e-transactions/param/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.10.3/leDomaine/cgi-bin/response";
     
        // Appel du binaire response
     
        $result=exec("$path_bin $pathfile $message");
     
        //    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];
        $complementary_info = $tableau[20];
        $return_context = $tableau[21];
        $caddie = $tableau[22];
        $receipt_complement = $tableau[23];
        $merchant_language = $tableau[24];
        $language = $tableau[25];
        $customer_id = $tableau[26];
        $order_id = $tableau[27];
        $customer_email = $tableau[28];
        $customer_ip_address = $tableau[29];
        $capture_day = $tableau[30];
        $capture_mode = $tableau[31];
        $data = $tableau[32];
     
        // 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 {
     
        # OK, affichage du mode DEBUG si activé
        print (" $error <br>");
     
        print("<center>\n");
        print("<H3>R&eacute;ponse manuelle du serveur E-TRANSACTIONS</H3>\n");
        print("</center>\n");
        print("<b><h4>\n");
        print("<br><hr>\n");
        print("<br>merchant_id : $merchant_id\n");
        print("<br>merchant_country : $merchant_country\n");
        print("<br>amount : $amount\n");
        print("<br>transaction_id : $transaction_id\n");
        print("<br>transmission_date: $transmission_date\n");
        print("<br>payment_means: $payment_means\n");
        print("<br>payment_time : $payment_time\n");
        print("<br>payment_date : $payment_date\n");
        print("<br>response_code : $response_code\n");
        print("<br>payment_certificate : $payment_certificate\n");
        print("<br>authorisation_id : $authorisation_id\n");
        print("<br>currency_code : $currency_code\n");
        print("<br>card_number : $card_number\n");
        print("<br>cvv_flag: $cvv_flag\n");
        print("<br>cvv_response_code: $cvv_response_code\n");
        print("<br>bank_response_code: $bank_response_code\n");
        print("<br>complementary_code: $complementary_code\n");
        print("<br>complementary_info: $complementary_info\n");
        print("<br>return_context: $return_context\n");
        print("<br>caddie : $caddie\n");
        print("<br>receipt_complement: $receipt_complement\n");
        print("<br>merchant_language: $merchant_language\n");
        print("<br>language: $language\n");
        print("<br>customer_id: $customer_id\n");
        print("<br>order_id: $order_id\n");
        print("<br>customer_email: $customer_email\n");
        print("<br>customer_ip_address: $customer_ip_address\n");
        print("<br>capture_day: $capture_day\n");
        print("<br>capture_mode: $capture_mode\n");
        print("<br>data: $data\n");
        print("<br><br><hr></b></h4>");
        }
     
        print ("</body></html>");
     
     
    ?>

  8. #8
    Expert confirmé
    Avatar de N1bus
    Homme Profil pro
    Dev. Web & OpenERP
    Inscrit en
    Janvier 2003
    Messages
    2 827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Dev. Web & OpenERP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 827
    Points : 5 673
    Points
    5 673
    Par défaut
    Remplace toute cette partie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $message="message=$HTTP_POST_VARS[DATA]";
    echo $message;
    $message="message=".$_POST['DATA'];
    echo $message;
    $message="message=$DATA";
    echo $message;
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $message="message=" . $_POST['DATA'];
    Est-ce que le call_autoresponse fonctionne normalement, lui ?

    Qu'est ce que tu envoies dans le call_request à :
    $parm="$parm caddie= ........
    $parm="$parm return_context=.......

  9. #9
    Membre à l'essai
    Inscrit en
    Janvier 2007
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 35
    Points : 16
    Points
    16
    Par défaut
    Je viens de faire ce que tu m'a proposé et ...
    surprise!!!

    le ciel est devenu subitement bleu, et même qu'il y avait un soleil radieux ce qui est trés etonnant à quasi 18h.

    Tu l'aura compris l'api renvoie bien les variables, je n'ai pas encore eu le temps de vérifier call_autoresponse mais je suis sur que cela va marcher.

    Je suppose qu'il faudrait marquer ce post comme résolu mais je ne sais pas ou cela ce fait (encore une lacune ...)
    Bon quand je trouverai j'écrirai

    Résolu par Super N1bus qui n'hésite pas à donner de son temps aux néophites

    Merci encore N1bus

    PS les apparences sont trompeuses le problème ne venait pas de la mauvaise volonté de l'opérateur d'OVH.
    Je présente ici mes excuses les plus sincères.

  10. #10
    Expert confirmé
    Avatar de N1bus
    Homme Profil pro
    Dev. Web & OpenERP
    Inscrit en
    Janvier 2003
    Messages
    2 827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Dev. Web & OpenERP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 827
    Points : 5 673
    Points
    5 673
    Par défaut
    Merci et bon courage pour la suite.

    Note pour marquer la discussion comme "résolue", il suffit de cliquer sur le bouton "Résolu" en bas de la discussion.

    (Je l'ai fait)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Envoi de plusieurs variables POST avec Ajax
    Par feelwatt dans le forum AJAX
    Réponses: 2
    Dernier message: 01/09/2015, 11h36
  2. Réception variables POST dans ma page
    Par camcam8782 dans le forum Langage
    Réponses: 12
    Dernier message: 04/03/2010, 13h45
  3. [AJAX] Nom de variable POST avec accent
    Par bailamos dans le forum AJAX
    Réponses: 2
    Dernier message: 21/02/2010, 00h22
  4. [PHP 5.2] Récupérer une variable POST avec une variable comme nom
    Par bailamos dans le forum Langage
    Réponses: 2
    Dernier message: 28/12/2008, 14h59
  5. [MooTools] recupérer mes variables postés avec mootools
    Par Vetchostar dans le forum Bibliothèques & Frameworks
    Réponses: 0
    Dernier message: 04/11/2008, 10h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo