Skip to content

Integration

1. Service anh em

Direction: gọi / được gọi / hai chiều.

Anh emHướngBề mặtHợp đồngAuthFailure Mode
@nx/saleKafka PAYMENT_SUCCESSTSalePaymentSuccessat-least-once; guard khi không COMPLETED / đã có hoá đơn
@nx/commerceKafka Merchant CDC (Debezium)TDebeziumMessage<TMerchantPgRow> (metadata.tax)at-least-once; op=u diff-skip
@nx/commerceHTTP webhook /webhooks (callback commerce)ký HMAC-SHA256WEBHOOK_INTERNAL_SECRETtừ chối khi chữ ký sai/thiếu
@nx/identityXác thực JWT qua JWKSVerifierApplicationJWT (ES256)từ chối request nếu không xác thực được

2. Hệ thống ngoài

Hai lớp adapter bọc các provider HĐĐT ngoài; enum provider trong DB ánh xạ sang enum iiapi qua InvoiceProviderMapper (src/common/providers.ts).

Hệ thốngLớpHướngBề mặtAuthNguồn credential
VNIS@nx/iiapiphát hành HĐĐTclient id/secrethàng Configuration core VNIS_DEFAULT_CONNECTION (mã hoá) + mặc định APP_ENV_VNIS_*
VNPAY@nx/iiapiphát hành + callback webhook vàousername/password theo từng merchanthàng InvoiceProvider (mã hoá AES-256-GCM)
T-VAN (provider VNPAY)@nx/t-vangateway transaction-VANAPI keyhàng Configuration core TVAN_DEFAULT_CONNECTION (credential mã hoá)

Đăng ký adapter (lúc boot):

ComponentĐăng kýVới
InvoiceProviderConnectionComponentVNIS + client InvoiceProvider theo từng merchant@nx/iiapi
TVanConnectionComponentClient T-VAN từ TVAN_DEFAULT_CONNECTION@nx/t-van

Ánh xạ provider (InvoiceProviderMapper):

DB (InvoiceProviders)iiapi (IIAPIProviders)
VNPAYVNPAY

Hiện chỉ có VNPAY trong map DB↔iiapi; toIIAPI/toDB ném lỗi với provider lạ.

3. Luồng xuyên service quan trọng

3.1 Thông tin thuế merchant (MST) — input → TaxInfo có thẩm quyền

Hợp đồng:

  • metadata.tax trong commerce là input; TaxInfo (principalType=Merchant) là bản ghi có thẩm quyền.
  • Phát hiện thay đổi diff với TaxInfo đã lưu, không phải before-image của Debezium (đúng bất kể REPLICA IDENTITY).
  • Frontend đọc relation merchant.taxInfo, không bao giờ metadata.tax.
  • op=u chỉ upsert thuế; op=c/r còn tạo profile và (nếu có metadata.eInvoice và merchant đủ điều kiện) một InvoiceProvider VNPAY.

3.2 Phát hành qua adapter provider

Hợp đồng: điều kiện được kiểm soát bởi (businessType, taxMethod)ALLOWED_INVOICE_TYPES. Mode REAL_TIME / BUYER_SELF_SERVICE yêu cầu TaxMethods.DIRECT.

3.3 Webhook vào

WebhookEnv secretXác minh
Callback VNPAY/iiapi (vnpayIIAPICallback)APP_ENV_INVOICE_WEBHOOK_SECRETheader chữ ký của provider
Callback Commerce (commerceCallback)APP_ENV_INVOICE_WEBHOOK_INTERNAL_SECRETHMAC-SHA256 verifyWebhookSignature

4. Độ ổn định hợp đồng

Bề mặtĐộ ổn địnhVersioning
HTTP /v1/api/*ổn địnhtiền tố URL /v1/
Kafka PAYMENT_SUCCESS (consume)ổn địnhchỉ thêm trường
Kafka Merchant CDC (consume)ổn địnhenvelope Debezium
Adapter iiapi / t-vanbên ngoàiversion theo provider (API VNIS/VNPAY/T-VAN)
Webhook /webhooksổn địnhheader chữ ký

5. Trang liên quan

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