Créer un produit téléchargeable
Découvrez comment créer un produit téléchargeable à l’aide de l’API REST et de l’administrateur Adobe Commerce.
Pour qui est cette vidéo ?
- Chargés de site web
- Marchandisers e en eCommerce
- Nouveaux développeurs Adobe Commerce qui souhaitent apprendre à créer des produits dans Adobe Commerce à l’aide de l’API REST
Contenu vidéo
Domaines téléchargeables autorisés
Vous devez indiquer les domaines autorisés pour autoriser les téléchargements. Les domaines sont ajoutés au fichier env.php
du projet via la ligne de commande. Le fichier env.php
détaille les domaines autorisés à contenir du contenu téléchargeable. Une erreur se produit si un produit téléchargeable est créé à l’aide de l’API REST avant que le fichier php.env
soit mis à jour :
{
"message": "Link URL's domain is not in list of downloadable_domains in env.php."
}
Pour définir le domaine, connectez-vous au serveur : bin/magento downloadable:domains:add www.example.com
Une fois cette opération terminée, le env.php
est modifié dans le tableau downloadable_domains.
'downloadable_domains' => [
'www.example.com'
],
Maintenant que le domaine est ajouté à env.php
, vous pouvez créer un produit téléchargeable dans l’administrateur Adobe Commerce ou à l’aide de l’API REST.
Voir Référence de configuration pour en savoir plus.
null
.Deprecated Functionality: number_format(): Passing null to parameter #1 ($num) of type float is deprecated in /app/vendor/magento/module-downloadable/Ui/DataProvider/Product/Form/Modifier/Data/Links.php on line 228
.
Pour corriger cette erreur, utilisez l’API de lien de mise à jour : POST V1/products/{sku}/downloadable-links.
Pour plus d’informations, consultez la section Mise à jour d’un lien de téléchargement de produit à l’aide de cURL .
Créer un produit téléchargeable à l’aide de cURL (téléchargement depuis un serveur distant)
Cet exemple montre comment créer un produit téléchargeable à l’aide de cURL lorsque le fichier à télécharger ne se trouve pas sur le même serveur. Ce cas pratique est typique si le fichier est stocké dans un compartiment S3 ou un autre gestionnaire de ressources numériques.
curl --location '{{your.url.here}}/rest/default/V1/products' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {{Your Bearer Token}}' \
--header 'Cookie: PHPSESSID=b78cae2338f12d846d233d4e9486607e; private_content_version=564dde2976849891583a9a649073f01' \
--data '{
"product": {
"sku": "POSTMAN-download-product-1",
"name": "POSTMAN download product-1",
"attribute_set_id": 4,
"price": 9.9,
"status": 1,
"visibility": 4,
"type_id": "downloadable",
"extension_attributes": {
"website_ids": [
1
],
"downloadable_product_links": [
{
"title": "My url link",
"sort_order": 1,
"is_shareable": 1,
"price": 0,
"number_of_downloads": 0,
"link_type": "url",
"link_url": "{{location.url.where.file.exists}}/some-file.zip",
"sample_type": "url",
"sample_url": "{{location.url.where.file.exists}}/sample-file.zip"
}
],
"downloadable_product_samples": []
},
"product_links": [],
"options": [],
"media_gallery_entries": [],
"tier_prices": []
}
}
'
Créer un produit téléchargeable à l’aide de cURL (téléchargement depuis le serveur d’applications Commerce)
Cet exemple montre comment utiliser cURL pour créer un produit téléchargeable depuis l’administrateur Adobe Commerce lorsque le fichier est stocké sur le même serveur que l’application Adobe Commerce.
Dans ce cas pratique, lorsque l’administrateur qui gère le catalogue choisit upload file
, le fichier est transféré vers le répertoire pub/media/downloadable/files/links/
. L’automatisation crée les fichiers et les déplace vers leurs emplacements respectifs en fonction du modèle suivant :
- Chaque fichier téléchargé est stocké dans un dossier en fonction des deux premiers caractères du nom du fichier.
- Lorsque le chargement est lancé, l’application Commerce crée ou utilise des dossiers existants pour transférer le fichier.
- Lors du téléchargement du fichier, la section
link_file
du chemin utilise la partie du chemin annexée au répertoirepub/media/downloadable/files/links/
.
Par exemple, si le fichier téléchargé est nommé download-example.zip
:
-
Le fichier est téléchargé vers le chemin d’accès
pub/media/downloadable/files/links/d/o/
.
Les sous-répertoires/d
et/d/o
sont créés s’ils n’existent pas. -
Le chemin d’accès final au fichier est
/pub/media/downloadable/files/links/d/o/download-example.zip
. -
La valeur
link_url
de cet exemple estd/o/download-example.zip
curl --location '{{your.url.here}}/rest/default/V1/products' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {{Your Bearer Token}}' \
--header 'Cookie: PHPSESSID=571f5ebe48857569cd56bde5d65f83a2; private_content_version=9f3286b427812be6aec0b04cae33ba35' \
--data '{
"product": {
"sku": "sample-local-download-file",
"name": "A downloadable product with locally hosted download file",
"attribute_set_id": 4,
"price": 33,
"status": 1,
"visibility": 4,
"type_id": "downloadable",
"extension_attributes": {
"website_ids": [
1
],
"downloadable_product_links": [
{
"title": "an api version of already upload file",
"sort_order": 1,
"is_shareable": 1,
"price": 0,
"number_of_downloads": 0,
"link_type": "file",
"link_file": "/d/o/downloadable-file-demo-file-upload.zip",
"sample_type": null
}
],
"downloadable_product_samples": []
},
"product_links": [],
"options": [],
"media_gallery_entries": [],
"tier_prices": []
}
}'
Obtention d’un produit à l’aide de curl
curl --location '{{your.url.here}}/rest/default/V1/products/POSTMAN-download-product-1' \
--header 'Authorization: Bearer {{Your Bearer Token}}' \
--header 'Cookie: PHPSESSID=b78cae2338f12d846d233d4e9486607e; private_content_version=564dde2976849891583a9a649073f01e'
Mettre à jour le produit à l’aide de Postman update-downloadable-links
Utilisation du point d’entrée rest/all/V1/products/{sku}/downloadable-links
SKU
est l’ID de produit qui a été généré lors de la création du produit. Par exemple, dans l’exemple de code ci-dessous, il s’agit du numéro 39, mais assurez-vous qu’il est mis à jour pour utiliser l’identifiant de votre site web. Ceci met à jour les liens pour les produits téléchargeables.
{
"link": {
"id": 39,
"title": "My swagger update",
"sort_order": 0,
"is_shareable": 0,
"price": 0,
"number_of_downloads": 0,
"link_type": "url",
"link_file": "{{your.url.here}}/some-file.zip",
"link_url": "{{your.url.here}}/some-file.zip",
"link_file_content": {
"file_data": "{{your.url.here}}/some-file.zip",
"extension_attributes": {}
}
},
"isGlobalScopeContent": true
}
Mise à jour d’un lien de téléchargement de produit à l’aide de CURL
Lorsque vous mettez à jour un lien de téléchargement de produit à l’aide de cURL, l’URL inclut le SKU du produit mis à jour. Dans l’exemple de code suivant, le SKU est abcd12345
. Lorsque vous envoyez la commande, modifiez la valeur pour qu’elle corresponde au SKU du produit que vous souhaitez mettre à jour.
curl --location '{{your.url.here}}/rest/all/V1/products/abcd12345/downloadable-links' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {{Your Bearer Token}}' \
--header 'Cookie: PHPSESSID=fa5d76f4568982adf369f758e8cb9544; private_content_version=564dde2976849891583a9a649073f01e' \
--data '{
"link": {
"id": {{The ID of the download link for example 39}},
"title": "My update",
"sort_order": 0,
"is_shareable": 0,
"price": 0,
"number_of_downloads": 0,
"link_type": "url",
"link_file": "{{your.url.here}}/some-file.zip",
"link_url": "{{your.url.here}}/some-file.zip",
"link_file_content": {
"file_data": "{{your.url.here}}/some-file.zip",
"extension_attributes": {}
}
},
"isGlobalScopeContent": true
}'