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ąć?

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

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

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

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": "customer_email@domain.com",
    "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": "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"
    }
    }

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


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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.