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 env.php via la ligne de commande. La variable 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. before la valeur php.env est 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, la variable env.php est modifié dans la fonction downloadable_domains tableau.

    'downloadable_domains' => [
        'www.example.com'
    ],

Maintenant que le domaine est ajouté à la variable 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é comporte une null prix.

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 du lien de mise à jour : POST V1/products/{sku}/downloadable-links.

Voir Mettre à jour un lien de téléchargement de produit à l’aide de cURL pour plus d’informations.

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é à la fonction pub/media/downloadable/files/links/ répertoire . 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 variable link_file de chemin utilise la partie du chemin annexée à la propriété pub/media/downloadable/files/links/ répertoire .

Par exemple, si le fichier chargé est nommé download-example.zip:

  • Le fichier est chargé dans 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 variable link_url la valeur 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 de terminaison rest/all/V1/products/{sku}/downloadable-links
La variable SKU est l’identifiant du 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