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 via de opdrachtregel toegevoegd aan het env.php -bestand van het project. In het env.php -bestand worden de domeinen beschreven die downloadbare inhoud mogen bevatten. Een fout komt voor als een downloadbaar product gebruikend REST API wordt gecreeerd alvorens het php.env dossier wordt 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

Zodra dat volledig is, wordt env.php gewijzigd binnen de downloadable_domain serie.

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

Nu het domein aan env.php wordt toegevoegd, kunt u een downloadbaar product in Adobe Commerce Admin of door REST API te gebruiken tot stand brengen.

Zie Verwijzing van de Configuratieom meer te leren.

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 prijs 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.

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

Zie een verbinding van de productdownload bijwerken gebruikend cURLsectie voor meer info.

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 wordt het bestand overgebracht naar de map pub/media/downloadable/files/links/ wanneer de beheerder van de catalogus upload file kiest. 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, gebruikt de sectie link_file van het pad het gedeelte van het pad dat aan de map pub/media/downloadable/files/links/ is toegevoegd.

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

  • Het bestand wordt geüpload naar het pad pub/media/downloadable/files/links/d/o/ .
    De submappen /d en /d/o worden gemaakt als ze 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 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, is SKU 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