Magento 2 - Crear pedido usando API REST

24

Necesito usar la API REST de Magento para crear un pedido desde un cliente móvil. En mi caso, el lado móvil implementará el pago directamente usando PayPal SDK. Lo que tengo que hacer es crear un pedido configurando el método de pago como giro postal y realizar un pago de invitado. ¿Qué API (s) debo usar para lograr esto?

Paul
fuente

Respuestas:

27

Finalmente lo resolví. Esto es lo que estoy haciendo.

Obtén un solo producto

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

Crear carro

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

Consigue el carro

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

Añadir producto al carrito

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

Agregar información de envío

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

Obtener método de pago

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

Realizar pedido

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"
    }
}'                      
Paul
fuente
1
Creé
Nebel54
1
@zzpaul, ¿Cómo pasar los datos de la tarjeta de crédito usando el método de flujo de pago usando el método anterior?
Rakesh Jesadiya
6

Creo que hay un pequeño error: para realizar un pedido, en el cuerpo, debe ser el método de pago la primera clave, como esta:

{
    "paymentMethod": { 
        "method": "checkmo" 
    }
}
Marc Pont
fuente
4
  1. crear url de carrito vacía: http: // www. [yoursite] .com / rest / V1 / carts / mine call: post response: cartID eg: 4290

  2. Agregue un elemento a la url del carrito: 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. Agregue la URL de información de facturación: http: // www. [Yoursite] .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. obtener url de métodos de envío: http: // www. [yoursite] .com / rest / V1 / carts / mine / shipping-method

    {
    "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. agregar url de información de envío: http: // www. [yoursite] .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"
    }
    }

respuesta: método de pago y detalles del carrito

  1. URL del lugar de pedido: http: // www. [Yoursite] .com / rest / V1 / carts / mine / order body:

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

respuesta: orderid

Manish
fuente
¿Cómo pasar los datos de la tarjeta de crédito usando el método de flujo de pago usando el método anterior?
Rakesh Jesadiya
@RakeshJesadiya, hay una llamada de API de descanso de Magento para obtener todos los métodos de pago disponibles, buscar la lista y realizar el pedido reemplazando el método anterior.
Manish
¿Puedes mirar hacia arriba y házmelo saber? magento.stackexchange.com/questions/188939/…
Rakesh Jesadiya
@paul, ¿has creado un pedido con REST API con PayPal Pro y Express?
Ketan Panchal
@KetanPanchal No
Manish
0

Hay un tutorial oficial que muestra cómo hacer un pedido a través de REST API:
Tutorial de procesamiento de pedidos para Magento 2.2

Incluyeron pasos muy detallados:

  1. Configurar la tienda
  2. Obtén el token de administrador
  3. Crear un cliente
  4. Crear un presupuesto
  5. Agregar artículos al carrito
  6. Prepárate para pagar
  7. Crea un pedido
  8. Crear una factura
  9. Crea un envío
  10. Emitir un reembolso parcial

El tutorial incluía cómo agregar diferentes tipos de productos, diferentes métodos de envío y mucha otra información útil con códigos de muestra.

jeffsama
fuente