Magento 2 - Crea un ordine usando l'API REST


24

Devo utilizzare l'API REST di Magento per creare un ordine da un client mobile. Nel mio caso, il lato mobile implementerà il pagamento direttamente utilizzando l'SDK di PayPal. Quello che devo fare è creare un ordine impostando il metodo di pagamento su vaglia ed eseguire un checkout ospite. Quali API dovrei usare per raggiungere questo obiettivo?

Risposte:


27

Alla fine l'ho capito. Ecco cosa sto facendo.

Ottieni un singolo prodotto

curl -g -X GET "$base_url/index.php/rest/V1/products/24-MB05/" \
-H "Authorization: Bearer $token" 

Crea carrello

curl -g -X POST "$base_url/index.php/rest/V1/guest-carts/" \
-H "Authorization: Bearer $token" 

Ottieni carrello

curl -g -X GET "$base_url/index.php/rest/V1/guest-carts/56241bf6bc084cd7589426c8754fc9c5" \
-H "Authorization: Bearer $token" 

Aggiungi prodotto al carrello

curl -g -X POST "$base_url/index.php/rest/V1/guest-carts/56241bf6bc084cd7589426c8754fc9c5/items" \
-H "Authorization: Bearer $token" \
-H "Content-Type:application/json" \
 -d '{ "cartItem": { "quote_id": "56241bf6bc084cd7589426c8754fc9c5", "sku": "24-MB05", "qty": 1 } }'

Aggiungi le informazioni di spedizione

curl -g -X POST "$base_url/index.php/rest/V1/guest-carts/56241bf6bc084cd7589426c8754fc9c5/shipping-information" \
    -H "Authorization: Bearer $token" \
    -H "Content-Type:application/json" \
     -d '
{
    "addressInformation": {
        "shippingAddress": {
            "region": "MH",
            "region_id": 0,
            "country_id": "IN",
            "street": [
                "Chakala,Kalyan (e)"
            ],
            "company": "abc",
            "telephone": "1111111",
            "postcode": "12223",
            "city": "Mumbai",
            "firstname": "Sameer",
            "lastname": "Sawant",
            "email": "abc@abc.com",
            "prefix": "address_",
            "region_code": "MH",
            "sameAsBilling": 1
        },
        "billingAddress": {
            "region": "MH",
            "region_id": 0,
            "country_id": "IN",
            "street": [
                "Chakala,Kalyan (e)"
            ],
            "company": "abc",
            "telephone": "1111111",
            "postcode": "12223",
            "city": "Mumbai",
            "firstname": "Sameer",
            "lastname": "Sawant",
            "email": "abc@abc.com",
            "prefix": "address_",
            "region_code": "MH"
        },
        "shipping_method_code": "flatrate",
        "shipping_carrier_code": "flatrate"
    }
}
 '

Ottieni il metodo di pagamento

curl -g -X GET "$base_url/index.php/rest/V1/guest-carts/56241bf6bc084cd7589426c8754fc9c5/payment-information" \
    -H "Authorization: Bearer $token" 

Invia ordine

curl -g -X PUT "$base_url/index.php/rest/V1/guest-carts/56241bf6bc084cd7589426c8754fc9c5/order" \
    -H "Authorization: Bearer $token" \
    -H "Content-Type:application/json" \
     -d '
{
    "paymentMethod": {
        "method": "checkmo"
    }
}'                      

1
Ho creato un esempio di script php basato sulla tua risposta qui, se qualcuno vuole provarlo tramite php: github.com/acolono/php-magento-api-sandbox
Nebel54,

1
@zzpaul, Come trasferire i dati della carta di credito utilizzando il metodo del flusso di pagamento utilizzando la modalità sopra?
Rakesh Jesadiya,

6

Penso che ci sia un piccolo errore: per effettuare l'ordine, sul corpo, deve essere pagamentoMetodo la prima chiave, in questo modo:

{
    "paymentMethod": { 
        "method": "checkmo" 
    }
}

