@dungxa27/tori-acb
v0.3.1
Published
ToriACB payment package
Readme
Tori ACB Integration
NestJS module for ACB (Asia Commercial Bank) integration - Login, Balance, and Transaction History.
Installation
npm install @tori/tori-acbUsage
Import Module
import { Module } from '@nestjs/common';
import { ACBModule } from '@tori/tori-acb';
@Module({
imports: [
ACBModule.forRoot({
router: 'acb', // Custom router path (default: 'acb')
timeout: 30000,
retryAttempts: 3,
}),
],
})
export class AppModule {}Async Configuration (with MongoDB Settings)
import { MongoService } from './mongo.service';
@Module({
imports: [
ACBModule.forRootAsync({
useFactory: async (mongoService: MongoService) => {
const settings = await mongoService.getSettings();
return {
router: settings.acbRouter || 'acb', // Dynamic router from DB
timeout: 30000,
};
},
inject: [MongoService],
}),
],
})
export class AppModule {}MongoDB Schemas
Package này cung cấp schemas để dự án khác tự connect MongoDB:
ACBSession Schema
import { ACBSessionSchema } from '@tori/tori-acb';
import { MongooseModule } from '@nestjs/mongoose';
MongooseModule.forFeature([
{ name: 'ACBSession', schema: ACBSessionSchema }
])Fields:
sessionId- Unique session identifierusername- User's usernameaccountNumber- Bank account numberaccountName- Account holder nameexpiresAt- Session expiration timeisActive- Session statuslastAccessedAt- Last access timestamp
ACBTransaction Schema
import { ACBTransactionSchemaFactory } from '@tori/tori-acb';
import { MongooseModule } from '@nestjs/mongoose';
MongooseModule.forFeature([
{ name: 'ACBTransaction', schema: ACBTransactionSchemaFactory }
])Fields:
transactionId- Unique transaction IDaccountNumber- Account numbertransactionDate- Transaction datedescription- Transaction descriptionamount- Transaction amounttype- CREDIT or DEBITbalance- Balance after transactionreferenceNumber- Reference numberisProcessed- Processing status
ACBConfig Schema
import { ACBConfigSchemaFactory } from '@tori/tori-acb';
import { MongooseModule } from '@nestjs/mongoose';
MongooseModule.forFeature([
{ name: 'ACBConfig', schema: ACBConfigSchemaFactory }
])Fields:
key- Configuration keyrouter- Router pathtimeout- Request timeoutretryAttempts- Retry attemptsisActive- Config status
API Endpoints
The endpoints will be available under the configured router path (default: /acb).
Login
POST /acb/loginRequest body:
{
"username": "your_username",
"password": "your_password",
"accountNumber": "1234567890"
}Response:
{
"success": true,
"message": "Login successful",
"data": {
"sessionId": "SESSION_xxx",
"accountNumber": "1234567890",
"accountName": "Account Holder",
"expiresAt": "2026-05-16T11:30:00Z"
}
}Get Balance
GET /acb/balance?sessionId=SESSION_xxx&accountNumber=1234567890Response:
{
"success": true,
"data": {
"accountNumber": "1234567890",
"accountName": "Account Holder Name",
"availableBalance": 10000000,
"currentBalance": 10500000,
"currency": "VND"
}
}Get Transaction History
GET /acb/history?sessionId=SESSION_xxx&fromDate=2026-05-01&toDate=2026-05-16&page=1&limit=20Response:
{
"success": true,
"data": {
"accountNumber": "1234567890",
"transactions": [
{
"transactionId": "TXN001",
"transactionDate": "2026-05-16T10:30:00Z",
"description": "Transfer from John Doe",
"amount": 500000,
"type": "CREDIT",
"balance": 10500000,
"referenceNumber": "REF001"
}
],
"fromDate": "2026-05-01",
"toDate": "2026-05-16",
"totalRecords": 1
}
}Health Check
GET /acb/healthService Usage
import { Injectable } from '@nestjs/common';
import { ACBService } from '@tori/tori-acb';
@Injectable()
export class BankingService {
constructor(private readonly acbService: ACBService) {}
async checkBalance(sessionId: string) {
return await this.acbService.getBalance({ sessionId });
}
async getTransactions(sessionId: string, fromDate: string, toDate: string) {
return await this.acbService.getHistory({
sessionId,
fromDate,
toDate,
});
}
}License
UNLICENSED
