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.

IMPORTANT
Dans certaines versions d’Adobe Commerce, l’erreur suivante peut s’afficher lorsqu’un produit est modifié dans l’administrateur Adobe Commerce. Le produit est créé à l’aide de l’API REST, mais le téléchargement lié a un prix 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épertoire pub/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 est d/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'

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
}'

Ressources supplémentaires

recommendation-more-help
3a5f7e19-f383-4af8-8983-d01154c1402f