Points de terminaison
Demander des devis d'expédition
POST | https://api.iglobalstores.com/2.0/shipping-quotes
- Crée une nouvelle demande de devis d'expédition pour les articles dans le panier d'achat, incluant les droits d'importation et les taxes ainsi que les informations de vérification des restrictions sur les articles.
Requête HTTPS
Champ | Remarques |
---|---|
Méthode HTTP | POST |
URL du point de terminaison | https://api.iglobalstores.com/2.0/shipping-quotes |
Protocole | HTTPS |
Format du message | JSON |
En-tête HTTP Accept | Accept: application/json |
En-tête HTTP Token de Sécurité | serviceToken: votre-valeur-de-jeton-de-testAjoutez un en-tête à votre requête HTTPS nommé serviceToken avec une valeur de votre jeton API de sécurité de test. (Contactez votre gestionnaire de compte pour ce jeton) |
En-tête HTTP Type de Contenu | Content-Type: application/jsonComme vous allez envoyer des données JSON au service, ajoutez un en-tête à votre requête HTTPS nommé Content-Type avec une valeur de application/json |
PAIRES CLÉ/VALEUR JSON dans le corps de la requête
Format du message: JSON
Exemple de requête
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
{
"boxCount": null,
"items": [
{
"cartItemId": 1,
"detailedDescription": "description including options, material content, etc",
"category": "sunglasses",
"productId": "17898-675234",
"sku": "oakley-123",
"unitPrice": 199.0,
"quantity": 1,
"length": 2.5,
"width": 6.5,
"height": 2.5,
"dimensionalUnits": null,
"weight": 4,
"weightUnits": "OZ",
"hsCode": null,
"brandName": "Oakley",
"countryOfOrigin": "CN"
},
{
"cartItemId": 2,
"detailedDescription": "description including options, material content, etc",
"category": "sunglasses",
"productId": "17898-675235",
"sku": "oakley-125",
"unitPrice": 179.0,
"quantity": 1,
"length": 2.5,
"width": 6.5,
"height": 2.5,
"dimensionalUnits": null,
"weight": 4,
"weightUnits": "OZ",
"hsCode": null,
"brandName": "Oakley",
"countryOfOrigin": "CN"
}
],
"shippingAmountOverride": null,
"shipFromAddress": null,
"shipToAddress": {
"name": "John Doe",
"address1": "123 S West Elm St",
"address2": null,
"address3": null,
"city": "Calgary",
"state": "Alberta",
"stateCode": "AB",
"postalCode": "T2P 5G8",
"countryCode": "CA"
}
}
Définitions JSON de la demande
Champ | Notes |
---|---|
boxCount | Ce champ décrit les boîtes qui seront utilisées pour expédier la commande. On ne s'attend pas à ce qu'un marchand le sache au moment de la commande ; cependant, s'il est connu, il peut être transmis dans le format spécifique suivant. Valeur d'exemple : 22x15x15(1),8x8x4(2),32x22x14(1) Format : Liste séparée par des virgules des dimensions et du nombre de boîtes. Dans l'exemple ci-dessus, il y a un total de 4 boîtes. La première boîte de la liste sera de 22 pouces de long, par 15 pouces de large, par 15 pouces de haut. Il n'y aura qu'une seule boîte utilisée pour cette taille. Il y aura deux boîtes de taille 8x8x4 pouces. Il est acceptable de passer plusieurs fois la même dimension de boîte si cela vous est facile, comme ceci : "22x15x15(1),22x15x15(1)", ce qui signifie 2 boîtes de taille 22x15x15 pouces. |
items REQUIS | Une liste de cartes d'articles |
items[index].brandName | Le nom de la marque de l'article spécifique aidera notre moteur de règles à déterminer au mieux si une restriction s'applique à l'article pour le pays de destination. Même si le nom de la marque d'un article correspond ou ne correspond pas textuellement à une restriction spécifique, notre moteur de règles utilisera le SKU de l'article et/ou le productId pour mieux décider si l'article est effectivement restreint dans le pays de destination. Veuillez envoyer le nom de la marque si disponible. Valeurs d'exemple : "Oakley" ou "Nike" ou null |
items[index].cartItemId REQUIS | Ce champ est requis pour identifier l'article, spécifiquement dans la liste des articles. Il peut être aussi simple qu'une valeur d'index. Nous utiliserons ce cartItemId pour identifier un article s'il est restreint dans la réponse JSON. Assurez-vous donc que vous êtes en mesure d'identifier le même article dans votre panier par ce cartItemId que vous nous transmettez. Valeurs d'exemple : 1 ou 2 ou 3 |
items[index].category | Les catégories de produits - le produit spécifique dont il fait partie. La catégorie aidera notre moteur de règles à déterminer au mieux si une restriction s'applique à l'article pour le pays de destination. Même si la catégorie d'un article correspond ou ne correspond pas textuellement à une restriction spécifique, notre moteur de règles utilisera le SKU de l'article et/ou le productId pour mieux décider si l'article est effectivement restreint dans le pays de destination. Format : Une liste de noms de catégories séparés par un pipe. Chaque nom de catégorie peut être un ou plusieurs mots. Si un article existe dans plus d'une catégorie, veuillez les lister toutes les deux séparées par un caractère pipe "". Exemple : valeurs "Lunettes de soleil" ou "Accessoires de soiréeSacs à main" |
items[index].countryOfOrigin | Le pays d'origine est le pays où l'article a été fabriqué ou d'où il provient initialement. Le pays d'origine aidera notre moteur de règles à déterminer au mieux si une restriction s'applique à l'article pour le pays de destination. Certains pays n'autorisent pas certains types de marchandises en provenance de certains autres pays. Exemples de valeurs : "CN" pour la Chine ou "US" pour les États-Unis ou null |
items[index].detailedDescription REQUIS | Ce champ est simplement du texte, mais il devrait inclure autant d'informations que possible sur l'article acheté. Par exemple, le nom complet et le code de l'article s'il y a lieu, la couleur ou d'autres options sélectionnées, le contenu en matière, et toute description que vous avez pour l'article. Il existe de nombreux types de restrictions à l'importation dans les pays étrangers, comme les chaussures en cuir en Italie. Parfois, la seule façon de repérer ces articles restreints est à travers la detailedDescription . Remarque : Même si la detailedDescription d'un article correspond ou non textuellement à une restriction spécifique, notre moteur de règles utilisera le SKU de l'article et/ou le productId pour mieux décider si l'article est effectivement restreint dans le pays de destination. Pour de meilleurs résultats, veuillez envoyer autant d'informations que possible dans le champ detailedDescription . Exemple de valeur : "Tory Burch, Robinson - Double Zip' Tote, couleur : New Carnival, contenu en matière : cuir, Le cuir riche en couleur confère un attrait accrocheur à un fourre-tout soigneusement structuré, orné de matériel logo et de poignées roulées pour un look complètement sophistiqué. Fermeture à pression magnétique avec des compartiments à double fermeture éclair. Poches intérieures zippées, murales et pour téléphone portable. Pieds métalliques de protection. Cuir. Par Tory Burch ; importé." |
items[index].height | Il s'agit de la hauteur de votre article. Il y a un autre champ nommé dimensionalUnits , où vous spécifiez les pouces ou les centimètres pour cette mesure. Veuillez fournir sans virgules et avec pas plus de deux décimales. Exemple de valeur : 25,5 Vos tarifs d'expédition seront les plus précis si vous passez ce champ. |
items[index].hsCode | Il s'agit du code SH qui identifie l'article pour les pays étrangers. Passer le hsCode aidera à identifier correctement les droits d'importation appropriés rate pour l'article spécifique. Non requis s'il n'est pas disponible - nous nous en occuperons si vous ne l'avez pas. Format : Soit un code à 10 chiffres ou à 6 chiffres ; peut inclure les caractères séparateurs "." ou non. Exemples de valeurs : "20.4560.0000" ou "20.4560" ou "204560" (les codes à 10 ou 6 chiffres sont acceptables) |
items[index].length | Il s'agit de la longueur de votre article. Il y a un autre champ nommé dimensionalUnits , où vous spécifiez les pouces ou les centimètres pour cette mesure. Veuillez fournir sans virgules et avec pas plus de deux décimales. Exemple de valeur : 25,5 Vos tarifs d'expédition seront les plus précis si vous passez ce champ. |
items[index].productId | Il s'agit de l'identifiant de produit pour l'article spécifique. Notre moteur de règles utilisera cette valeur comme ID pour lier les informations sur l'article apprises à votre article. Exemple de valeur : "17898-675235" Veuillez passer au moins le productID ou le SKU. Il est préférable de passer les deux. |
items[index].quantity REQUIS | Il s'agit de la quantité achetée pour l'article spécifique. Veuillez fournir un entier positif, sans virgules et sans décimales. Exemples de valeurs : 1 ou 9999 (nous préférons que vous vendiez plus d'articles que moins !) |
items[index].sku | Il s'agit de votre SKU pour l'article spécifique. Notre moteur de règles utilisera cette valeur comme ID pour lier les informations sur l'article apprises à votre article. Exemple de valeur : "oakley-125" Veuillez passer au moins le productId ou le SKU. Il est préférable de passer les deux. |
items[index].unitPrice REQUIS | Il s'agit du prix unitaire de votre article en USD (dollars américains). Veuillez fournir sans virgules, sans le signe dollar "$", et avec deux décimales. Exemple de valeur : 2102,99 |
items[index].weight | Il s'agit du poids de votre article. Il existe un autre champ nommé weightUnits , où vous spécifiez livres, onces, grammes ou kilogrammes pour cette mesure. Veuillez fournir sans virgules et avec pas plus de deux décimales. Exemple de valeur : 4,2 Vos tarifs d'expédition seront les plus précis si vous passez ce champ. |
items[index].weightUnits | Par défaut, "LB" pour livresL'unité de mesure pour la valeur de poids. Si défini sur null, "LB" (livres) sera supposé. Exemples de valeurs : "LB" pour livres ou "OZ" pour onces ou "G" pour grammes ou "KG" pour kilogrammes ou null |
items[index].width | Il s'agit de la largeur de votre article. Il existe un autre champ nommé dimensionalUnits , où vous spécifiez pouces ou centimètres pour cette mesure. Veuillez fournir sans virgules et avec pas plus de deux décimales. Exemple de valeur : 25,5 Vos tarifs d'expédition seront les plus précis si vous passez ce champ. |
shipFromAddress | Si passé en null, nous utiliserons une shipFromAddress par défaut associée à votre compte marchand. Il s'agit de l'adresse à partir de laquelle la commande sera expédiée, c'est-à-dire votre entrepôt. Il s'agit d'une carte contenant les champs d'adresse suivants : address1 , address2 , address3 , city , state , stateCode , postalCode , countryCode . Ces champs contenus sont requis ou non requis, en fonction du pays. Le point de terminaison de localisation indique quels champs d'adresse spécifiques sont requis ou non pour chaque pays. Remarque : stateCode n'est jamais requis et n'est pas déclaré dans le point de terminaison de localisation. Vous pouvez passer stateCode , s'il est disponible. |
shippingAmountOverride | Ceci est uniquement utilisé si vous connaissez le coût d'expédition avant d'appeler l'API. Il est en USD (dollars américains). Veuillez fournir sans virgules, sans le signe dollar "$" et avec deux décimales. Cette fonctionnalité ne fonctionnera pas sans la configurer avec un représentant Zonos. Exemple de valeur : 212,99 |
shipToAddress REQUIS | Il s'agit de l'adresse à laquelle la commande sera expédiée. Il s'agit d'une carte contenant les champs d'adresse suivants : name , address1 , address2 , address3 , city , state , stateCode , postalCode , countryCode . Ces champs contenus sont requis ou non en fonction du pays. Le point de terminaison de localisation indique quels champs d'adresse spécifiques sont requis pour chaque pays. Remarque : name et stateCode ne sont jamais requis et ne sont pas déclarés dans le point de terminaison de localisation. Vous pouvez passer name et/ou stateCode , s'ils sont disponibles. |
Réponse HTTPS
Format du message : JSON
Exemple de réponse pour le Canada et l'Australie uniquement
Remarque : Les réponses réelles contiendront tous les pays pris en charge.
Exemple de demande
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
{
"shippingQuotes": [
{
"id": "bcdbdbcd-0145-4d3b-a54e-0de3cdce5a0a",
"carrier": "UPS",
"conversionRate": 1.32,
"currencyCode": "CAD",
"displayName": "Express Air 2-4 Day Delivery",
"duty": 10.2,
"dutyTaxBrokerageFee": 5.0,
"dutyTaxCarrierPrepaymentFee": 5.0,
"dutyTaxEnabled": true,
"dutyTaxForced": false,
"dutyTaxTotal": 29.38,
"dutyTaxUnderDeminimus": false,
"restrictedItems": [
{
"cartItemId": 1,
"message": "We are unable to sell Oakley products to your country.",
"reasonCode": "BRAND_COUNTRY"
},
{
"cartItemId": 2,
"message": "We are unable to sell Oakley products to your country.",
"reasonCode": "BRAND_COUNTRY"
}
],
"shippingTotal": 23.62,
"taxOrVat": 9.18
},
{
"id": "80c57724-ab4e-4997-8477-08b668fef103",
"carrier": "USPS",
"conversionRate": 1.32,
"currencyCode": "CAD",
"displayName": "Post 5-10 Day Delivery",
"duty": 9.2,
"dutyTaxBrokerageFee": 5.0,
"dutyTaxCarrierPrepaymentFee": 5.0,
"dutyTaxEnabled": true,
"dutyTaxForced": false,
"dutyTaxTotal": 27.38,
"dutyTaxUnderDeminimus": false,
"restrictedItems": [
{
"cartItemId": 1,
"message": "We are unable to sell Oakley products to your country.",
"reasonCode": "BRAND_COUNTRY"
},
{
"cartItemId": 2,
"message": "We are unable to sell Oakley products to your country.",
"reasonCode": "BRAND_COUNTRY"
}
],
"shippingTotal": 13.62,
"taxOrVat": 8.18
}
]
}
Définitions JSON de réponse
Champ | Notes |
---|---|
shippingQuotes | Il s'agit d'une liste de cartes de devis d'expédition. |
shippingQuotes[index].carrier | Le transporteur auquel le devis d'expédition est spécifique. Défini uniquement sur null si le commerçant a demandé la mise en place de profils d'expédition génériques, non spécifiques à un transporteur. Les devis d'expédition n'ont pas besoin d'être spécifiques à un transporteur ; mais peuvent l'être. Contactez votre gestionnaire de compte pour obtenir de l'aide pour configurer vos profils d'expédition. Exemples de valeurs : UPS ou FEDEX ou DHL ou USPS ou CAPOST ou null |
shippingQuotes[index].displayName | Nom d'affichage de l'option d'expédition, adapté pour être affiché au client. Ces valeurs sont personnalisables pour le commerçant. Contactez votre gestionnaire de compte pour le faire. Exemple de valeur : "Livraison Express en 2-4 jours" |
shippingQuotes[index].duty | Le montant des droits d'importation inclus dans le dutyTaxTotal . Ce montant est en USD, ne contiendra pas de virgules et contiendra deux décimales. Exemple de valeur : 8,29 |
shippingQuotes[index].dutyTaxBrokerageFee | C'est ce que le courtier en importation étranger vous facturera pour traiter vos droits et taxes d'importation. Ce montant est inclus dans le dutyTaxTotal . Le montant est en USD, ne contiendra pas de virgules et contiendra deux décimales. Exemple de valeur : 5,00 |
shippingQuotes[index].duyTaxCarrierPrepaymentFee | C'est ce que le transporteur vous facturera pour prepay les droits et taxes vers le pays importateur. Ce montant est inclus dans le dutyTaxTotal . Ce montant est en USD, ne contiendra pas de virgules et contiendra deux décimales. Exemple de valeur : 5,00 |
shippingQuotes[index].duyTaxEnabled | Indique si ce devis d'expédition permet au client de prepay ses droits et taxes d'importation. Si défini sur false, le dutyTaxTotal doit être ignoré. Exemples de valeurs : true ou false |
shippingQuotes[index].duyTaxForced | Indique si ce devis d'expédition oblige le client à prepay ses droits et taxes d'importation. Si défini sur true, vous devez inclure le dutyTaxTotal dans la commande, en expliquant au client que c'est requis avec cette option d'expédition spécifique. Si défini sur false, vous pouvez permettre au client de choisir s'il souhaite prepay ses droits et taxes d'importation. Exemples de valeurs : true ou false |
shippingQuotes[index].dutyTaxTotal | Le coût total des droits et taxes pour le devis d'expédition donné. Les droits et taxes peuvent être optionnels, non disponibles ou obligatoires pour le devis d'expédition donné. Ce montant n'est pas inclus dans le shippingTotal . Ce montant est en USD, ne contiendra pas de virgules et contiendra deux décimales. Exemple de valeur : 19,55 |
shippingQuotes[index].dutyTaxUnderDeMinimis | Indique si le total de la commande, en utilisant cette option d'expédition spécifique, est inférieur à la fois au montant de déminimis de taxe/TVS et au montant de déminimis de droits. Si défini sur true, le dutyTaxTotal sera défini à 0,00, et vous devez informer au client qu'il n'y aura pas de droits ou taxes d'importation à payer sur sa commande. De plus, exigez le prépaiement des droits et taxes, car le coût est de 0,00. |
shippingQuotes[index].id | Un identifiant pour le devis d'expédition spécifique ; un UUID de 36 caractères. Exemple de valeur : bcdbdbcd-0145-4d3b-a54e-0de3cdce5a0a |
shippingQuotes[index].restrictedItems | Il s'agit d'une liste de cartes, contenant des détails sur les articles du panier qui sont restreints en utilisant ce devis d'expédition spécifique. Chaque article restreint a un reasonCode . La raison peut être spécifique ou non à l'option d'expédition. Certaines raisons de restrictions d'articles sont dues aux lois d'importation du pays, aux restrictions de marque, ou même aux règles créées par le marchand. Chaque fois qu'une option d'expédition est choisie par l'acheteur, les articles du panier doivent être croisés avec la liste restrictedItems du devis d'expédition. Si l'un des articles du panier est restreint, un message doit être affiché à l'acheteur, et l'article restreint doit être retiré du total de la commande, etc. |
shippingQuotes[index].restrictedItems[index].cartItemId | Il s'agit de l'cartItemId du JSON de demande d'un article de panier restreint. Vous devriez pouvoir relier cet cartItemId à un article spécifique dans le panier de votre acheteur. Exemples de valeurs : 1 ou 2 ou 3 |
shippingQuotes[index].restrictedItems[index].message | Il s'agit d'un message qui peut être affiché à l'acheteur concernant la raison pour laquelle l'article est restreint. Ces messages sont personnalisables par le marchand. Veuillez contacter votre représentant Zonos pour plus de détails. Exemple de valeur : "Nous ne pouvons pas vendre des produits Oakley dans votre pays." |
shippingQuotes[index].restrictedItems[index].reasonCode | Il s'agit du code de raison pour la restriction de l'article. Les restrictions sont toujours spécifiques au pays et nos codes de raison le rendent évident. Exemples de valeurs : BRAND_COUNTRY ou IMPORT_COUNTRY ou EXPORT_COUNTRY ou CARRIER_COUNTRY ou MERCHANT_COUNTRY . BRAND_COUNTRY signifie que vous avez spécifié que vous ne pouvez pas vendre une marque à un ensemble spécifique de pays. IMPORT_COUNTRY signifie que le pays importateur ne permettra pas l'importation de l'article. EXPORT_COUNTRY signifie que le pays exportateur (généralement les États-Unis) ne permettra pas l'exportation de l'article. CARRIER_COUNTRY signifie que le transporteur spécifique ne transportera pas l'article. MERCHANT_COUNTRY signifie que vous avez mis en place une règle de restriction personnalisée que l'article a déclenchée. |
shippingQuotes[index].shippingTotal | Le coût total de l'expédition pour le devis d'expédition donné. Les devis d'expédition peuvent également avoir un montant dutyTaxTotal , qui n'est pas inclus dans ce shippingTotal . Ce montant est en USD, ne contiendra pas de virgules, et contiendra deux décimales. Exemple de valeur : 25.82 |
shippingQuotes[index].taxOrVat | Le montant de taxe ou de TVA inclus dans le dutyTaxTotal . Pour certains pays, il s'agit d'une taxe ; pour d'autres, il s'agit d'une TVA. Ce montant est en USD, ne contiendra pas de virgules, et contiendra deux décimales. Exemple de valeur : 4.35 |
API Legacy pour le Landed Cost
Découvrez le fonctionnement de l'API Legacy pour le Landed Cost.
Les informations ci-dessous concernent notre API Legacy pour le Landed Cost. Consultez notre API Landed Cost pour la dernière version.
Le point de terminaison shipping-quotes accepte les détails sur le panier de votre acheteur, renvoie des devis d'expédition complets incluant les droits d'importation et les taxes, et vérifie les articles pour les restrictions. Ces devis d'expédition renvoyés sont basés sur des profils d'expédition configurés avant l'utilisation de ce point de terminaison API.
Nous avons des profils d'expédition par défaut à des fins de test, mais vous devrez travailler avec votre gestionnaire de compte pour configurer les profils d'expédition réels et les paramètres que votre entreprise souhaite utiliser.