Skip to content

Tích hợp

1. Các service anh em

Service anh emHướngBề mặtAuthChế độ lỗiTính idempotent
@nx/mq-payHTTP webhook /webhooks/paymentkhông (tin cậy)MQ-Pay thử lại khi 5xxwebhook handler no-op với chuyển trạng thái đã áp dụng
@nx/inventoryKafka payment.success-sau commit, fire-and-forgettheo (saleOrderId, stockId) ở phía consumer
@nx/inventoryKafka kitchen-ticket-item.status-changed-sau commit, fire-and-forgettheo (saleOrderId, kitchenTicketItemId, materialId) ở phía consumer
@nx/inventoryKafka material.stock-changed-(sale hiện không tiêu thụ - phát cho UI consumer)-
@nx/financeKafka payment.success-sau commit, fire-and-forgettheo saleOrderId ở phía consumer
@nx/commerceHTTP - đọc ProductVariant, ProductInfo, SaleChannel, Category cho snapshotJWT (service-to-service)thử lại 3 lầnsnapshot lưu trên order
@nx/pricingHTTP - PricingNetworkService.calculate() + calculateV2()JWTthử lại; checkout thất bại khi lỗi liên tụcrequest checkout idempotent (không gây tác dụng phụ khi thử lại)
@nx/identityHTTP - xác minh JWT qua JWKS (/jw-certs)JWTthử lại / circuit-breakrequest-id được lan truyền
@nx/identityHTTP - PolicyDefinitionService tra cứu permissionJWTquay về Redis cachetheo (role, action)
@nx/signalPhát WebSocket qua ApplicationWebSocketComponent-giao tốt nhất có thểbroadcast

2. Hệ thống bên ngoài

Tích hợp trực tiếp với bên ngoài: không có. Sale dùng MQ-Pay (service anh em) để trừu tượng hoá nhà cung cấp thanh toán. Các nhà cung cấp thanh toán bên thứ ba (VNPay, v.v.) thuộc về @nx/mq-pay.

3. Các luồng liên service quan trọng

3.1 Thanh toán thành công → Trừ kho + Ghi nhận thu nhập

Hợp đồng:

  • Sale đảm bảo PAYMENT_SUCCESS được phát đúng một lần cho mỗi lần chuyển trạng thái (sau commit).
  • Webhook là nguồn sự thật cho trạng thái - Sale không poll MQ-Pay.
  • Tính idempotent: webhook handler thoát sớm nếu order đã ở trạng thái đích.

3.2 Kitchen Item READY → Tiêu thụ Material

3.3 Gọi Pricing khi Checkout

3.4 MQ-Pay Webhook Retry (lưới an toàn của Sale)

4. Ổn định hợp đồng

Bề mặtMức ổn địnhPhiên bản
HTTP /v1/api/sale/*stabletiền tố URL /v1/
HTTP webhook /webhooks/paymentstablerequest schema được đánh phiên bản qua namespace eventType
Kafka topic payment.successstablepayload chỉ thêm field
Kafka topic kitchen-ticket-item.status-changedstablepayload chỉ thêm field
WebSocket topic observation/sale/*stablepayload chỉ thêm field

5. Mối quan tâm xuyên suốt

Mối quan tâmXử lý
Ranh giới tin cậyEndpoint webhook tin cậy MQ-Pay (không auth). Việc cô lập ở cấp mạng qua Cilium policy đảm bảo điều này.
Bảo vệ raceSELECT FOR UPDATE trên dòng order khi checkout + add-item.
Chụp snapshotKhi checkout, sale chụp snapshot: pricing (v1+v2), trạng thái allocation, metadata product variant, recipe id. Vòng đời = order.
Tiền tệLưu ở cấp order. Đa tiền tệ yêu cầu snapshot exchangeRate cho mỗi order.

6. Trang liên quan

Proprietary and Confidential. Unauthorized copying, distribution, or use of this software is strictly prohibited.