Aller au contenu principal

Configuration de l'intégration Shopware

Ce guide explique comment connecter une instance Shopware 6.6.5.0 ou supérieure à Order Fox afin d'importer des produits/clients et d'exporter des commandes.

Note : La version minimale théorique est Shopware 6.3.5.0 (lorsque le système d'intégration et d'ACL a été stabilisé), mais elle n'a pas été testée. Seules les versions Shopware 6.6.5.0 et supérieures sont vérifiées.

1. Identifiants d'intégration Shopware

Demandez ou créez une intégration dans Shopware Admin sous Paramètres > Système > Intégrations afin d'obtenir un Client ID (Access Key ID) et un Client Secret (Secret Access Key).

Une intégration de type Administrateur est préférable. Si ce n'est pas possible, activez les autorisations suivantes dans la grille ACL de l'intégration :

SectionLigneAfficherModifierCréerSupprimer
CataloguesProduitsx
CataloguesPropriétésx
ClientsClientsxx
CommandesCommandesxxx
AutreCanaux de ventex

Aucune autorisation supplémentaire n'est nécessaire — le rôle « Créer » des commandes inclut déjà api_proxy_switch-customer en interne.


2. Créer une intégration OAuth

Créez une intégration de type OAuth avec les paramètres suivants :

ChampValeur
LabelShopware
Webservice URLVotre domaine Shopware, par ex. https://shopware.example.com (sans le suffixe /api)
Token URLLe point de terminaison OAuth complet, par ex. https://shopware.example.com/api/oauth/token
Client IDL'Access Key ID de votre intégration Shopware
Client SecretLa Secret Access Key de votre intégration Shopware
Scope(laisser vide)

L'URL du webservice doit correspondre uniquement au domaine de base (jusqu'au TLD). L'URL du token doit inclure le chemin complet /api/oauth/token.


3. Profils d'importation

Les profils d'importation récupèrent des données depuis Shopware vers Order Fox. Chaque profil cible un point de terminaison de recherche spécifique de l'API Shopware.

Produits

Créez un profil d'importation avec la configuration suivante :

ChampValeur
NomProducts
IntégrationL'intégration OAuth Shopware créée ci-dessus
Données de référenceLe jeu de données de référence dans lequel les produits doivent être importés

Paramètres de configuration :

ParamètreValeur
Path/api/search/product
Transformershopware_products
Request MethodPost
Data Wrapperdata
Page Parameterpage
Page Start Index1
Page Step Size1
Page Size Parameterlimit
Page Size Length10

En-têtes supplémentaires :

{
"Accept": "application/json",
"sw-inheritance": "true"
}

Paramètres supplémentaires (corps de la requête) :

{
"includes": {
"product": [
"id", "productNumber", "name", "parentId",
"price", "stock", "ean", "options", "translated"
]
},
"associations": {
"options": {
"associations": {
"group": {}
}
}
},
"filter": [
{
"type": "equals",
"field": "active",
"value": true
},
{
"type": "multi",
"operator": "or",
"queries": [
{
"type": "not",
"operator": "and",
"queries": [
{ "type": "equals", "field": "parentId", "value": null }
]
},
{
"type": "equals",
"field": "childCount",
"value": 0
}
]
}
]
}

Le filtre garantit que seuls les produits actifs sont importés et exclut les produits parents qui possèdent des variantes (seules les variantes elles-mêmes sont renvoyées).

Clients

Créez un profil d'importation avec la configuration suivante :

ChampValeur
NomCustomers
IntégrationL'intégration OAuth Shopware créée ci-dessus
Données de référenceLe jeu de données de référence dans lequel les clients doivent être importés

Paramètres de configuration :

ParamètreValeur
Path/api/search/customer
Transformershopware_customers
Request MethodPost
Data Wrapperdata
Page Parameterpage
Page Start Index1
Page Step Size1
Page Size Parameterlimit
Page Size Length10

En-têtes supplémentaires :

{
"Accept": "application/json",
"sw-inheritance": "true"
}

Paramètres supplémentaires (corps de la requête) :

{
"includes": {
"customer": [
"id", "customerNumber", "firstName", "lastName",
"email", "company", "defaultBillingAddress",
"defaultShippingAddress", "vatIds"
]
},
"associations": {
"defaultBillingAddress": {
"associations": {
"country": {}
}
},
"defaultShippingAddress": {
"associations": {
"country": {}
}
}
}
}

Mappage

Après avoir créé chaque profil d'importation, configurez le mappage des champs afin de faire correspondre les champs Shopware importés aux attributs du type d'actif de votre tenant. Le mappage est spécifique au tenant et doit être configuré pour chaque installation.


4. Profil d'exportation (commandes)

Pour réexporter les commandes vers Shopware, créez un profil d'exportation avec le provider Shopware.

ChampValeur
NomUn nom descriptif pour l'exportation
IntégrationL'intégration OAuth Shopware créée ci-dessus
Providershopware
Path/

Template :

Le template utilise la syntaxe Twig et fait correspondre les données de commande d'Order Fox au format de l'API de création de commande Shopware. Remplacez le salesChannelId par l'ID de votre canal de vente Shopware. Les champs des objets parties et lines dépendent de votre configuration de mappage des champs ; adaptez donc le template en conséquence si vous avez mappé d'autres champs.

{
"salesChannelId": "<your-sales-channel-id>",
"customerId": "{{ buyer_customer_party.external_id }}",
"billingAddressId": "{{ accounting_customer_party.account_id }}",
"shippingAddressId": "{{ buyer_customer_party.account_id }}",
"items": [
{% for line in lines %}
{
"productId": "{{ line.item.external_id }}",
"quantity": {{ line.quantity }}
}{% if not loop.last %},{% endif %}
{% endfor %}
]
}

Mappage des variables du template :

VariableCorrespond à
buyer_customer_party.external_idcustomerId issu de l'importation des clients
accounting_customer_party.account_idaddressId de facturation issu de l'importation des clients
buyer_customer_party.account_idaddressId de livraison issu de l'importation des clients
line.item.external_idproductId issu de l'importation des produits

Définir le provider sur shopware achemine l'exportation via le gestionnaire d'exportation Shopware dédié, qui gère automatiquement l'authentification et la communication avec l'API.