4
  1. crea l'URL del carrello vuoto: http: // www. [yoursite] .com / rest / V1 / carts / mine call: post response: cartID es .: 4290

  2. Aggiungi articolo al carrello url: http: // www. [Yoursite] .com / rest / V1 / carts / mine / items body:

    {"cartItem":{
        "sku":"JFCO00017",
        "qty":1,
        "name":"Devil May Cry III 3 Dante",
        "price":81.55,
        "product_type":"simple",
        "quote_id":"4290",
        "product_option":
            {"extension_attributes":
               {
                 "custom_options":[
                  {"option_id":"thumbnail",
             "option_value":"\/d\/e\/devilmaycryiii3dantecosplay_1_.jpg"
               },
               {
                 "option_id":"color_2",
                 "option_value":"Red"
               },
               {
                "option_id":"google_size",
                "option_value":"xxs"}]
           }
        }
      }
    }
  3. Aggiungi informazioni di fatturazione url: http: // www. [Yoursite] .com / rest / V1 / carts / mine / billing-address :

    {
    "address": {
    "city": "Springfield",
    "company": "iprag",
    "countryId": "IN",
    "email": "customer_email@domain.com",
    "firstname": "Jane",
    "lastname": "Doe",
    "postcode": "90210",
    "region": "UP",
    "saveInAddressBook": 1,
    "street": ["Street"],
    "telephone": "5551234"
    },
    "useForShipping": true
    }
  4. get url: http: // www. [yoursite] .com / rest / V1 / carts / mine / shipping-metodi

    {
    "carrier_code": "flatrate",
    "method_code": "flatrate",
    "carrier_title": "Flat Rate",
    "method_title": "Fixed",
    "amount": 10,
    "base_amount": 10,
    "available": true,
    "error_message": "",
    "price_excl_tax": 10,
    "price_incl_tax": 10

    }

  5. aggiungi informazioni di spedizione url: http: // www. [yoursite] .com / rest / V1 / carts / mine / shipping-information body:

    {
     "addressInformation": {
     "billingAddress": {
        "city": "Springfield",
        "company": "iprag",
        "email": "customer_email@domain.com",
        "firstname": "Jane",
        "lastname": "Doe",
        "postcode": "335001",
        "region": "UP",
        "street": ["Street"],
        "telephone": "5551234"
    },
    "shippingAddress": {
        "city": "Springfield",
        "company": "iprag",
        "email": "customer_email@domain.com",
        "firstname": "Jane",
        "lastname": "Doe",
        "postcode": "335001",
        "region": "UP",
        "street": ["Street"],
        "telephone": "5551234"
      },
      "shippingCarrierCode": "flatrate",
      "shippingMethodCode": "flatrate"
    }
    }

risposta: metodo di pagamento e dettagli del carrello

  1. URL del luogo dell'ordine: http: // www. [Yoursite] .com / rest / V1 / carts / mine / body ordine :

    {
     "paymentMethod":{"method":"checkmo"},
     "shippingMethod":
        {
          "method_code":"flatrate",
    
          "carrier_code":"flatrate",
          "additionalProperties":{}
    
        }
    
    }

risposta: orderid


Come passare i dati della carta di credito usando il metodo del flusso di pagamento usando il modo sopra?
Rakesh Jesadiya,

@RakeshJesadiya, c'è una chiamata api di riposo Magento per ottenere tutti i metodi di pagamento disponibili recuperare l'elenco e effettuare l'ordine sostituendo il metodo sopra.
Manish,

puoi cercare e farmi sapere per questo, magento.stackexchange.com/questions/188939/…
Rakesh Jesadiya,

@paul hai creato un ordine utilizzando l'API REST con PayPal Pro ed Express ????
Ketan Panchal,

@KetanPanchal No
Manish

0

Esiste un tutorial ufficiale che mostra come effettuare un ordine tramite l'API REST:
Tutorial per l'elaborazione degli ordini per Magento 2.2

Includevano passaggi molto dettagliati:

  1. Configura il negozio
  2. Ottieni il token amministratore
  3. Crea un cliente
  4. Crea un preventivo
  5. Aggiungi articoli al carrello
  6. Preparare per il checkout
  7. Crea un ordine
  8. Crea una fattura
  9. Crea una spedizione
  10. Emettere un rimborso parziale

Il tutorial ha incluso come aggiungere diversi tipi di prodotti, diversi metodi di spedizione e molte altre informazioni utili con codici di esempio.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.