Magento 2 - Utwórz zamówienie za pomocą REST API

24

Muszę użyć interfejsu API REST Magento, aby utworzyć zamówienie z klienta mobilnego. W moim przypadku strona mobilna zrealizuje płatność bezpośrednio przy użyciu zestawu SDK PayPal. Muszę utworzyć zamówienie, ustawiając metodę płatności na przekaz pieniężny i wykonać kasę gościa. Z jakich interfejsów API należy skorzystać, aby to osiągnąć?

Paweł
źródło

Odpowiedzi:

27

W końcu to rozgryzłem. Oto co robię.

Zdobądź pojedynczy produkt

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

Utwórz koszyk

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

Zdobądź wózek

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

Dodaj produkt do koszyka

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

Dodaj informacje o wysyłce

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": "[email protected]",
            "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": "[email protected]",
            "prefix": "address_",
            "region_code": "MH"
        },
        "shipping_method_code": "flatrate",
        "shipping_carrier_code": "flatrate"
    }
}
 '

Uzyskaj metodę płatności

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

Złożyć zamówienie

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"
    }
}'                      
Paweł
źródło
1
Stworzyłem przykładowy skrypt php na podstawie twojej odpowiedzi tutaj, jeśli ktoś chce spróbować tego poprzez php: github.com/acolono/php-magento-api-sandbox
Nebel54
1
@zzpaul, Jak przekazać dane karty kredytowej przy użyciu metody przepływu płatności, używając powyższej metody?
Rakesh Jesadiya
6

Wydaje mi się, że jest mały błąd: przy składaniu zamówienia na ciele musi to być płatność. Pierwszy klucz, taki jak ten:

{
    "paymentMethod": { 
        "method": "checkmo" 
    }
}
Marc Pont
źródło
4
  1. utwórz pusty adres URL koszyka: http: // www. [twoja strona] .com / rest / V1 / carts / mine call: post response: cartID np .: 4290

  2. Dodaj pozycję do adresu URL koszyka: http: // www. [Twoja strona] .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. Dodaj adres rozliczeniowy: http: // www. [Twoja strona] .com / rest / V1 / carts / mine / billing-address body:

    {
    "address": {
    "city": "Springfield",
    "company": "iprag",
    "countryId": "IN",
    "email": "[email protected]",
    "firstname": "Jane",
    "lastname": "Doe",
    "postcode": "90210",
    "region": "UP",
    "saveInAddressBook": 1,
    "street": ["Street"],
    "telephone": "5551234"
    },
    "useForShipping": true
    }
  4. pobierz adres URL metody wysyłki: http: // www. [twoja strona] .com / rest / V1 / carts / mine / shipping-metody

    {
    "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. dodaj adres wysyłki: http: // www. [twoja strona] .com / rest / V1 / carts / mine / shipping-information body:

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

odpowiedź: metoda płatności i szczegóły koszyka

  1. Adres URL miejsca zamówienia: http: // www. [Twoja strona] .com / rest / V1 / carts / mine / order body:

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

odpowiedź: orderid

Manish
źródło
Jak przekazać dane karty kredytowej za pomocą metody płatności przy użyciu powyższej metody?
Rakesh Jesadiya
@RakeshJesadiya, istnieje wywołanie interfejsu API odpoczynku Magento, aby pobrać wszystkie dostępne metody płatności, pobrać listę i złożyć zamówienie zastępujące powyższą metodę.
Manish
czy możesz poszukać i daj mi znać, magento.stackexchange.com/questions/188939/...
Rakesh Jesadiya
@ paul, czy utworzyłeś zamówienie przy użyciu REST API z PayPal Pro i Express ????
Ketan Panchal
@KetanPanchal No
Manish
0

Istnieje oficjalny samouczek pokazujący, jak złożyć zamówienie za pośrednictwem interfejsu API REST:
samouczek przetwarzania zamówień dla Magento 2.2

Obejmowały one bardzo szczegółowe kroki:

  1. Skonfiguruj sklep
  2. Zdobądź token administratora
  3. Utwórz klienta
  4. Utwórz ofertę
  5. Dodaj przedmioty do koszyka
  6. Przygotuj się do kasy
  7. Utwórz zamówienie
  8. Utwórz fakturę
  9. Utwórz przesyłkę
  10. Wystaw częściowy zwrot pieniędzy

Samouczek obejmował dodawanie różnych rodzajów produktów, różnych metod wysyłki i wiele innych przydatnych informacji wraz z przykładowymi kodami.

jeffsama
źródło