Skapa en nedladdningsbar produkt

Lär dig hur du skapar en nedladdningsbar produkt med REST API och Adobe Commerce Admin.

Vem är den här videon till?

  • Webbplatschefer
  • e-handlare
  • Nya Adobe Commerce-utvecklare som vill lära sig hur man skapar produkter i Adobe Commerce med REST API

Videoinnehåll

Tillåtna nedladdningsbara domäner

Du måste ange vilka domäner som tillåts för nedladdning. Domäner läggs till i projektets env.php-fil via kommandoraden. Filen env.php innehåller information om de domäner som tillåts innehålla hämtningsbart innehåll. Ett fel inträffar om en nedladdningsbar produkt skapas med REST API innan filen php.env uppdateras:

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

Anslut till servern för att ange domänen: bin/magento downloadable:domains:add www.example.com

När det är klart ändras env.php inuti arrayen downloadable_domains.

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

Nu när domänen har lagts till i env.php kan du skapa en nedladdningsbar produkt i Adobe Commerce Admin eller genom att använda REST API.

Mer information finns i Konfigurationsreferens.

IMPORTANT
I vissa versioner av Adobe Commerce kan följande fel uppstå när en produkt redigeras i Adobe Commerce Admin. Produkten skapas med REST API, men den länkade nedladdningen har ett pris på 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.

Använd API:t för uppdateringslänk om du vill åtgärda felet: POST V1/products/{sku}/downloadable-links.

Mer information finns i avsnittet Uppdatera en produktnedladdningslänk med cURL.

Skapa en nedladdningsbar produkt med cURL (hämta från fjärrserver)

I det här exemplet visas hur du skapar en nedladdningsbar produkt med cURL när filen som ska laddas ned inte finns på samma server. Detta är vanligt om filen lagras i en S3-bucket eller någon annan digital resurshanterare.

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

Skapa en nedladdningsbar produkt med cURL (ladda ned från Commerce programserver)

I det här exemplet visas hur du använder cURL för att skapa en nedladdningsbar produkt från Adobe Commerce Admin när filen lagras på samma server som Adobe Commerce-programmet.

I det här fallet överförs filen till katalogen pub/media/downloadable/files/links/ när administratören som hanterar katalogen väljer upload file. Automatisering skapar och flyttar filerna till respektive plats baserat på följande mönster:

  • Varje överförd fil lagras i en mapp baserat på de två första tecknen i filnamnet.
  • När överföringen initieras skapar eller använder Commerce-programmet befintliga mappar för att överföra filen.
  • När du hämtar filen används den del av sökvägen som är kopplad till katalogen pub/media/downloadable/files/links/ i link_file-avsnittet av sökvägen.

Om den överförda filen till exempel har namnet download-example.zip:

  • Filen överförs till sökvägen pub/media/downloadable/files/links/d/o/.
    Underkatalogerna /d och /d/o skapas om de inte finns.

  • Den sista sökvägen till filen är /pub/media/downloadable/files/links/d/o/download-example.zip.

  • Värdet link_url för det här exemplet är 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": []
  }
}'

Skaffa en produkt med hjälp av en licens

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'

Använd slutpunkten rest/all/V1/products/{sku}/downloadable-links
SKU är det produkt-ID som genererades när produkten skapades. I kodexemplet nedan är det till exempel siffran 39, men se till att den uppdateras för att använda ID:t från din webbplats. Länkarna för de hämtningsbara produkterna uppdateras.

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

Uppdatera en nedladdningslänk med CURL

När du uppdaterar en produktnedladdningslänk med cURL, innehåller URL:en SKU:n för den produkt som uppdateras. I följande kodexempel är SKU abcd12345. När du skickar kommandot ändrar du värdet så att det matchar SKU:n för den produkt du vill uppdatera.

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

Ytterligare resurser

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