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) :
Et il y a cette phrase :
Code : Sélectionner tout - Visualiser dans une fenêtre à part Deprecated: iconv_set_encoding(): Use of iconv.output_encoding is deprecated
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 :
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
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"); } }
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
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; } } }
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 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); }
Et le lien vers la doc de l'MWS.
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.
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
Partager