Skip to content

Tích hợp MQ-SMS

@nx/mq-sms là thư viện quản lý SMS đa nhà cung cấp. Nó bọc các API của nhà cung cấp SMS sau một interface thống nhất với mô hình client registry. Hiện hỗ trợ VnPay là nhà cung cấp SMS duy nhất.

Tham chiếu nhanh

Thuộc tínhGiá trị
Package@nx/mq-sms
Vị tríthird-parties/mq-sms/
LoạiThư viện (được sử dụng như một component bởi các service khác)
Được sử dụng bởi@nx/identity (gửi OTP)

Kiến trúc

Nhà cung cấp

Nhà cung cấpTrạng thái
VnPayMQSMSProviders.VNPAY = 'vnpay'Đang hoạt động

Cấu hình VnPay

TrườngMục đích
username / passwordXác thực API
partnerCode / secretKeyĐịnh danh đối tác
keywordTừ khóa/tên thương hiệu SMS
brandNameTên hiển thị người gửi
encryptIvIV cho chế độ SMS mã hóa (tùy chọn)
partnerPrivateKeyPathRSA private key cho chế độ bảo mật (tùy chọn)

Các endpoint VnPay được sử dụng:

  • /login — xác thực (client tự quản lý)
  • /send-sms — gửi SMS đơn
  • /v2/send-sms-security — gửi SMS đơn mã hóa
  • /send-sms-list — gửi SMS batch
  • /v2/send-sms-list-security — gửi SMS batch mã hóa

SMSService

Các phương thức chính của service:

Phương thứcMục đích
sendSMS(request, clientName?)Gửi SMS đơn qua client mặc định hoặc theo tên
sendSMSSecurity(request, clientName?)Gửi SMS đơn có mã hóa
sendSMSList(requests, clientName?)Gửi SMS batch
sendSMSListSecurity(requests, clientName?)Gửi SMS batch có mã hóa

Định dạng request

typescript
interface TSendSmsRequest {
  messageId?: string;     // optional correlation ID
  destination: string;    // phone number
  content: string;        // message body
}

MQSMSClientRegistryService

Quản lý nhiều instance client theo nhà cung cấp:

Phương thứcMục đích
registerClient(name, client)Đăng ký một client nhà cung cấp
unregisterClient(name)Gỡ bỏ một client
getClient(name?)Lấy client theo tên (hoặc client mặc định)
getDefaultClient()Lấy client mặc định hiện tại
setDefaultClient(name)Chuyển client mặc định

Mỗi client đã đăng ký theo dõi: token, thời điểm hết hạn token, timestamp sử dụng gần nhất.

REST Controller (Tùy chọn)

Khi enableControllers: true được đặt trong options của MQSMSComponent, một SMSController sẽ được đăng ký:

MethodPathMục đích
POST/mq-sms/sms/sendGửi SMS đơn
POST/mq-sms/sms/send-securityGửi SMS đơn mã hóa
POST/mq-sms/sms/send-listGửi SMS batch
POST/mq-sms/sms/send-list-securityGửi SMS batch mã hóa

Mọi endpoint đều chấp nhận tham số query clientName tùy chọn để chọn một client nhà cung cấp cụ thể.

Tích hợp với Identity

Service identity sử dụng MQ-SMS để gửi OTP (One-Time Password):

  1. SMSComponent trong identity đăng ký MQSMSComponent khi khởi động
  2. Cấu hình nhà cung cấp được nạp từ cơ sở dữ liệu (seed bởi identity-0006-seed-sms-configurations)
  3. SMSOTPSender inject SMSService và gọi sendSMS() để gửi mã xác thực
  4. Cấu hình SMS hỗ trợ nhiều client VnPay (các brand name/tài khoản khác nhau)

Binding Keys

KeyMục đích
MQSMSBindingKeys.MQ_SMS_CLIENT_OPTIONSCấu hình component
MQSMSBindingKeys.MQ_SMS_CLIENT_PROVIDERHàm factory tạo client
MQSMSBindingKeys.MQ_SMS_CLIENT_REGISTRYInstance của registry service

Mã phản hồi VnPay

Ý nghĩa
00Thành công
02Độ dài không hợp lệ
04Xác thực không hợp lệ
05Nhà cung cấp mất kết nối
06IP chưa được đăng ký
21Không đủ số dư
85Người gửi không hợp lệ
86Keyword không hợp lệ
90Tin nhắn trùng lặp

Các trang liên quan

TrangMô tả
Identity — AuthenticationGửi OTP qua MQ-SMS
MQ-PayThanh toán đa nhà cung cấp (cùng pattern registry)

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