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

Langage PHP Discussion :

Problème avec curl


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations forums :
    Inscription : Septembre 2006
    Messages : 28
    Points : 28
    Points
    28
    Par défaut Problème avec curl
    Bonjour,
    je suis sur un bout de code PHP ou j'ai besoin de préparer une structure xml,la compresser puis crypter et l'envoyer via la méthode curl_ avec la méthode POST,
    sur le coté traitement du poste je reçois une chaine de caractère plus courte, quand j'envois 512 caractère , la variable du post contienne une chaine de taille aléatoire a chaque refreesh.

    merci pour vos réponse.

    j'ajoute le code pour mieux expliquer

    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
     
     
    <?php
     
    require_once 'MessagesUtils.php';
     
    $sender_account = '100103';
    $recipient_account = '100104';
    $recipient_name = 'boutique.com';
    $order = 'A012/2012';
    $product = '05561';
    $url_return = 'http://thy85k.php'; /* utiliser des fichier de return generer dynamiquement a partir d'un template */
    $url_cancel = 'http://ply5o92.php'; /* utiliser des fichier de return generer dynamiquement a partir d'un template */;
    $amount = '500';
    $api_key = '955g477t555d3011zgpkko'; /* c'est un identifiant utilisé pour récuperer la clé publique du marchand dans la base de icosnet */
    $token = '8gfpjkjsmmfyerav'; /* c'est un token generer dynamiquement au niveau du marchand pour identifier chaque transaction */
     
     
    $xmlString = MessagesUtils::buildMerchantRequest($sender_account, $recipient_account, $recipient_name, $order, $product, $url_return, $url_cancel, $amount, $api_key, $token);
    /* ---------end build request ------------------ */
     
    //crypt with public key
    $fp = fopen("PublicKey.pem", "r");
    $pub_key = fread($fp, 8192);
    fclose($fp);
    $PK = "";
    $PK = openssl_get_publickey($pub_key);
    $xmlString = urlencode($xmlString);
     
     
    $xmlString = gzcompress($xmlString);
     
     
    $xmlencrypted = "";
     
    try {
        openssl_public_encrypt($xmlString, $xmlencrypted, $PK);
    } catch (Exception $exp) {
        var_dump($exp);
    }
     
    /* fin de cryptage */
     
     
    // Infobip's POST URL
    $postUrl = "http://localhost/security/cryptography/traitement.php";
     
     
    // previously formatted XML data becomes value of "XML" POST variable
    $fields = "XML=" . $xmlencrypted;
    // in this example, POST request was made using PHP's CURL
     
    echo '--------- xmlencrypted  marchent--------------------</br>';
    var_dump($xmlencrypted);
     
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $postUrl);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
     
    // response of the POST request
    $result = curl_exec($ch);
     
    $response = '';
    if ($result == true) {
        $response = ob_get_contents();
    }
     
    $xmlResponse = simplexml_load_string($response);
     
    var_dump($xmlResponse);
     
    curl_close($ch);
    ?>
    d'un autre coté sur le fichier traitement.php j'ai:
    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
     
    <?php
     
    require_once 'MessagesUtils.php';
    echo"<?xml version=\"1.0\"?>\r\n";
     
     
    if (isset($_POST['XML'])) {
     
        $xmlencrypted = $_POST['XML'];    
     
        echo '---------recieved xmlencrypted --------------------</br>';
        var_dump($xmlencrypted);
     
        /* decryptage message du marchand */
        //decrypt with private key
        $fp = fopen("Key.pem", "r");
        $private_key = fread($fp, 8192);
        fclose($fp);
        $PrK = "";
        $PrK = openssl_get_privatekey($private_key, '');
     
        $xmlCompressed="";
        /
        openssl_private_decrypt($xmlencrypted, $xmlCompressed, $PrK);
     
        echo '--------- xmlCompressed --------------------</br>';
        var_dump($xmlCompressed);
     
     
     
        $xmlCodded= gzuncompress($xmlCompressed);
        echo '--------- uncompressed --------------------</br>';
        var_dump($xmlCodded);
     
     
     
     
     
        $xmlDecodded = urldecode($xmlCodded);
     
        $xmlResponse = simplexml_load_string($xmlDecodded);
     
        echo '--------- xmlResponse --------------------</br>';
        var_dump($xmlResponse);
     
     
        $check_result = "OK";
        $err_code = "0";
        $last_balance = "700";
        $new_balance = "800";
        $order = "A012/2012";
        $token = "955g477t555d3011zgpkko";
     
        $response = MessagesUtils::buildIcosnetResponse($check_result, $err_code, $last_balance, $new_balance, $order, $token);
     
        echo $response;
    } else {
        echo "erreur";
    }
    ?>

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations forums :
    Inscription : Septembre 2006
    Messages : 28
    Points : 28
    Points
    28
    Par défaut
    allo!!

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations forums :
    Inscription : Septembre 2006
    Messages : 28
    Points : 28
    Points
    28
    Par défaut
    alloooo, pas de réponses? au moins un echo'';

  4. #4
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 937
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 937
    Points : 4 358
    Points
    4 358
    Par défaut
    si openssl_public_encrypt crypte les données, le résultat n'a aucune raison d'être compatible avec le format texte de transport d'une requête POST :
    ce ne sont que des données binaires : il faut les mettre en Base64 avant de les mettre dans la requête, voir base64_encode/base64_decode.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations forums :
    Inscription : Septembre 2006
    Messages : 28
    Points : 28
    Points
    28
    Par défaut
    merci JeitEmgie pour ta réponse,
    j'ai essayé de voir $xmlencrypted_decode64 = base64_decode($xmlencrypted,true);

    coté POST j'ai une bonne résultats , je reçois la même chaine envoyée, mais lorsque je décode la chaine ça ne donne pas la bonne chaine cryptée, ça taille est inférieur à celle encodé, je ne sais pas si la fonction base64_encode néglige certain caractère? ou il y a une manière bien définit pour utiliser cette fonction?

Discussions similaires

  1. Problème avec file_get_contents et cURL
    Par Mo_Poly dans le forum Langage
    Réponses: 2
    Dernier message: 21/03/2011, 19h20
  2. problème avec exécution de curl
    Par acha_gh dans le forum Langage
    Réponses: 1
    Dernier message: 11/06/2009, 16h55
  3. problème de cookie avec Curl
    Par pazgal dans le forum Langage
    Réponses: 4
    Dernier message: 04/06/2009, 11h38
  4. [cURL] Problème avec curl_init
    Par obito dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 17/02/2009, 10h17

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