Magento 2 - Tạo đơn hàng bằng API REST


24

Tôi cần sử dụng API Magento REST để tạo đơn hàng từ máy khách di động. Trong trường hợp của tôi, phía di động sẽ triển khai thanh toán trực tiếp bằng PayPal SDK. Điều tôi cần làm là tạo một đơn đặt hàng bằng cách đặt phương thức thanh toán thành lệnh chuyển tiền và thực hiện kiểm tra khách. Tôi nên sử dụng API nào để đạt được điều này?

Câu trả lời:


27

Cuối cùng tôi đã tìm nó ra. Đây là những gì tôi đang làm.

Nhận một sản phẩm

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

Tạo giỏ hàng

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

Nhận giỏ hàng

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

Thêm sản phẩm vào giỏ hàng

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

Thêm thông tin vận chuyển

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

Nhận phương thức thanh toán

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

Đặt hàng

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
Tôi đã tạo một tập lệnh php mẫu dựa trên câu trả lời của bạn ở đây, nếu ai đó muốn thử điều này qua php: github.com/acolono/php-magento-api-sandbox
Nebel54

1
@zzpaul, Làm cách nào để truyền dữ liệu thẻ tín dụng bằng phương thức thanh toán bằng cách trên?
Rakesh Jesadiya

6

Tôi nghĩ rằng có một sai lầm nhỏ: Để đặt hàng, trên cơ thể, nó phải được thanh toán Hãy xác định khóa đầu tiên, như thế này:

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

4
  1. tạo url giỏ hàng trống: http: // www. [yoursite] .com / rest / V1 / carts / mine call: post reply: cartID, vd: 4290

  2. Thêm mục vào url giỏ hàng: http: // www. [Yoursite] .com / rest / V1 / carts / mine / item 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. Thêm url thông tin billling: http: // www. [Yoursite] .com / rest / V1 / carts / mine / thanh toán địa chỉ cơ thể:

    {
    "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. nhận url phương thức vận chuyển: http: // www. [yoursite] .com / rest / V1 / carts / mine / Phương thức vận chuyển

    {
    "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. thêm url thông tin giao hàng: http: // www. [yoursite] .com / rest / V1 / carts / mine / vận chuyển thông tin cơ thể:

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

phản hồi: phương thức thanh toán và chi tiết giỏ hàng

  1. URL địa điểm đặt hàng: http: // www. [Yoursite] .com / rest / V1 / carts / mine / order body:

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

đáp ứng: trật tự


Làm cách nào để truyền dữ liệu thẻ tín dụng bằng phương thức thanh toán bằng cách trên?
Rakesh Jesadiya

@RakeshJesadiya, có một cuộc gọi api còn lại của Magento để nhận tất cả các phương thức thanh toán có sẵn lấy danh sách và đặt hàng thay thế phương thức trên.
Manish

bạn có thể tra cứu và cho tôi biết điều này không, magento.stackexchange.com/questions/188939/ mẹo
Rakesh Jesadiya

@paul bạn đã tạo đơn hàng bằng API REST với PayPal Pro và Express chưa ????
Ketan Panchal

@KetanPanchal Không
Manish

0

Có một hướng dẫn chính thức cho thấy cách đặt hàng thông qua API REST:
Hướng dẫn xử lý đơn hàng cho Magento 2.2

Chúng bao gồm các bước rất chi tiết:

  1. Cấu hình cửa hàng
  2. Nhận mã thông báo quản trị
  3. Tạo một khách hàng
  4. Tạo một trích dẫn
  5. Thêm các mặt hàng vào giỏ hàng
  6. Chuẩn bị kiểm tra
  7. Tạo một đơn đặt hàng
  8. Tạo hóa đơn
  9. Tạo một lô hàng
  10. Phát hành hoàn trả một phần

Hướng dẫn bao gồm cách thêm các loại sản phẩm khác nhau, phương thức vận chuyển khác nhau và nhiều thông tin hữu ích khác với mã mẫu.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.