Danh sách chuyển đổi
Những gì app phải thay đổi, theo từng route, khi chuyển một lời gọi từ Shukah sang Locate. Mỗi mục là một khác biệt breaking tìm thấy trong đợt kiểm tra tương đương ngày 2026-10-02: gọi cùng một input lên cả hai phía trên dev, hoặc đọc code khi gọi thật không an toàn; TL;DR của từng route ghi rõ là cách nào. Các route không nằm trong phần thay đổi breaking là drop-in: chỉ đổi base URL và path (xem các dòng cần lưu ý trong TL;DR của từng route: method hoặc token vẫn có thể khác). Các mục chung cho nhiều route chỉ được liệt kê một lần ở đầu trang, kèm các route mà chúng áp dụng.
Trước hết: giữ cả hai token. Vẫn đăng nhập trên Shukah. Lấy JWT của Locate bằng
exchange-token (target_platform: locate) và lưu cả hai
token. Gửi JWT cho các route client của auth service, còn token Shukah cho order-v2 và cho các route vẫn
ở lại Shukah. Chưa chuyển verify-otp (đăng nhập) sang Locate cho đến khi order-v2 chấp nhận JWT: đăng
nhập Locate chỉ trả về JWT, mà các route points của order-v2 hiện từ chối JWT này
(lý do).
Bấm vào một route để xem trang endpoint của nó, nơi có TL;DR đầy đủ và các bảng field.
Áp dụng cho nhiều route
- ☐ Token Shukah nhận 401 "Unauthorization"; hãy gửi JWT của Locate (lấy từ exchange-token; giữ lại token Shukah).
GET /maeda/api/verify-token→GET /api/v1/clients/verify-tokenGET /maeda/client→GET /api/v1/clientsGET /maeda/address-book→GET /api/v1/clients/address-bookGET /maeda/address-book/:id→GET /api/v1/clients/address-book/:idPOST /maeda/address-book→POST /api/v1/clients/address-bookPUT /maeda/address-book/:id→PUT /api/v1/clients/address-book/:idDELETE /maeda/address-book/:id→DELETE /api/v1/clients/address-book/:idPUT /maeda/client/:client_id→PUT /api/v1/clients/:client_idPUT /maeda/client/:client_id→PUT /api/v1/clients/setting
Thay đổi breaking cần xử lý
GET /maeda/api/verify-otp→GET /api/v1/clients/verify-otp- ☐ Chưa chuyển đăng nhập sang Locate: đăng nhập Locate chỉ trả về JWT, mà các route points của order-v2 hiện từ chối JWT này.
GET /maeda/api/verify-token→GET /api/v1/clients/verify-token- ☐ Khi gặp 401 này, app xóa token đã lưu (auth.service.ts:101), nên cần exchange token trước.
GET /maeda/address-book→GET /api/v1/clients/address-book- ☐ Địa chỉ tạo trên Locate có formatted_address/street/city là null; app gửi formatted_address làm c_address.
POST /maeda/address-book→POST /api/v1/clients/address-book- ☐ Response là {status,address:{...}}; app dựng preset từ cấp cao nhất nên id và lat/lng là NaN.
- ☐ Không geocode: street, city, area, state, zipcode, country, formatted_address là null (Shukah điền các giá trị này).
DELETE /maeda/address-book/:id→DELETE /api/v1/clients/address-book/:id- ☐ App gửi +id, nên id 24 ký tự hex thành NaN và lệnh xóa trả 404; slice cũng so sánh bằng +id.
PUT /maeda/client/:client_id→PUT /api/v1/clients/setting- ☐ App bật/tắt push qua PUT client/:id; Locate bỏ qua push_enabled ở đó, nên hãy gọi PUT /clients/setting.
GET /maeda/client/point-history→GET /api/v2/client/point-history- ☐ Locate phân trang 20 dòng (tối đa 100); Shukah gửi cả 8,136; app không gửi tham số phân trang nên dừng ở 20.
- ☐ Không có tổng số hay dấu trang kế; hãy lặp với page và limit (mặc định 20, tối đa 100) đến khi gặp trang ngắn.
POST /maeda/point-order→POST /api/v2/client/point-orders- ☐ Không có point_order_id: app tạo pointOrderId = String(undefined) = "undefined"; amount đổi tên thành money_amount.
- ☐ Cũng thiếu: client_id, to_client_id, point_occasion_id, occasion, description, payment_point_order_id.
- ☐ Các route thanh toán cần correlation_id dạng UUID trong path; hãy giữ nó từ create, nếu không pay trả 404.
- ☐ Điểm tiêu ở một bên không bị trừ ở bên kia trong vài giây (về sau chưa kiểm tra): hãy đọc số dư và lịch sử ở bên tạo order.
- ☐ payment_type payfort hoặc hyperpay (app gửi giá trị từ settings) trả 400; chỉ point hoặc checkout hoạt động.
- ☐ point_offer_id và point_occasion_id phải là id 24 ký tự hex từ danh sách Locate; số nguyên của Shukah trả 400.
POST /maeda/order/checkout-payment-standalone→POST /api/v2/client/point-orders/:correlation_id/pay/card- ☐ Id của order chuyển từ point_order_id trong body (chuỗi "1252") sang path dưới dạng correlation_id UUID.
- ☐ App chỉ giữ pointOrderId; từ create của Locate nó là "undefined" nên lệnh gọi trả 404 "point order not found".
POST /maeda/order/checkout-payment-flow→POST /api/v2/client/point-orders/:correlation_id/pay/session- ☐ Id của order chuyển từ point_order_id trong body (chuỗi "1253") sang path dưới dạng correlation_id UUID.
- ☐ App chỉ giữ pointOrderId; từ create của Locate nó là "undefined" nên lệnh gọi trả 404.
Chưa thay thế: vẫn gọi Shukah
GET /maeda/client/status— Không có route Locate. Snapshot của app có khai báo route này nhưng không có code nào gọi nó, vậy mà bảng traffic production ngày 2026-10-02 ghi nhận 768 lượt gọi trong 3 ngày; Shukah dev trả 404 "The route maeda/client/status could not be found."GET /maeda/client/delete— Không có route nào của Locate xóa tài khoản, nên app vẫn gọi route Shukah này, route cần một token mà Shukah chấp nhận. App xóa token đã lưu khi gặp 401 ở đây, nên app chỉ có JWT sẽ bị đăng xuất.GET /maeda/point-order— Không có route Locate nào liệt kê các quà đã gửi của một user, nên tab Sent gifts vẫn gọi Shukah.POST /maeda/order/checkout-payment— Với point order, Locate chỉ có route thẻ đã lưu và route session, nên route thanh toán bằng token thẻ Checkout.com không có route thay thế. 0 lượt gọi trong bảng traffic production ngày 2026-10-02 (3 ngày).POST /maeda/order/checkout-payment-stcpay— Theo thiết kế (D24), Locate dự kiến xử lý STC Pay bên trong route pay-session chứ không dùng endpoint STC Pay riêng của order-v2; chưa được chứng minh trên thiết bị.POST /maeda/order/payfort-token— PayFort được hoãn có chủ đích cho point order của Locate, nên đường PayFort vẫn gọi Shukah. 0 lượt gọi trong bảng traffic production ngày 2026-10-02 (3 ngày).POST /maeda/order/payfort-stc-pay-checkout— PayFort được hoãn có chủ đích cho point order của Locate, nên đường STC Pay này vẫn gọi Shukah. 0 lượt gọi trong bảng traffic production ngày 2026-10-02 (3 ngày).
Danh sách này được tạo ra như thế nào
Danh sách được render từ registry migrate (registry.ts): mọi khác biệt breaking, rồi mọi route có
verdict blocked, rồi mọi route chưa có Locate thay thế. Để đổi một mục, hãy đổi entry trong registry;
xem Tiến độ migrate.