Een downloadbaar product maken

Leer hoe u een downloadbaar product maakt met de REST API en de Adobe Commerce Admin.

Voor wie is deze video?

  • Webmanagers
  • Handelshandelaren
  • Nieuwe Adobe Commerce-ontwikkelaars die willen leren hoe u in Adobe Commerce producten kunt maken met de REST API

Video-inhoud

Toegestane downloadbare domeinen

U moet opgeven welke domeinen zijn toegestaan voor downloaden. Domeinen worden toegevoegd aan het project env.php bestand via de opdrachtregel. De env.php bestandsgegevens over de domeinen die downloadbare inhoud mogen bevatten. Er treedt een fout op als een downloadbaar product wordt gemaakt met de REST API voor de php.env bestand is bijgewerkt:

{
    "message": "Link URL's domain is not in list of downloadable_domains in env.php."
}

Maak verbinding met de server om het domein in te stellen: bin/magento downloadable:domains:add www.example.com

Wanneer dat voltooid is, env.php wordt gewijzigd binnen de downloadbaar_domeinen array.

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

Nu wordt het domein toegevoegd aan de env.phpkunt u een downloadbaar product maken in de Adobe Commerce Admin of met de REST API.

Zie Configuratieverwijzing voor meer informatie.

IMPORTANT
In sommige versies van Adobe Commerce kan de volgende fout optreden wanneer een product wordt bewerkt in Adobe Commerce Admin. Het product wordt gemaakt met de REST API, maar de gekoppelde download heeft een null prijs.

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.

Gebruik de API voor bijwerken van koppelingen om deze fout te corrigeren: POST V1/products/{sku}/downloadable-links.

Zie de Een productdownloadkoppeling bijwerken met cURL voor meer informatie.

Een downloadbaar product maken met cURL (downloaden vanaf externe server)

In dit voorbeeld ziet u hoe u een downloadbaar product maakt met cURL wanneer het te downloaden bestand zich niet op dezelfde server bevindt. Dit is een typisch geval van gebruik als het dossier in een S3 emmertje of een andere digitale manager van activa wordt opgeslagen.

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": []
  }
}
'

Een downloadbaar product maken met cURL (downloaden vanaf Commerce-toepassingsserver)

In dit voorbeeld wordt getoond hoe u cURL gebruikt om een downloadbaar product te maken van de Adobe Commerce Admin wanneer het bestand wordt opgeslagen op dezelfde server als de Adobe Commerce-toepassing.

In dit geval kiest de beheerder die de catalogus beheert upload file, wordt het bestand overgebracht naar de pub/media/downloadable/files/links/ directory. Met Automatisering worden de bestanden op basis van het volgende patroon gemaakt en verplaatst naar de respectievelijke locaties:

  • Elk geüpload bestand wordt opgeslagen in een map op basis van de eerste twee tekens van de bestandsnaam.
  • Wanneer het uploaden wordt gestart, maakt of gebruikt de Commerce-toepassing bestaande mappen om het bestand over te brengen.
  • Wanneer u het bestand downloadt, wordt link_file van het pad gebruikt het deel van het pad dat aan het pad is toegevoegd pub/media/downloadable/files/links/ directory.

Als het geüploade bestand bijvoorbeeld een naam heeft download-example.zip:

  • Het bestand wordt geüpload naar het pad pub/media/downloadable/files/links/d/o/.
    De submappen /d en /d/o worden gemaakt als deze niet bestaan.

  • Het laatste pad naar het bestand is /pub/media/downloadable/files/links/d/o/download-example.zip.

  • De link_url waarde voor dit voorbeeld is 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": []
  }
}'

Een product ophalen met krullen

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'

Het eindpunt gebruiken rest/all/V1/products/{sku}/downloadable-links
De SKU Dit is de product-id die is gegenereerd toen het product werd gemaakt. In het onderstaande codevoorbeeld is dit bijvoorbeeld het nummer 39, maar zorg ervoor dat dit wordt bijgewerkt zodat de id van uw website wordt gebruikt. Hiermee werkt u de koppelingen naar de downloadbare producten bij.

{
  "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
}

Een productdownloadkoppeling bijwerken met CURL

Wanneer u een koppeling voor het downloaden van een product bijwerkt via cURL, bevat de URL de SKU voor het product dat wordt bijgewerkt. In het volgende codevoorbeeld, SKU is abcd12345. Als u de opdracht verzendt, wijzigt u de waarde zodat deze overeenkomt met de SKU voor het product dat u wilt bijwerken.

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

Aanvullende bronnen

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