Ajouter un header (Authorization et Content-Type) lors de l'appel d'un webservic

Résolu/Fermé
mikis69 Messages postés 168 Date d'inscription mardi 26 novembre 2013 Statut Membre Dernière intervention 11 février 2019 - 1 nov. 2018 à 13:56
mikis69 Messages postés 168 Date d'inscription mardi 26 novembre 2013 Statut Membre Dernière intervention 11 février 2019 - 2 nov. 2018 à 10:54
Bonjour à tous et à toutes,

Je rencontre un petit problème avec les webservices.. Pour vous mettre dans le contexte, j'ai un site e-commerce et j'aimerai modifier le statut de ma commande (chez BPOST ou mondialRelay).

Mondial Relay a fourni dans sa documentation, un exemple d'appel à l'un de ses webservices. Bpost non. Le soucis est que je n'arrive pas à adapter l'exemple de MondialRelay pour le faire fonctionner chez Bpost.

J'utilise la librairie nusoap.php

Voici les consignes que je retrouve dans la documentation de chez Bpost + un exemple de l'xml request attendu :

Type of request:
POST

URL PROD:
https://api.bpost.be/services/shm/{accountID}/orders/{orderReference}

Headers:
Authorization: Basic AccountID:pass-phrase (base64)
Content-Type: application/vnd.bpost.shm-orderUpdate-v3+XML


<?xml version="1.0"?>
<orderUpdate xmlns="http://schema.post.be/shm/deepintegration/v3/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://schema.post.be/shm/deepintegration/v3/ ">
<status>OPEN</status>
</orderUpdate>


Je connais mon accountID et ma pass-phrase. Je sais également transformer cela en base 64.

Voici à présent, l'exemple de chez Mondial Relay que je n'arrive pas à adapter pour Bpost :

$client = new nusoap_client("http://api.mondialrelay.com/Web_Services.asmx?WSDL", true);
$client->soap_defencoding = 'utf-8';
$params = array(
      ... => ...,
);

$result = $client->call('WSI4_PointRelais_Recherche', $params, 'http://api.mondialrelay.com/', 'http://api.mondialrelay.com/WSI4_PointRelais_Recherche');


Ce sont les seuls infos dont je dispose..

En espérant que quelqu'un m'aide, je vous souhaite une excellente journée,

Mikis
A voir également:

2 réponses

yg_be Messages postés 23471 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 15 février 2025 Ambassadeur 1 568
1 nov. 2018 à 15:45
bonjour, tu dois commencer par trouver le wsdl de bpost. n'as-tu vraiment aucune autre information?
0
mikis69 Messages postés 168 Date d'inscription mardi 26 novembre 2013 Statut Membre Dernière intervention 11 février 2019
2 nov. 2018 à 06:16
Bonjour,

C'est possible qu'il n'y en ai pas ? Ou alors la partie commune à chaque opération 'https://api.bpost.be/services/shm' et rajouter '?wsdl' à la fin ?
0
yg_be Messages postés 23471 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 15 février 2025 1 568 > mikis69 Messages postés 168 Date d'inscription mardi 26 novembre 2013 Statut Membre Dernière intervention 11 février 2019
Modifié le 2 nov. 2018 à 10:14
je pense que tu dois obtenir le contenu de la page wsdl.
bizarre que tu n'aies pas reçu l'information de bpost: travailles-tu vraiment avec eux?
0
mikis69 Messages postés 168 Date d'inscription mardi 26 novembre 2013 Statut Membre Dernière intervention 11 février 2019
2 nov. 2018 à 10:51
J'ai trouvé finalement. Ton commentaire m'a fait réfléchir et j'ai essayé de traiter la demande plutôt comme une requête HTTP et non comme un appel webservice (voir mon commentaire ci-dessous)
0
mikis69 Messages postés 168 Date d'inscription mardi 26 novembre 2013 Statut Membre Dernière intervention 11 février 2019
2 nov. 2018 à 06:24
Ou alors, je vois trop loin et je n'ai qu'à effectuer une requête HTTP en mode POST ?
0
mikis69 Messages postés 168 Date d'inscription mardi 26 novembre 2013 Statut Membre Dernière intervention 11 février 2019
2 nov. 2018 à 10:54
J'ai finalement réussi en utilisant les requêtes HTTP plutôt que l'appel Webservice que j'ai mentionné plus haut.

// Set status to open !
$document = new \DOMDocument('1.0', 'utf-8');
$document->preserveWhiteSpace = false;
$document->formatOutput = true;
$order_update = $document->createElement('orderUpdate');
$order_update->setAttribute('xmlns', 'http://schema.post.be/shm/deepintegration/v3/');
$order_update->setAttribute('xmlns:xsi', '"http://www.w3.org/2001/XMLSchema-instance');
$order_update->appendChild(
	$document->createElement('status', $status) // Le status voulu : OPEN, CANCELLED, ...
);
$document->appendChild($order_update);
		
$headers = array(
				'Content-Type: application/vnd.bpost.shm-orderUpdate-v3+XML',
				'Authorization: Basic ' . base64_encode('ACCOUNTID:PASSPHRASE'),
		   );
// set options
$options = array();
$options[CURLOPT_URL] = 'https://api.bpost.be/services/shm/ACCOUNTID/orders/ORDERID';
$options[CURLOPT_RETURNTRANSFER] = true;
$options[CURLOPT_HTTP_VERSION] = CURL_HTTP_VERSION_1_1;
$options[CURLOPT_HTTPHEADER] = $headers;
$options[CURLOPT_SSL_VERIFYPEER] = false;
$options[CURLOPT_POST] = true;
$options[CURLOPT_POSTFIELDS] = $document->saveXML();

// init
$curl = curl_init();
// set options
curl_setopt_array($curl, $options);
// execute
$response = curl_exec($curl);
		
var_dump($response);
0