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 :

MarketPlace Web Service Amazon


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 126
    Points : 55
    Points
    55
    Par défaut MarketPlace Web Service Amazon
    Bonjour,

    Je poste beaucoup de messages ces temps ci, et ça risque de durer encore un moment, car je suis en stage de 1ère année de BTS, et il n'y pas d'autre développeur dans la boite pour répondre à mes questions (nombreuses..).

    Donc voilà on me demande de développer un script, qui permette de récupérer les infos des commandes reçues sur Amazon vendeur (API MWS Amazon), de générer une étiquette de transport (API Colissimo) et d'enregistrer la commande dans Dolibarr puis de générer la facture (module dolibarr).

    Je n'en suis qu'au débutn et je n'ai que 3 semaine pour réaliser cela. Vu mon niveau c'est du taf, et je galère ^^.

    Donc j'ai commencé pas parcourir la doc Amazon, et j'ai trouver des exemple d'appel, j'ai essayé d'adapté le script à mes besoin toujours en suivant la doc.
    Mais je me retrouve avec une erreur PHP, sur une partie du code que je n'ai pas touchée au lignes 401, 402, et 403 de client.php (fichier que je n'ai même pas ouvert) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Deprecated: iconv_set_encoding(): Use of iconv.output_encoding is deprecated
    Et il y a cette phrase :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Caught Exception: SSL certificate problem: unable to get local issuer certificate Response Status Code: Error Code: Error Type: HTTP Request ID: XML: ResponseHeaderMetadata:

    Et voici mes fichiers php :

    GetOdersSample.php :

    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
    <?php
    /*******************************************************************************
     * Copyright 2009-2018 Amazon Services. All Rights Reserved.
     * Licensed under the Apache License, Version 2.0 (the "License"); 
     *
     * You may not use this file except in compliance with the License. 
     * You may obtain a copy of the License at: http://aws.amazon.com/apache2.0
     * This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 
     * CONDITIONS OF ANY KIND, either express or implied. See the License for the 
     * specific language governing permissions and limitations under the License.
     *******************************************************************************
     * PHP Version 5
     * @category Amazon
     * @package  Marketplace Web Service Orders
     * @version  2013-09-01
     * Library Version: 2018-01-31
     * Generated: Tue Jan 30 16:03:22 PST 2018
     */
     
    /**
     * Get Order Sample
     */
     
    require_once('config.inc.php');
     
    /************************************************************************
     * Instantiate Implementation of MarketplaceWebServiceOrders
     *
     * AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY constants
     * are defined in the .config.inc.php located in the same
     * directory as this sample
     ***********************************************************************/
    // More endpoints are listed in the MWS Developer Guide
    // North America:
    //$serviceUrl = "https://mws.amazonservices.com/Orders/2013-09-01";
    // Europe
    $serviceUrl = "https://mws-eu.amazonservices.com/Orders/2013-09-01";
    // Japan
    //$serviceUrl = "https://mws.amazonservices.jp/Orders/2013-09-01";
    // China
    //$serviceUrl = "https://mws.amazonservices.com.cn/Orders/2013-09-01";
     
     
     $config = array (
       'ServiceURL' => $serviceUrl,
       'ProxyHost' => null,
       'ProxyPort' => -1,
       'ProxyUsername' => null,
       'ProxyPassword' => null,
       'MaxErrorRetry' => 3,
     );
     
     $service = new MarketplaceWebServiceOrders_Client(
            AWS_ACCESS_KEY_ID,
            AWS_SECRET_ACCESS_KEY,
            APPLICATION_NAME,
            APPLICATION_VERSION,
            $config);
     
    /************************************************************************
     * Uncomment to try out Mock Service that simulates MarketplaceWebServiceOrders
     * responses without calling MarketplaceWebServiceOrders service.
     *
     * Responses are loaded from local XML files. You can tweak XML files to
     * experiment with various outputs during development
     *
     * XML files available under MarketplaceWebServiceOrders/Mock tree
     *
     ***********************************************************************/
     // $service = new MarketplaceWebServiceOrders_Mock();
     
    /************************************************************************
     * Setup request parameters and uncomment invoke to try out
     * sample for Get Order Action
     ***********************************************************************/
     // @TODO: set request. Action can be passed as MarketplaceWebServiceOrders_Model_GetOrder
     $request = new MarketplaceWebServiceOrders_Model_GetOrderRequest();
     $request->setSellerId(MERCHANT_ID);
     // object or array of parameters
     invokeGetOrder($service, $request);
     
    /**
      * Get Get Order Action Sample
      * Gets competitive pricing and related information for a product identified by
      * the MarketplaceId and ASIN.
      *
      * @param MarketplaceWebServiceOrders_Interface $service instance of MarketplaceWebServiceOrders_Interface
      * @param mixed $request MarketplaceWebServiceOrders_Model_GetOrder or array of parameters
      */
     
      function invokeGetOrder(MarketplaceWebServiceOrders_Interface $service, $request)
      {
          try {
            $response = $service->GetOrder($request);
     
            echo ("Service Response\n");
            echo ("=============================================================================\n");
     
            $dom = new DOMDocument();
            $dom->loadXML($response->toXML());
            $dom->preserveWhiteSpace = false;
            $dom->formatOutput = true;
            echo $dom->saveXML();
            echo("ResponseHeaderMetadata: " . $response->getResponseHeaderMetadata() . "\n");
     
         } catch (MarketplaceWebServiceOrders_Exception $ex) {
            echo("Caught Exception: " . $ex->getMessage() . "\n");
            echo("Response Status Code: " . $ex->getStatusCode() . "\n");
            echo("Error Code: " . $ex->getErrorCode() . "\n");
            echo("Error Type: " . $ex->getErrorType() . "\n");
            echo("Request ID: " . $ex->getRequestId() . "\n");
            echo("XML: " . $ex->getXML() . "\n");
            echo("ResponseHeaderMetadata: " . $ex->getResponseHeaderMetadata() . "\n");
         }
     }
    config.inc.php :

    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
    <?php
     
       /************************************************************************
        * REQUIRED
        *
        * Access Key ID and Secret Acess Key ID, obtained from:
        * http://aws.amazon.com
        ***********************************************************************/
        define('AWS_ACCESS_KEY_ID', '*******************');
        define('AWS_SECRET_ACCESS_KEY', '+***********************');
     
       /************************************************************************
        * REQUIRED
        *
        * All MWS requests must contain a User-Agent header. The application
        * name and version defined below are used in creating this value.
        ***********************************************************************/
        define('APPLICATION_NAME', 'Orders');
        define('APPLICATION_VERSION', '2013-09-01');
     
       /************************************************************************
        * REQUIRED
        *
        * All MWS requests must contain the seller's merchant ID and
        * marketplace ID.
        ***********************************************************************/
        define ('MERCHANT_ID', '*******************');
        define ('MARKETPLACE_ID', '********');
     
     
       /************************************************************************
        * OPTIONAL ON SOME INSTALLATIONS
        *
        * Set include path to root of library, relative to Samples directory.
        * Only needed when running library from local directory.
        * If library is installed in PHP include path, this is not needed
        ***********************************************************************/
        set_include_path(get_include_path() . PATH_SEPARATOR . '../../.');
     
       /************************************************************************
        * OPTIONAL ON SOME INSTALLATIONS
        *
        * Autoload function is reponsible for loading classes of the library on demand
        *
        * NOTE: Only one __autoload function is allowed by PHP per each PHP installation,
        * and this function may need to be replaced with individual require_once statements
        * in case where other framework that define an __autoload already loaded.
        *
        * However, since this library follow common naming convention for PHP classes it
        * may be possible to simply re-use an autoload mechanism defined by other frameworks
        * (provided library is installed in the PHP include path), and so classes may just
        * be loaded even when this function is removed
        ***********************************************************************/
         function __autoload($className){
            $filePath = str_replace('_', DIRECTORY_SEPARATOR, $className) . '.php';
            $includePaths = explode(PATH_SEPARATOR, get_include_path());
            foreach($includePaths as $includePath){
                if(file_exists($includePath . DIRECTORY_SEPARATOR . $filePath)){
                    require_once $filePath;
                    return;
                }
            }
        }
    et la fameuse fonction où se trouvent les lignes 401, 402, et 403 de client.php que je n'inclue à aucun moment dans GetOrderSample.php donc je ne comprends pas pourquoi l'erreur viendrait de là mais je vous les mets quand même :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public function __construct($awsAccessKeyId, $awsSecretAccessKey, $applicationName, $applicationVersion, $config = null)
        {
            iconv_set_encoding('output_encoding', 'UTF-8');
            iconv_set_encoding('input_encoding', 'UTF-8');
            iconv_set_encoding('internal_encoding', 'UTF-8');
     
            $this->_awsAccessKeyId = $awsAccessKeyId;
            $this->_awsSecretAccessKey = $awsSecretAccessKey;
            if (!is_null($config)) $this->_config = array_merge($this->_config, $config);
            $this->setUserAgentHeader($applicationName, $applicationVersion);
        }
    Je n'arrive pas retrouver le lien pour obtenir le dossier d'exemple d'appel donc je ne peux pas vous le mettre, mais voilà le README.md du dossier :

    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
    Enter your credentials
    ----------------------
     
    1.  Open `/Samples/.config.inc.php`
    2.  Edit the following lines replacing the `<>` values with your credentials
     
            define('AWS_ACCESS_KEY_ID', '<Your Access Key ID>');
            define('AWS_SECRET_ACCESS_KEY', '<Your Secret Key>');
     
            define('APPLICATION_NAME', '<Your Application Name>');
            define('APPLICATION_VERSION', '<Your Application Version or Build Number>');
     
            define('MERCHANT_ID', '<Your Merchant Id>'); // If you are making calls on another seller's behalf, put their merchantID here.
            define('MARKETPLACE_ID', '<Your Marketplace Id>');
     
    Edit the samples
    ----------------
     
    In the `/Samples` folder you will find files that correspond to a particular
    Amazon Marketplace Web Service (Amazon MWS) operation. These files serve as
    examples to illustrate the code required to make the call for that particular
    operation. We will be using the SubmitFeed operation from the Feeds API section
    as an example.
     
    1.  Open `/Samples/SubmitFeedSample.php`
    2.  Uncomment the appropriate `$serviceURL` for the marketplace that you want to
        sell in. Example:
     
            $serviceUrl = "https://mws.amazonservices.com";
     
    3.  Populate the `$feed` variable with the feed contents. Examples:
     
            // From a string
            $feed = "Feed content";
     
            // From a file
            $feed = file_get_contents("feed.txt");
     
    4.  Uncomment `$marketplaceIdArray` and fill the array with the MarketplaceId
        values that you want to submit the feed to.
    5.  Uncomment one of the two Amazon MWS request building methods between lines
        126 - 170.
    6.  Uncomment the following lines:
     
            invokeSubmitFeed($service, $request);
     
            @fclose($feedHandle);
     
    7.  Start your server and navigate to the script's address to run it.
    Et le lien vers la doc de l'MWS.

    Pouvez-vous me filer un coup de main svp car si je bloque dès le démarrage juste en testant un appel pas vraiment adapté à mes besoin, je suis pas prête d'obtenir un résultat positif !

    Merci d'avance

  2. #2
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 126
    Points : 55
    Points
    55
    Par défaut
    Bonjour, il faisait beau ce weekend j'espère que c'est pour ça que personne ne m'a répondu Et que je vais avoir plein de réponse aujourd'hui

    Bon, si je commente, les fonctions :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    iconv_set_encoding('output_encoding', 'UTF-8');
            iconv_set_encoding('input_encoding', 'UTF-8');
            iconv_set_encoding('internal_encoding', 'UTF-8');
    Je n'ai plus les 3 erreur PHP (je verrai ça plus tard, si vous avez une solution je suis preneuse).
    Mais j'ai toujours l'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Caught Exception: SSL certificate problem: unable to get local issuer certificate Response Status Code: Error Code: Error Type: HTTP Request ID: XML: ResponseHeaderMetadata:
    Que signifie-t'elle ? C'est une erreur avec mes identifiants d'API ? J'ai vu sur un forum qu'il y avait des manips à faire pour régler le problème : ici. Mais j'ai testé ça ne change rien.

    Pouvez-vous m'orienter sur la bonne voie svp ?

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    1- Si tu veux des réponses, il faut éviter les posts trop longs, avec du blabla et du code inutile.

    • Pose UNE questions claire, sur un point précis
    • Le message d'erreur complet
    • Lis et comprends le message !
    • regarde la DOC !
    • Localise l'erreur dans le code
    • Met le code nécessaire et suffisant


    2-
    Deprecated: iconv_set_encoding(): Use of iconv.output_encoding is deprecated
    Signifie que la fonction iconv_set_encoding est dépréciée.
    Donc, on regarde la DOC : iconv_set_encoding()
    Certainement un souci de version PHP.

    3- quant à l'autre erreur, a priori c'est un problème entre http / https.
    À creuser...
    Dernière modification par Invité ; 25/06/2018 à 11h27.

  4. #4
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 126
    Points : 55
    Points
    55
    Par défaut
    Merci Jreaux62,

    J'ai mis les erreurs entière, j'ai juste tronqué le chemin jusqu'à mes fichiers qui est à rallonge pour l'erreur sur iconv_set_encoding(). Mais j'ai mentionné les lignes et je n'ai mis que celle-ci en visuel.
    Et j'ai fais des recherche sur cette fonction, j'avais vu qu'elle était dépréciée mais a priori encore utilisable, d'autant que c'est ce qui est préconisé pour l'API, enfin en tout cas je les laisse commentées pour le moment, je verrais par la suite si j'ai des problème d'encodage.

    Pour l'autre erreur j'ai mis tout mon script car je ne la comprenais et je voulais que vous ayez toutes les cartes en main pour pouvoir me répondre. D'autant que je n'avais pas de ligne mentionnée donc je ne sais pas d'où elle vient.

    Par rapport à ton idée sur cette erreur, si je modifie l'url d'appel de https à http, j'ai un message d'erreur différent :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Caught Exception: Failed to connect to mws-eu.amazonservices.com port 80: Connection refused Response Status Code: Error Code: Error Type: HTTP Request ID: XML: ResponseHeaderMetadata:
    Que je ne comprends pas non plus. Et je ne trouve pas d'info à part ce lien : ici où quelqu'un a le même problème que moi qui a priori est résolu avec cURL mais je ne sais pas ce que c'est ni comment l'utiliser.

    Merci d'avance pour vos suggestions...

  5. #5
    Invité
    Invité(e)
    Par défaut
    Si ton site est en http, tu ne peux pas avoir accès à des URL sécurisées en https.
    (si je ne m'abuse)...

  6. #6
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 126
    Points : 55
    Points
    55
    Par défaut
    Je teste l'API en local sous Wamp pour le moment, ça viendrait de là ?

  7. #7
    Invité
    Invité(e)
    Par défaut
    Certainement.

    D'autre part, on lit dans le fichier config : Alors que le site est passé en https.
    Donc, il est possible que tu aies une ancienne version du plugin, ou qu'il ne soit pas à jour.

    Je n'en sais pas plus...


    N.B. comme toujours, on refile au stagiaire le gros bâton m...deux dont personne ne veut...

  8. #8
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 126
    Points : 55
    Points
    55
    Par défaut
    C'est tout à fait ça ^^

    Je ne mets pas en résolu pour le moment car ça ne l'est pas, je vais tester en mettant mon fichier sur OVH, on verra bien, et en regardant du côté de :
    .

    Je reviens vous dire dans la journée.

    Merci en tout cas de m'avoir accorder du temps jreaux62.

    Bonne journée

  9. #9
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 126
    Points : 55
    Points
    55
    Par défaut
    Bonsoir,

    Je reviens vers vous car je n'ai pas réussi à régler mon problème.
    J'ai contacté le support amazon qui s'occupe du web service en question.
    Il m'ont répondu ceci :
    How are you running the php application? Do you have any platform like xampp to run ? Curl, the program used by PHP to send web requests, does not bundle any certificates by default. Certificates are used to verify the website you are accessing really is who they say they are. Since configuring Curl with certificates can be a lengthy process, when testing it's much quicker to set CURLOPT_SSL_VERIFYPEER => false in the config.php.
    J'ai répondu à leurs questions pour qu'ils m'aident à résoudre à le problème mais comme ils tardent à me répondre je me tourne vers mon forum favoris

    J'utilise Wamp et et je ne vois pas de de fichier config.php dans le dossier, savez vous s'il y en a un ?


    J'ai plus que 2 semaines de stage je suis en galère si je n'arrive pas à me sortir de là rapidement Help !!

    Merci d'avance !

  10. #10
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 126
    Points : 55
    Points
    55

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

Discussions similaires

  1. probléme avec une page web
    Par hacker59 dans le forum VB.NET
    Réponses: 2
    Dernier message: 28/03/2016, 07h36
  2. Problème de création d'un web service avec tomcat sous eclipse
    Par elfenomeno9 dans le forum Tomcat et TomEE
    Réponses: 1
    Dernier message: 17/02/2009, 11h05
  3. Problème avec une base Mysql sur le web
    Par mappy dans le forum Accès aux données
    Réponses: 2
    Dernier message: 08/06/2007, 08h38
  4. problème avec une page web sous firefox!
    Par 3psilOn dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 24/11/2004, 11h49
  5. Problème avec une procédure stockée
    Par in dans le forum Langage SQL
    Réponses: 4
    Dernier message: 27/05/2003, 15h33

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