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:
- Tạo tài khoản hộp cát tại https://www.braintreepayments.com/sandbox
- Truy cập khu vực quản trị Magento.
- Cửa hàng> Cấu hình> Bán hàng> Phương thức thanh toán> Braintree> Cấu hình.
- Đả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".
- Lưu cấu hình.
- 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:
- 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.
- Yêu cầu API của Magento
guest-carts/cartId/payment-information
vớ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
Đ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 processing
thay 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 state
và status
.