Magento 2 - Criar pedido usando a API REST

24

Preciso usar a API REST do Magento para criar um pedido de um cliente móvel. No meu caso, o lado móvel implementará o pagamento diretamente usando o SDK do PayPal. O que eu preciso fazer é criar um pedido, definindo o método de pagamento como ordem de pagamento e efetuar uma finalização da compra do hóspede. Quais APIs devo usar para conseguir isso?

Paulo
fonte

Respostas:

27

Eu finalmente descobri. Aqui está o que estou fazendo.

Obtenha um único produto

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

Criar carrinho

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

Obter carrinho

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

Adicionar produto ao carrinho

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

Adicionar informações de remessa

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

Obter método de pagamento

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

Faça a encomenda

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"
    }
}'                      
Paulo
fonte
11
Eu criei um script php amostra com base em sua resposta aqui, se alguém quiser tentar esta via php: github.com/acolono/php-magento-api-sandbox
Nebel54
11
@zzpaul, Como passar dados de cartão de crédito usando o método de fluxo de pagamento usando a maneira acima?
Rakesh Jesadiya
6

Eu acho que há um pequeno erro: para fazer um pedido, no corpo, ele deve ser o método de pagamento, a primeira chave, assim:

{
    "paymentMethod": { 
        "method": "checkmo" 
    }
}
Marc Pont
fonte
4
  1. criar url de carrinho vazio: http: // www. [yoursite] .com / rest / V1 / carrts / mine call: post response: cartID por exemplo: 4290

  2. Adicione item ao carrinho 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. Adicione o URL das informações de cobrança: http: // www. [Yoursite] .com / rest / V1 / carts / mine / endereço do endereço de cobrança :

    {
    "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. obtenha o URL dos métodos de envio: http: // www. [yoursite] .com / rest / V1 / carrinhos / minas / métodos de envio

    {
    "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. adicione o URL das informações de envio: http: // www. [yoursite] .com / rest / V1 / carts / mine / corpo de informações de envio :

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

resposta: método de pagamento e detalhes do carrinho

  1. URL do local do pedido: http: // www. [Yoursite] .com / rest / V1 / carrts / mine / corpo do pedido :

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

resposta: orderid

Manish
fonte
Como passar dados de cartão de crédito usando o método de fluxo de pagamento usando a maneira acima?
Rakesh Jesadiya
@RakeshJesadiya, há uma chamada da API de descanso Magento para obter todas as formas de pagamento disponíveis, buscar a lista e fazer o pedido substituindo o método acima.
Manish
você pode olhar para cima e me avise para isso, magento.stackexchange.com/questions/188939/…
Rakesh Jesadiya
@paul você criou um pedido usando a API REST com PayPal Pro e Express ????
Ketan Panchal
@KetanPanchal No
Manish
0

Há um tutorial oficial mostrando como fazer um pedido através da API REST:
Tutorial de processamento de pedidos para Magento 2.2

Eles incluíram etapas muito detalhadas:

  1. Configure a loja
  2. Obtenha o token de administrador
  3. Crie um cliente
  4. Criar uma cotação
  5. Adicionar itens ao carrinho
  6. Preparar para a finalização da compra
  7. Crie um pedido
  8. Crie uma fatura
  9. Crie uma remessa
  10. Emitir um reembolso parcial

O tutorial incluiu como adicionar diferentes tipos de produtos, diferentes métodos de envio e muitas outras informações úteis com códigos de amostra.

jeffsama
fonte