Soucis avec certains point relais

Résolu
jaymbo -  
yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

Après avoir réussit à afficher les points relay, pour le choix de l'utilisateur, à l'aide d'un script en PHP, réalisé à l'aide de leur documentation très limitée.

Lorsque l'utilisateur choisit son point relay, les informations s'enregistrent en db, pour les récupérer après l'étape de paiement et créer la commande dans le backend de Mondial Relay.

Hors, j'ai un soucis, incompréhensible, lorsque je choisit certains point relay, cela ne fonctionne pas, j'ai droit à cette erreur (il s'agit d'un script en pur php, externe à l'application, qui sert de fichier de retour pour la plate-forme de paiement pour rediriger vers le site) :

object(stdClass)#5 (1) { ["WSI2_CreationEtiquetteResult"]=> object(stdClass)#6 (1) { ["STAT"]=> string(2) "93" } } .

$webSiteId = "monid";
$webSiteKey = "maclé";
 
// Infos récupérées de la db par requête avec un while
$search  = array('À', 'Á', 'Â', 'Ã', 'Ä', 'Å', 'Ç', 'È', 'É', 'Ê', 'Ë', 'Ì', 'Í', 'Î', 'Ï', 'Ò', 'Ó', 'Ô', 'Õ', 'Ö', 'Ù', 'Ú', 'Û', 'Ü', 'Ý', 'à', 'á', 'â', 'ã', 'ä', 'å', 'ç', 'è', 'é', 'ê', 'ë', 'ì', 'í', 'î', 'ï', 'ð', 'ò', 'ó', 'ô', 'õ', 'ö', 'ù', 'ú', 'û', 'ü', 'ý', 'ÿ');
 
$replace = array('A', 'A', 'A', 'A', 'A', 'A', 'C', 'E', 'E', 'E', 'E', 'I', 'I', 'I', 'I', 'O', 'O', 'O', 'O', 'O', 'U', 'U', 'U', 'U', 'Y', 'a', 'a', 'a', 'a', 'a', 'a', 'c', 'e', 'e', 'e', 'e', 'i', 'i', 'i', 'i', 'o', 'o', 'o', 'o', 'o', 'o', 'u', 'u', 'u', 'u', 'y', 'y');
                            $relayPoint = $infosRelayPoint['RELAYPOINT'];
$relayPointStreet = $infosRelayPoint['RELAYSTREETANDNUMBER'];
$relayPointZip = $infosRelayPoint['RELAYPOINTZIP'];
$relayPointLocality = $infosRelayPoint['RELAYPOINTLOCALITY'];
$relayPointCountry = $infosRelayPoint['RELAYPOINTCOUNTRY'];
$userFirstName = $infosRelayPoint['USERFIRSTNAME'];
$userName = $infosRelayPoint['USERNAME'];
// Enlever l'accent pour le nom (sinon pose soucis)                    
$lastname = str_replace($search, $replace, $userName);
$firstname = str_replace($search, $replace, $userFirstName);
// Création du nom             
$name =  $lastname.' '.$firstname;
// Création de la référence client à partir des infos de l'acheteur
$nameAbbr = substr($userName, 0, 1);                   
$firstNameAbbr = substr($userFirstName, 0, 1);
                         
$searchString = " ";
$replaceString = "";       
$clientReference = strtoupper($firstNameAbbr.$nameAbbr);
$clientReference = str_replace($searchString, $replaceString, $clientReference);   
$userCountry = $infosRelayPoint['USERCOUNTRY'];
$userPhone = $infosRelayPoint['USERPHONE'];
$userEmail = $infosRelayPoint['USEREMAIL'];
// Récupérer le poids total de la commande
$totalWeight = intval($infosRelayPoint['TOTALWEIGHT']);
// Frais de livraison de la commande pour le magasin
$shippingsByShop = intval($infosRelayPoint['SHIPPINGS']);
// Déterminer le nombre de colis (maximum 30 kg pour 1 colis)
if($totalWeight <= 30000){
   $nbr_colis = 1;
} else{
  $nbr_colis = round($totalWeight / 30000);
}  
// Déterminer le CRT (Montant de contre-remboursement, en centimes dans la devise)
$crt = $totalByShop + $shippingsByShop;
 
                 
$client = new SoapClient('http://api.mondialrelay.com/Web_Services.asmx?WSDL', array('soap_version' => SOAP_1_1, 'trace' => true));
$client->soap_defencoding = 'utf-8'; 
 
// Définitions des paramètres dans un tableau pour l'appel
$paramsRelayPoint = array(
  'Enseigne' => $webSiteId,
  'ModeCol' => 'REL',
  'ModeLiv' => '24R',
  'NDossier' => 2644,
  'NClient' => $clientReference,        
  'Expe_Langage' => 'FR', 
  'Expe_Ad1' => 'NOM DE MA SOCIETE',
  'Expe_Ad3' => 'RUE DE MA SOCIETTE',
  'Expe_Ville' => "VILLE DE MA SOCIETE",
  'Expe_CP' => 'CP DE MA SOCIETE',
  'Expe_Pays' => 'BE',
  'Expe_Tel1' => '+3271549993',
  'Dest_Langage' => 'FR',
  'Dest_Ad1' => $relayPoint,
  'Dest_Ad2' => $name,
  'Dest_Ad3' => $relayPointStreet,
  'Dest_Ville' => $relayPointLocality,
  'Dest_CP' => (int)$relayPointZip,
  'Dest_Pays' => $relayPointCountry,
  'Dest_Tel1' => $userPhone,
  'Dest_Mail' => $userEmail,
  'Poids' => $totalWeight,
  'NbColis' => (int)$nbr_colis,           
  'CRT_Valeur'=> (int)$crt,
  'COL_Rel_Pays' => 'XX',
  'LIV_Rel_Pays' => 'BE',
);
 
// Génération de la clé de sécurité
$securityCode = implode("", $paramsRelayPoint);      
$securityCode .= $webSiteKey;                   $paramsRelayPoint["Security"] = strtoupper(md5($securityCode)); 
 
$labelRelayPoint = $client->__soapCall('WSI2_CreationEtiquette', array($paramsRelayPoint, 'uri'=>'http://api.mondialrelay.com/WSI2_CreationEtiquette')); 


J'ai bien respecté tous les paramètres obligatoires, vu que cela fonctionne, mais que pour certains points relay, c'est la raison pour laquelle, je n'arrive pas à comprendre pourquoi.

J'ai réussit à encoder la commande manuellement avec le point relay en question et cela fonctionne, et je ne vois pas de différence, j'ai vérifié si ce n'est pas une question de MAJUSCULE, accents, etc, j'ai tout fais, et cela ne fonctionne toujours pas.

Toute aide est la bienvenue.

Merci d'avance.

EDIT : Correction des balises de code

12 réponses

  1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    bonjour
    quelle erreur obtiens-tu? à quelle ligne de code?
    0
    1. jaymbo
       
      Bonjour,

      J'obtiens cette erreur : object(stdClass)#5 (1) { ["WSI2_CreationEtiquetteResult"]=> object(stdClass)#6 (1) { ["STAT"]=> string(2) "93" } }

      Le STAT doit être à 0 pour que cela fonctionne.

      J'ai essayé en encodant, copié-collé du site Mondial Relay, les points relais qui ne passent pas et c'est pareil. Si je change juste le code postal et la rue, avec un point relais qui passe, ça fonctionne, même en laissant le mauvais nom de point relais.

      Bien à toi.
      0
      1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > jaymbo
         
        Que signifie ce 93?
        0
  2. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
     
    Bonjour
    Fais un var_dump de ta variable$paramsRelayPoint
    Et regarde ce qu'elle contient...

    Essaye de remplacer ta variable par les valeurs contenu en dur dans le var_dump et regarde si tu as toujours ton souci...
    Si tu ne parviens pas à déterminer quel élément cause le problème, remplace les un par un avec sa variable PHP... Puis test au fur et à mesure jusqu'à temps de trouver la variable qui pose problème.

    0
  3. jaymbo
     
    Bonjour,

    Le var_dump de $paramsRelayPoint donne ceci :

    relay point :Q8
    relay street :CHAUSSEE DU ROEULX 1063
    relay zip :7021
    relay locality :MONS
    relay country :BE
    client relay reference :RA
    user relay country :BE
    user relay phone :+32497621010
    user relay email :***@***
    total weight :700
    nb colis :1
    crt :375

    Donc, je fais déjà cela et pour le deuxième point que tu mentionnes aussi et je ne trouve pas de solution.

    Essaye de remplacer ta variable par les valeurs contenu en dur dans le var_dump et regarde si tu as toujours ton souci... --> j'ai carrément encodé les données dans le tableau en dur, toutes une à une et il y a toujours un soucis.

    Précision : si je laisse en dur, le nom du point relay et que je change avec un code postal et une rue d'un point relay qui fonctionne, cela fonctionne.

    Bien à toi.
    0
    1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
       
      Un var_dump retourne, dans les informations, le type de variable et sa longueur ... il serait bien de nous le montrer tel quel...
      et nous montrer aussi ce que ça donne avec des données qui fonctionnent..

      Ensuite, j'ai l'impression que le souci vient de l'api que tu appelles ... et non du code php que tu nous montres.
      Si c'est bien le cas .. il faut voir ça avec eux. nous on n'y pourra rien.
      0
  4. jaymbo
     
    Je suis en train de vous faire ça, un petit instant, je vous envoie ça.
    0
    1. jaymbo
       
      Cela signifie ceci :

      93
      Aucun élément retourné par le plan de tri
      Si vous effectuez une collecte ou une livraison en Point Relais, vérifiez que les Point Relais sont bien disponibles. Si vous effectuez une livraison à domicile, il est probable que le code postal que vous avez indiqué n'existe pas.
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    93:
    Aucun élément retourné par le plan de tri
    Si vous effectuez une collecte ou une livraison en Point Relais, vérifiez que les Point Relais sont bien disponibles. Si vous effectuez une livraison à domicile, il est probable que le code postal que vous avez indiqué n'existe pas.
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      Il me semble qu'il faut détecter l'erreur, et inviter l'utilisateur à sélectionner un autre point de livraison.
      0
      1. jaymbo > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
         
        Tu n'as pas compris, à cette étape, l'utilisateur à déjà choisit le point relay, il peut le choisir, mais ensuite quand il a payé, ça passe sur une page qui fait le traitement et enregistre la commande en backend Mondial Relay et pour certains points relays choisit, cela ne fonctionne pas, c'est au niveau de l'enregistrement de la commande dans leur backend et pas au niveau du choix.
        0
      2. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > jaymbo
         
        Comment souhaites-tu réagir à une erreur dans le backend de Mondial Relay après le paiement?
        0
      3. jaymbo > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
         
        Il n'y a rien à faire, tout le reste est géré par mon fichier php, qui entre autre enregistre tout en db, mets à jour, après le paiement, ce fichier crée donc aussi la commande en backend, et renvoie vers l'application, point bar, il n'y a rien d'autre, je dois juste régler ce soucis de point relay qui ne fonctionnent pas pour l'enregistrement dans le backend et mon système est totalement fonctionnel.
        0
  7. jaymbo
     
    Voici le type de données qui doit être envoyé à l'API :

    Méthode WSI2_CreationEtiquette

    Cette méthode attend exactement les mêmes paramètres en entrée que WSI2_CreationExpedition mais retourne une étiquette au format PDF plutôt que les informations à renseigner sur l’étiquette.

    Paramètres -> voir documentation API Mondial Relay

    Enseigne obligatoire

    8 caractères fixes
    ^[0-9A-Z]{2}[0-9A-Z ]{6}$
    Ce paramètre est un identifiant spécifique à l'enseigne fourni dans le document de paramétrage.

    ModeCol obligatoire

    Liste de valeurs prédéfinies
    ^(CCC|CDR|CDS|REL)$

    -> REL = point un point relay

    ModeLiv obligatoire

    Liste de valeurs prédéfinies
    ^(LCC|LD1|LDS|24R|24L|24X|ESP|DRI)$

    -> 24R = point un point relay

    NDossier facultatif

    15 caractères
    ^(|[0-9A-Z_ -]{0,15})$
    N° Dossier Enseigne, information libre. Numéro de facture par exemple

    NClient facultatif

    9 caractères
    ^(|[0-9A-Z]{0,9})$
    N° Client Enseigne, information libre

    Expe_Langage obligatoire

    2 caractères fixes
    Langue de l'expéditeur
    Code ISO, pour le Français : FR
    ^[A-Z]{2}$

    Expe_Ad1 obligatoire

    32 caractères
    ^[0-9A-Z_\-'., /]{2,32}$
    Expéditeur (Civilité Nom Prénom)
    Civilités acceptées = 'MR', 'M.', 'MME', 'MLE' et 'MLLE'

    Expe_Ad3 obligatoire

    32 caractères
    ^[0-9A-Z_\-'., /]{2,32}$
    Expéditeur (Rue)

    Expe_Ville obligatoire

    Format dépendant du pays, pour la France : 26 caractères
    ^[A-Z_\-' ]{2,26}$

    Expe_CP obligatoire

    Format dépendant du pays, pour la France :
    5 caractères numériques fixes
    ^[0-9@]{1}[0-9]{4}$
    Expéditeur (Code Postal)

    Expe_Pays obligatoire

    2 caractères fixes
    Code ISO, pour la France : FR
    ^[A-Z]{2}$

    Expe_Tel1 obligatoire

    Format dépendant du pays, pour la France : 13 caractères numériques
    ^((00|\+)33|0)[0-9][0-9]{8}$

    Dest_Langage obligatoire

    2 caractères fixes
    Codes ISO autorisés : FR, ES, NL
    ^[A-Z]{2}$

    Dest_Ad1 obligatoire

    32 caractères
    ^[0-9A-Z_\-'., /]{2,32}$
    Civilité : ^((MR|M.|M|MME|MLE|MLLE) )$

    Destinataire (Civilité Nom Prénom)
    Civilités acceptées = 'MR', 'M.', 'MME', 'MLE' et 'MLLE'

    Dest_Ad2 facultatif

    32 caractères
    ^[0-9A-Z_\-'., /]{0,32}$
    Destinataire (Complément)

    Dest_Ad3 obligatoire

    32 caractères
    ^[0-9A-Z_\-'., /]{2,32}$
    Destinataire (Rue)

    Dest_Ville obligatoire

    Format dépendant du pays, pour la France : 26 caractères
    ^[A-Z_\-' ]{2,26}$
    Destinataire (Ville)

    Dest_CP obligatoire

    Format dépendant du pays, pour la France :
    5 caractères numériques fixes
    ^[0-9@]{1}[0-9]{4}$
    Destinataire (Code Postal)

    Dest_Pays obligatoire

    2 caractères fixes
    Code ISO, pour la France : FR
    ^[A-Z]{2}$
    Destinataire (Code Pays) (Code ISO : FR, BE...)

    Dest_Tel1 obligatoire et facultatif (les deux sont possibles)

    Format dépendant du pays, pour la France : 13 caractères numériques
    ^((00|\+)33|0)[0-9][0-9]{8}$
    Destinataire (Téléphone Fixe), Obligatoire pour la LD1, LDS

    Dest_Mail facultatif

    70 caractères
    Format e-mail RFC2822
    ^[\w\-\.\@_]{7,70}$
    Destinataire (Adresse e-mail)

    Poids obligatoire

    7 caractères numériques + 2 décimales en option
    ^[0-9]{3,7}\.?[0-9]{0,2}$
    Poids en grammes

    NbColis obligatoire

    2 caractères numériques
    ^[0-9]{1,2}$

    CRT_Valeur obligatoire

    7 caractères numériques
    ^[0-9]{1,7}$
    Montant de contre-remboursement, en centimes dans la devise

    COL_Rel_Pays obligatoire et facultatif (les deux sont possibles)

    2 caractères fixes (code ISO du pays)
    ^[A-Z]{2}$
    Renseigner « XX » et le pays sera automatiquement reconnu en fonction de l’adresse de l’expéditeur
    Obligatoire si Collecte Point Relais

    LIV_Rel_Pays obligatoire et facultatif (les deux sont possibles)

    2 caractères fixes
    Code ISO, pour la France : FR
    ^[A-Z]{2}$
    Obligatoire si Livraison Relais

    Mon code


    // Données venant dans la db, à passer au tableau d'envoi
    $utf8 = array(
    '/[áàâãªä]/u' => 'a',
    '/[ÁÀÂÃÄ]/u' => 'A',
    '/[ÍÌÎÏ]/u' => 'I',
    '/[íìîï]/u' => 'i',
    '/[éèêë]/u' => 'e',
    '/[ÉÈÊË]/u' => 'E',
    '/[óòôõºö]/u' => 'o',
    '/[ÓÒÔÕÖ]/u' => 'O',
    '/[úùûü]/u' => 'u',
    '/[ÚÙÛÜ]/u' => 'U',
    '/ç/' => 'c',
    '/Ç/' => 'C',
    '/ñ/' => 'n',
    '/Ñ/' => 'N',
    '/–/' => '-',
    '/[’‘‹›‚]/u' => ' ',
    '/[“”«»„]/u' => ' ',
    '/ /' => ' ',
    );

    $relayPoint = $infosRelayPoint['RELAYPOINT'];
    $relayPointNum = $infosRelayPoint['RELAYPOINT'];;
    $relayPointStreet = $infosRelayPoint['RELAYSTREETANDNUMBER'];
    $relayPointZip = $infosRelayPoint['RELAYPOINTZIP'];
    $relayPointLocality = $infosRelayPoint['RELAYPOINTLOCALITY'];
    $relayPointCountry = $infosRelayPoint['RELAYPOINTCOUNTRY'];
    $userFirstName = $infosRelayPoint['USERFIRSTNAME'];
    $userName = $infosRelayPoint['USERNAME'];
    // Enlever l'accent pour le nom (sinon pose soucis)
    $lastname = preg_replace(array_keys($utf8), array_values($utf8), $userName);
    $firstname = preg_replace(array_keys($utf8), array_values($utf8), $userFirstName);
    // Création du nom
    $name = $lastname.' '.$firstname;
    // Création de la référence client à partir des infos de l'acheteur
    //$nameAbbr = substr($userName, 0, 1);
    // $firstNameAbbr = substr($userFirstName, 0, 1);
    $nameAbbr = mb_substr($userName,0, 1, "utf-8");
    $firstNameAbbr = mb_substr($userFirstName,0, 1, "utf-8");
    $searchString = " ";
    $replaceString = "";
    $clientReference = str_replace($searchString, $replaceString, $clientReference);
    $clientReference = mb_strtoupper($firstNameAbbr.$nameAbbr, "UTF-8");
    $userCountry = $infosRelayPoint['USERCOUNTRY'];
    $userPhone = $infosRelayPoint['USERPHONE'];
    $userEmail = $infosRelayPoint['USEREMAIL'];
    // Récupérer le poids total de la commande
    $totalWeight = intval($infosRelayPoint['TOTALWEIGHT']);
    // Frais de livraison de la commande pour le magasin
    $shippingsByShop = intval($infosRelayPoint['SHIPPINGS']);
    // Déterminer le nombre de colis (maximum 30 kg pour 1 colis)
    $nbr_colis = intdiv($totalWeight - 1, 30_000) + 1;
    // Déterminer le CRT (Montant de contre-remboursement, en centimes dans la devise)
    $crt = $totalByShop + $shippingsByShop;

    // Définitions des paramètres dans un tableau pour l'appel
    $paramsRelayPoint = array(
    'Enseigne' => $webSiteId,
    'ModeCol' => 'REL',
    'ModeLiv' => '24R',
    'NDossier' => $lastOrderId,
    'NClient' => $clientReference,
    'Expe_Langage' => 'FR',
    'Expe_Ad1' => 'WUP',
    'Expe_Ad3' => 'RUE DES CROCHEUX 5',
    'Expe_Ville' => "FONTAINE-L'EVEQUE",
    'Expe_CP' => '6140',
    'Expe_Pays' => 'BE',
    'Expe_Tel1' => '+3271549993',
    'Dest_Langage' => 'FR',
    'Dest_Ad1' => $relayPoint,
    'Dest_Ad2' => $name,
    'Dest_Ad3' => $relayPointStreet,
    'Dest_Ville' => $relayPointLocality,
    'Dest_CP' => $relayPointZip,
    'Dest_Pays' => $relayPointCountry,
    'Dest_Tel1' => $userPhone,
    'Dest_Mail' => $userEmail,
    'Poids' => $totalWeight,
    'NbColis' => $nbr_colis,
    'CRT_Valeur'=> $crt,
    'COL_Rel_Pays' => 'XX',
    'LIV_Rel_Pays' => 'BE',
    );

    $webSiteId = "monid";
    $webSiteKey = "maclé";

    $client = new SoapClient('http://api.mondialrelay.com/Web_Services.asmx?WSDL', array('soap_version' => SOAP_1_1, 'trace' => true));
    $client->soap_defencoding = 'UTF-8';
    $client->decode_utf8 = false;

    // Génération de la clé de sécurité
    $securityCode = implode("", $paramsRelayPoint);
    $securityCode .= $webSiteKey;
    $paramsRelayPoint["Security"] = strtoupper(md5($securityCode));

    // Création de la commande et de l'étiquette
    $labelRelayPoint = $client->__soapCall('WSI2_CreationEtiquette', array($paramsRelayPoint, 'uri'=>'http://api.mondialrelay.com/WSI2_CreationEtiquette'));


    Exemple de point relay qui fonctionne

    var_dump de chaque valeur passée au tableau

    relay point : string(18) "LA ROUE DEL BROUET"
    relay street : string(21) "RUE JOSEPH WAUTERS 69"
    relay zip : string(4) "7110"
    relay locality : string(19) "STREPY-BRACQUEGNIES"
    relay country : string(2) "BE"
    client relay reference : string(2) "GC"
    user relay country : string(2) "BE"
    user relay phone : string(12) "+32497621010"
    user relay email : string(27) "***@***"
    total weight : int(700)
    nb colis : int(1)
    crt : int(375)

    var_dump du tableau complet

    array(26) { ["Enseigne"]=> string(8) "CC21W4GC" ["ModeCol"]=> string(3) "REL" ["ModeLiv"]=> string(3) "24R" ["NDossier"]=> int(2644) ["NClient"]=> string(2) "GC" ["Expe_Langage"]=> string(2) "FR" ["Expe_Ad1"]=> string(3) "WUP" ["Expe_Ad3"]=> string(18) "RUE DES CROCHEUX 5" ["Expe_Ville"]=> string(17) "FONTAINE-L'EVEQUE" ["Expe_CP"]=> string(4) "6140" ["Expe_Pays"]=> string(2) "BE" ["Expe_Tel1"]=> string(11) "+3271549993" ["Dest_Langage"]=> string(2) "FR" ["Dest_Ad1"]=> string(18) "LA ROUE DEL BROUET" ["Dest_Ad2"]=> string(16) "Cassano Gabriele" ["Dest_Ad3"]=> string(21) "RUE JOSEPH WAUTERS 69" ["Dest_Ville"]=> string(19) "STREPY-BRACQUEGNIES" ["Dest_CP"]=> string(4) "7110" ["Dest_Pays"]=> string(2) "BE" ["Dest_Tel1"]=> string(12) "+32497621010" ["Dest_Mail"]=> string(27) "***@***" ["Poids"]=> int(700) ["NbColis"]=> int(1) ["CRT_Valeur"]=> int(375) ["COL_Rel_Pays"]=> string(2) "XX" ["LIV_Rel_Pays"]=> string(2) "BE" }

    Message de retour de l'API (donc, l'erreur, dans ce cas-ci)

    object(stdClass)#5 (1) { ["WSI2_CreationEtiquetteResult"]=> object(stdClass)#6 (3) { ["STAT"]=> string(1) "0" ["ExpeditionNum"]=> string(8) "98962006" ["URL_Etiquette"]=> string(153) "/StickersProxy/CC21W4GC/etiquette/GetStickersExpeditionsAnonyme2?ens=CC21W4GC&expedition=98962006&lg=fr-FR&format=A4&crc=DCA851CD392C23ED5FB023774A30E41D" } }

    Exemple de point relay qui ne fonctionne pas

    var_dump de chaque valeur passée au tableau

    relay point : string(2) "Q8"
    relay street : string(23) "CHAUSSEE DU ROEULX 1063"
    relay zip : string(4) "7021"
    relay locality : string(4) "MONS"
    relay country : string(2) "BE"
    client relay reference : string(2) "RA"
    user relay country : string(2) "BE"
    user relay phone : string(12) "+32497621010"
    user relay email : string(21) "***@***"
    total weight : int(700)
    nb colis : int(1)
    crt : int(375)

    var_dump du tableau complet

    array(26) { ["Enseigne"]=> string(8) "CC21W4GC" ["ModeCol"]=> string(3) "REL" ["ModeLiv"]=> string(3) "24R" ["NDossier"]=> int(2644) ["NClient"]=> string(2) "RA" ["Expe_Langage"]=> string(2) "FR" ["Expe_Ad1"]=> string(3) "WUP" ["Expe_Ad3"]=> string(18) "RUE DES CROCHEUX 5" ["Expe_Ville"]=> string(17) "FONTAINE-L'EVEQUE" ["Expe_CP"]=> string(4) "6140" ["Expe_Pays"]=> string(2) "BE" ["Expe_Tel1"]=> string(11) "+3271549993" ["Dest_Langage"]=> string(2) "FR" ["Dest_Ad1"]=> string(2) "Q8" ["Dest_Ad2"]=> string(11) "Arpine Rene" ["Dest_Ad3"]=> string(23) "CHAUSSEE DU ROEULX 1063" ["Dest_Ville"]=> string(4) "MONS" ["Dest_CP"]=> int(7021) ["Dest_Pays"]=> string(2) "BE" ["Dest_Tel1"]=> string(12) "+32497621010" ["Dest_Mail"]=> string(21) "***@***" ["Poids"]=> int(700) ["NbColis"]=> int(1) ["CRT_Valeur"]=> int(375) ["COL_Rel_Pays"]=> string(2) "XX" ["LIV_Rel_Pays"]=> string(2) "BE" }


    <gras>Message de retour de l'API (donc, l'erreur, dans ce cas-ci)


    object(stdClass)#5 (1) { ["WSI2_CreationEtiquetteResult"]=> object(stdClass)#6 (1) { ["STAT"]=> string(2) "93" } }

    Voilà, j'ai passé mon temps, pour être le plus clair et complet possible.
    0
  8. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    As-tu essayé en fournissant aussi le paramètre
    COL_Rel
    ?
    0
    1. jaymbo
       
      Apparemmment, quand même toujours le même soucis mais j'analyse le truc.
      0
  9. jaymbo
     
    non,je suis en train de coder pour le faire, et j'ai réglé un autre truc dans mon système. je reviens vers vous.
    0
  10. jaymbo
     
    Feedback :

    J'enregistre donc maintenant le numéro de point relai mais le problème, il est récupéré en string, et si je le caste en "int" avec le php, si il commence par un 0, je perds le ou les 0. Les autres données en string, je les caste, et donc je suis toujours au même point (pour le numéro de téléphone, pareil, je perds le +32 si je caste en int et il le faut).

    var_dump des données

    relay point : string(16) "LA FAIM DU LIVRE"
    num relay point :string(6) "006813"
    relay street : string(25) "RUE ZEPHIRIN FONTAINE 140"
    relay zip : int(7130)
    relay locality : string(6) "BINCHE"
    relay country : string(2) "BE"
    client relay reference : string(2) "RA"
    user relay country : string(2) "BE"
    user relay phone : string(12) "+32497621010"
    user relay email : string(21) "***@***"
    total weight : int(700)
    nb colis : int(1)
    crt : int(375)

    var_dump du tableau

    array(27) { ["Enseigne"]=> string(8) "CC21W4GC" ["ModeCol"]=> string(3) "REL" ["ModeLiv"]=> string(3) "24R" ["NDossier"]=> int(2644) ["NClient"]=> string(2) "RA" ["Expe_Langage"]=> string(2) "FR" ["Expe_Ad1"]=> string(3) "WUP" ["Expe_Ad3"]=> string(18) "RUE DES CROCHEUX 5" ["Expe_Ville"]=> string(17) "FONTAINE-L'EVEQUE" ["Expe_CP"]=> string(4) "6140" ["Expe_Pays"]=> string(2) "BE" ["Expe_Tel1"]=> string(11) "+3271549993" ["Dest_Langage"]=> string(2) "FR" ["Dest_Ad1"]=> string(16) "LA FAIM DU LIVRE" ["Dest_Ad2"]=> string(11) "Arpine Rene" ["Dest_Ad3"]=> string(25) "RUE ZEPHIRIN FONTAINE 140" ["Dest_Ville"]=> string(6) "BINCHE" ["Dest_CP"]=> int(7130) ["Dest_Pays"]=> string(2) "BE" ["Dest_Tel1"]=> string(12) "+32497621010" ["Dest_Mail"]=> string(21) "***@***" ["Poids"]=> int(700) ["NbColis"]=> int(1) ["CRT_Valeur"]=> int(375) ["COL_Rel_Pays"]=> string(2) "XX" ["COL_Rel"]=> string(6) "006813" ["LIV_Rel_Pays"]=> string(2) "BE" }

    Retour

    object(stdClass)#5 (1) { ["WSI2_CreationEtiquetteResult"]=> object(stdClass)#6 (1) { ["STAT"]=> string(2) "93" } }

    Si je met en dur le numéro de point relay , en int :

    // Définitions des paramètres dans un tableau pour l'appel
    $paramsRelayPoint = array(
    'Enseigne' => $webSiteId,
    'ModeCol' => 'REL',
    'ModeLiv' => '24R',
    'NDossier' => 2644,
    'NClient' => $clientReference,
    'Expe_Langage' => 'FR',
    'Expe_Ad1' => 'WUP',
    'Expe_Ad3' => 'RUE DES CROCHEUX 5',
    'Expe_Ville' => "FONTAINE-L'EVEQUE",
    'Expe_CP' => '6140',
    'Expe_Pays' => 'BE',
    'Expe_Tel1' => '+3271549993',
    'Dest_Langage' => 'FR',
    'Dest_Ad1' => $relayPoint,
    'Dest_Ad2' => $name,
    'Dest_Ad3' => $relayPointStreet,
    'Dest_Ville' => $relayPointLocality,
    'Dest_CP' => $relayPointZip,
    'Dest_Pays' => $relayPointCountry,
    'Dest_Tel1' => $userPhone,
    'Dest_Mail' => $userEmail,
    'Poids' => $totalWeight,
    'NbColis' => $nbr_colis,
    'CRT_Valeur'=> $crt,
    'COL_Rel_Pays' => 'XX',
    'COL_Rel' => 006813,
    'LIV_Rel_Pays' => 'BE',
    );

    Cela produit cette erreur : Parse error: Invalid numeric literal in /home/wupbeiumsw/www/api.wup/public/postPayzen.php on line 201.

    Et si je le laisse en string, je suis toujours au même point.

    Il faudrait réussir à passer un int pour ce numéro de point relay, en php, si c'est possible, car je n'ai pas l'impression, en espérant que le soucis vient de là.

    Je continue à chercher ....
    0
  11. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    Tu reçois le numéro de point relais en string, pourquoi passer par un int?

    As-tu essayé en fournissant aussi le paramètre
    LIV_Rel
    ?
    0
    1. jaymbo
       
      Parce que c'est le mysql qui le renvoit directement en string, malgré qu'il est en int dans la db.
      De plus, j'ai capté que même si je mets le mauvais nom de pt relay et le mauvaise rue, si je mets le code postal et la ville d'un point relay qui passe, ça fonctionne. un truc de ouf....
      0
      1. jaymbo > jaymbo
         
        ps : ah non, j'ai oublié Liv_rel, je teste toute de suite mais je pense pas que ça va changer quelque chose...
        0
      2. jaymbo > jaymbo
         
        et bien, tu sais quoi, j'ai parlé pour faire du vent, je viens de tester et ça marche, reste à voir si ça marche avec tous, je teste !!! merci !!!
        0
      3. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > jaymbo
         
        Pourquoi ne pas enregistrer le numéro de point relais comme texte dans la db?
        0
      4. jaymbo > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
         
        C'est ce que j'avais fais au début, mais je pensais qu'il fallait absolument un int
        0
  12. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    Je pense que tu confonds l'adresse du point relais et l'adresse du destinataire, donc du client.
    0
    1. jaymbo
       
      non, c'est bien ce que je fais, regarde :

      relay point : string(16) "LA FAIM DU LIVRE"
      num relay point :string(6) "006813"
      relay street : string(25) "RUE ZEPHIRIN FONTAINE 140"
      relay zip : int(7130)
      relay locality : string(6) "BINCHE"
      relay country : string(2) "BE"
      client relay reference : string(2) "RA"
      user relay country : string(2) "BE"
      user relay phone : string(12) "+32497621010"
      user relay email : string(21) "***@***"
      total weight : int(700)
      nb colis : int(1)
      crt : int(375)

      tous les point, relay street, etc, ce sont les coordonnées du point relay choisit, par contre, ça a fonctionné, mais j'ai oublié de changer le cp en dur, donc je reteste.


      array(23) { ["Enseigne"]=> string(8) "CC21W4GC" ["ModeCol"]=> string(3) "REL" ["ModeLiv"]=> string(3) "24R" ["Expe_Langage"]=> string(2) "FR" ["Expe_Ad1"]=> string(3) "WUP" ["Expe_Ad3"]=> string(18) "RUE DES CROCHEUX 5" ["Expe_Ville"]=> string(17) "FONTAINE-L'EVEQUE" ["Expe_CP"]=> int(6140) ["Expe_Pays"]=> string(2) "BE" ["Expe_Tel1"]=> string(11) "+3271549993" ["Dest_Langage"]=> string(2) "FR" ["Dest_Ad1"]=> string(16) "LA FAIM DU LIVRE" ["Dest_Ad3"]=> string(25) "RUE ZEPHIRIN FONTAINE 140" ["Dest_Ville"]=> string(6) "BINCHE" ["Dest_CP"]=> int(7000) ["Dest_Pays"]=> string(2) "BE" ["Poids"]=> int(700) ["NbColis"]=> int(1) ["CRT_Valeur"]=> int(375) ["COL_Rel_Pays"]=> string(2) "XX" ["COL_Rel"]=> string(6) "006813" ["LIV_Rel_Pays"]=> string(2) "BE" ["LIV_Rel"]=> string(6) "006813" }
      0
      1. jaymbo > jaymbo
         
        2ème test avec un point relay qui ne passait, ça fonctionne
        0
      2. jaymbo > jaymbo
         
        test avec un qui fonctionnait, ça fonctionne toujours aussi, ça à l'air résolu, merci beaucoup à tous pour votre aide.
        0
      3. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > jaymbo
         
        Je pense que
        Dest_Ad1
        , ce n'est pas l'adresse du point relais, mais l'adresse du client.
        0
  13. jaymbo
     
    J'ai refais le test et ça fonctionne toujours, il faut que j'essaie avec un autre qui ne passait et un qui passait, si ça fonctionne, c bon
    0