Lưu lượng đặt hàng API nghỉ ngơi Magento2


13

Tôi đang thực hiện các cuộc gọi API REST đến trang web magento để đặt hàng. Dưới đây là chuỗi các cuộc gọi của tôi.

  1. Tạo một giỏ hàng rest/V1/guest-carts/
  2. Lấy xe đẩy rest/V1/guest-carts/bae0af147b83f1561f66cc4e3c97916e
  3. Thêm sản phẩm vào giỏ hàng rest/V1/guest-carts/24/items
  4. Thêm thông tin thanh toán, đặt phương thức thanh toán và đặt hàng rest/V1/guest-carts/24/payment-information

Trong chuỗi này, đơn hàng đang được đặt với trạng thái đơn hàng "đang chờ xử lý". Tôi tự hỏi làm thế nào thanh toán được thu qua api nếu có bất kỳ cổng thanh toán nào (Ví dụ: PayPal) có liên quan để xử lý thanh toán và tạo hóa đơn.

Có thiếu api nào trong luồng trên để thu tiền thanh toán không.

Câu trả lời:


11

Tôi đã sử dụng một bản cài đặt mới cho phần sau bằng Magento2 CE 2.2.0-dev và cũng để lại chủ đề "Luma" mặc định.

Liên quan đến các phương thức thanh toán bên ngoài (cổng) như MiGS , Braintree , PayPal và các phương thức khác, Magento hỗ trợ các cổng này ra khỏi hộp nhưng cung cấp KHÔNG API cho chúng mà bạn có thể sử dụng cùng với các API "Thanh toán" khác.

Vì vậy, nếu bạn dự định xây dựng một ứng dụng / trang thanh toán bằng API của Magento, bạn sẽ cần phải tích hợp thủ công với các dịch vụ này bằng SDK / API của họ, may mắn thay, bạn có thể tìm hiểu rất nhiều bằng cách kiểm tra cách Magento tích hợp với các dịch vụ này được xây dựng -in tích hợp.

Để hiểu điều này, tôi đã phải cấu hình Braintree vì nó dễ nhất:

  1. Tạo tài khoản hộp cát tại https://www.braintreepayments.com/sandbox
  2. Truy cập khu vực quản trị Magento.
  3. Cửa hàng> Cấu hình> Bán hàng> Phương thức thanh toán> Braintree> Cấu hình.
  4. Đảm bảo "Môi trường" là "Hộp cát" và nhập "ID người bán", "Khóa công khai" và "Khóa riêng".
  5. Lưu cấu hình.
  6. Bạn có thể cần reindex và / hoặc làm mới bộ đệm.

Khi thêm sản phẩm vào giỏ hàng và tiến hành thanh toán, ở bước cuối cùng, chọn phương thức thanh toán Braintree, sau đó sau khi nhấp vào nút "Đặt hàng", bạn sẽ nhận thấy các yêu cầu AJAX sau:

  1. 2 yêu cầu API Braintree để xác thực thẻ, thực hiện giao dịch và phản hồi với trạng thái giao dịch.
  2. Yêu cầu API của Magento guest-carts/cartId/payment-informationvới cơ thể thông thường như được giải thích trong tài liệu API của Magento.

Sau đó, quá trình tiếp tục như mong đợi với việc chuyển hướng đến trang thành công khi yêu cầu cuối cùng phản hồi trong JSON chứa thứ tự entity_id

nhập mô tả hình ảnh ở đây

Điều này xác nhận rằng các cuộc gọi đến các dịch vụ bên ngoài -Braintree trong ví dụ của chúng tôi - được thực hiện bởi trang thanh toán KHÔNG phải bởi Magento trong nội bộ, vì vậy chúng tôi sẽ cần phải làm như vậy nếu chúng tôi phát triển trang / ứng dụng thanh toán của riêng mình.

Để kiểm soát trạng thái đơn hàng, tôi đã đào sâu hơn và phát hiện ra rằng việc sử dụng các phương thức thanh toán như MiGS, Braintree hoặc PayPal, dẫn đến một đơn đặt hàng có trạng thái processingthay vì thông thường pending, tôi nghi ngờ rằng đây là cấu hình phương thức thanh toán hoặc người quan sát , nhưng nó dường như là một cấu hình, đây là chi tiết hơn.

Lớp: Magento \ Bán hàng \ Mẫu \ Đặt hàng \ Thanh toán

Phương thức: Đặt ()

Có một điều kiện kiểm tra nếu Initializationđược yêu cầu cho phương thức if ($methodInstance->isInitializeNeeded()), nếu đó là trường hợp, một phương thức initialize()được thực thi mà bạn xác định và cho phép bạn chỉ định cả hai statestatus.


bạn có thể chia sẻ tải trọng cho api thông tin thanh toán
blakcaps

1
{"cartId": "a98697cba964d6ba0d3b64d78a31df33", "billingAddress": {"countryId": "EG", "areaId": null, "area": ​​"", "street": "" " ":" công ty của tôi "," điện thoại ":" 12346987 "," mã bưu điện ":" 12345 "," thành phố ":" thành phố "," tên gọi ":" tên f "," tên cuối ":" tên tôi "," saveInAddressBook ": null}," PaymentMethod ": {" phương thức ":" braintree "," thêm_data ": {" Payment_method_nonce ":" ef27df81-7c29-4a74-9049-15de33f1f49f "}}," email " .com "}
Mahmoud Tantawy

Cảm ơn về tải trọng. Tôi tự hỏi, làm thế nào để tạo "Payment_method_nonce".
blakcaps

Không thực sự biết nhưng tôi nghĩ bằng cách kiểm tra các yêu cầu qua lại rằng nonce có thể dễ dàng được phát hiện, nếu nó thực sự hoạt động như một nonce.
Mahmoud Tantawy

1
Braintree có vẻ dễ dàng tích hợp thông qua API REST. Nhưng làm thế nào để tích hợp cổng thanh toán chuyển hướng bên ngoài như Papal hay Ingenico?
Franck Garnier
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.