{"_id":"9japay-nestjs","_rev":"7-37f3ced1ca6e6f912bb89ad8011b0857","name":"9japay-nestjs","dist-tags":{"latest":"1.1.0"},"versions":{"1.0.0":{"name":"9japay-nestjs","version":"1.0.0","keywords":["9japay","nestjs","virtual-accounts","payments","api","sdk"],"author":{"name":"Essien Ekanem"},"license":"MIT","_id":"9japay-nestjs@1.0.0","maintainers":[{"name":"evidenze","email":"evidenzeekanem@gmail.com"}],"homepage":"https://github.com/evidenze/9japay-nestjs#readme","bugs":{"url":"https://github.com/evidenze/9japay-nestjs/issues"},"dist":{"shasum":"9e3f329ce837342ee1ba8023d68ff96b74a7e4c5","tarball":"https://registry.npmjs.org/9japay-nestjs/-/9japay-nestjs-1.0.0.tgz","fileCount":23,"integrity":"sha512-g4XuCiZN4RR7/kd33HJ5o/fvTXwL/VBaDST8Mh+2b48IK+2YQ6Za+N58nK6a95T489un/FPmcR+xPEb2q6l8fA==","signatures":[{"sig":"MEUCIAsjkuziEgXBwR5BhE9/NVTQZaE3dqMSfErGmjmnaDRfAiEAop0/aAz5OjhDhwDofpD61/ckBBNKSHLaWRBySKS0HOc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":61497},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"68358144c53faf76dabcc5ae4c154e2856dd91ec","scripts":{"lint":"eslint 'src/**/*.ts'","test":"jest","build":"tsc","lint:fix":"eslint 'src/**/*.ts' --fix","test:watch":"jest --watch","test:coverage":"jest --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"evidenze","email":"evidenzeekanem@gmail.com"},"repository":{"url":"git+https://github.com/evidenze/9japay-nestjs.git","type":"git"},"_npmVersion":"10.9.2","description":"A comprehensive NestJS SDK for integrating with 9jaPay Virtual Account APIs","directories":{},"_nodeVersion":"22.14.0","dependencies":{"axios":"^1.6.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","rxjs":"^7.0.0","eslint":"^8.0.0","ts-jest":"^29.0.0","typescript":"^5.0.0","@types/jest":"^29.0.0","@types/node":"^20.0.0","@nestjs/core":"^10.0.0","@nestjs/common":"^10.0.0","@nestjs/testing":"^10.0.0","reflect-metadata":"^0.1.13","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"peerDependencies":{"rxjs":"^7.0.0","@nestjs/core":"^10.0.0","@nestjs/common":"^10.0.0"},"_npmOperationalInternal":{"tmp":"tmp/9japay-nestjs_1.0.0_1757152226510_0.11397438949755889","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"9japay-nestjs","version":"1.0.1","keywords":["9japay","nestjs","virtual-accounts","payments","api","sdk"],"author":{"name":"Essien Ekanem"},"license":"MIT","_id":"9japay-nestjs@1.0.1","maintainers":[{"name":"evidenze","email":"evidenzeekanem@gmail.com"}],"homepage":"https://github.com/evidenze/9japay-nestjs#readme","bugs":{"url":"https://github.com/evidenze/9japay-nestjs/issues"},"dist":{"shasum":"9dd4990c8e2636d025c13d96aa2e8f6003dc8d53","tarball":"https://registry.npmjs.org/9japay-nestjs/-/9japay-nestjs-1.0.1.tgz","fileCount":23,"integrity":"sha512-3a7v/AtB/LEzSpV3zPU3LrvZFh7uIjJ3itFjC3ABoP7V5ewonmCeR0nuwOwxPdpSMhTPGGUXXIyd4tEdHqAQIg==","signatures":[{"sig":"MEQCICDKqkrRnu5YsW4YIRHLDiUg6pqMiaj6JO+DgKkV9MADAiAPCqLjoM36yPetdonafs34eMm8P1CYV7wV8VfNWT2fRQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":61589},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"48ab14a3766fd7b69b18d1c83746b3a5c49c6afd","scripts":{"lint":"eslint 'src/**/*.ts'","test":"jest","build":"tsc","lint:fix":"eslint 'src/**/*.ts' --fix","test:watch":"jest --watch","test:coverage":"jest --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"evidenze","email":"evidenzeekanem@gmail.com"},"repository":{"url":"git+https://github.com/evidenze/9japay-nestjs.git","type":"git"},"_npmVersion":"10.9.2","description":"A comprehensive NestJS SDK for integrating with 9jaPay Virtual Account APIs","directories":{},"_nodeVersion":"22.14.0","dependencies":{"axios":"^1.6.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","rxjs":"^7.0.0","eslint":"^8.0.0","ts-jest":"^29.0.0","typescript":"^5.0.0","@types/jest":"^29.0.0","@types/node":"^20.0.0","@nestjs/core":"^10.0.0","@nestjs/common":"^10.0.0","@nestjs/testing":"^10.0.0","reflect-metadata":"^0.1.13","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"peerDependencies":{"rxjs":"^7.0.0","@nestjs/core":"^10.0.0","@nestjs/common":"^10.0.0"},"_npmOperationalInternal":{"tmp":"tmp/9japay-nestjs_1.0.1_1757153416366_0.03101227225094516","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"9japay-nestjs","version":"1.0.2","keywords":["9japay","nestjs","virtual-accounts","payments","api","sdk"],"author":{"name":"Essien Ekanem"},"license":"MIT","_id":"9japay-nestjs@1.0.2","maintainers":[{"name":"evidenze","email":"evidenzeekanem@gmail.com"}],"homepage":"https://github.com/evidenze/9japay-nestjs#readme","bugs":{"url":"https://github.com/evidenze/9japay-nestjs/issues"},"dist":{"shasum":"0f7fba4023a584fab2cb4a711df28ba94d1ec2e8","tarball":"https://registry.npmjs.org/9japay-nestjs/-/9japay-nestjs-1.0.2.tgz","fileCount":26,"integrity":"sha512-BwHe/C2n8D90LNsNzQK6WXv5O30Q5vRhOYkVkAhU1hI3+Z9Tws5FQYZkMV8vp0v1HwJn3tZPssp9NWKtasi7pA==","signatures":[{"sig":"MEQCIDiArk5GPnfTnWBc0/NslgLVe9atn6Ivd/zsQqgS+D+SAiBsxDnGOpUsGU9HXXdAYfb5bJtAoJlWj3SALBeN/t0HzA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":66749},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"264545cb7cf972fb4bedce6c4c0f3037f7a88dcc","scripts":{"lint":"eslint 'src/**/*.ts'","test":"jest","build":"tsc","lint:fix":"eslint 'src/**/*.ts' --fix","test:watch":"jest --watch","test:coverage":"jest --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"evidenze","email":"evidenzeekanem@gmail.com"},"repository":{"url":"git+https://github.com/evidenze/9japay-nestjs.git","type":"git"},"_npmVersion":"10.9.2","description":"A comprehensive NestJS SDK for integrating with 9jaPay Virtual Account APIs","directories":{},"_nodeVersion":"22.14.0","dependencies":{"axios":"^1.6.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","rxjs":"^7.0.0","eslint":"^8.0.0","ts-jest":"^29.0.0","typescript":"^5.0.0","@types/jest":"^29.0.0","@types/node":"^20.0.0","@nestjs/core":"^10.0.0","@nestjs/common":"^10.0.0","@nestjs/testing":"^10.0.0","reflect-metadata":"^0.1.13","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"peerDependencies":{"rxjs":"^7.0.0","@nestjs/core":"^10.0.0","@nestjs/common":"^10.0.0"},"_npmOperationalInternal":{"tmp":"tmp/9japay-nestjs_1.0.2_1757154764899_0.02740396631423181","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"9japay-nestjs","version":"1.0.3","keywords":["9japay","nestjs","virtual-accounts","payments","api","sdk"],"author":{"name":"Essien Ekanem"},"license":"MIT","_id":"9japay-nestjs@1.0.3","maintainers":[{"name":"evidenze","email":"evidenzeekanem@gmail.com"}],"homepage":"https://github.com/evidenze/9japay-nestjs#readme","bugs":{"url":"https://github.com/evidenze/9japay-nestjs/issues"},"dist":{"shasum":"02fccec6747148023f8f70258116d87e0875588d","tarball":"https://registry.npmjs.org/9japay-nestjs/-/9japay-nestjs-1.0.3.tgz","fileCount":26,"integrity":"sha512-35hlIr9tv5pO1hZALJPKnLKQXLBWHHi6oO4IDskFKYGk6I+GI7E7VmR6ZhKf1BKHPEXRb38F+UHYwyqy+GUFbw==","signatures":[{"sig":"MEYCIQDP4A+HCy1QPQY2+e2oWtTQfa7z6AxyKU1ix6j5Pc2TFAIhAM7vLculxxagLloHbR+1RC44tWKeyp9fRvYFscWjaxb4","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":69699},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"4c759bf6cd16d54e64a9cdd9013b4a4781809a9c","scripts":{"lint":"eslint 'src/**/*.ts'","test":"jest","build":"tsc","lint:fix":"eslint 'src/**/*.ts' --fix","test:watch":"jest --watch","test:coverage":"jest --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"evidenze","email":"evidenzeekanem@gmail.com"},"repository":{"url":"git+https://github.com/evidenze/9japay-nestjs.git","type":"git"},"_npmVersion":"10.9.2","description":"A comprehensive NestJS SDK for integrating with 9jaPay Virtual Account APIs","directories":{},"_nodeVersion":"22.14.0","dependencies":{"axios":"^1.6.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","rxjs":"^7.0.0","eslint":"^8.0.0","ts-jest":"^29.0.0","typescript":"^5.0.0","@types/jest":"^29.0.0","@types/node":"^20.0.0","@nestjs/core":"^10.0.0","@nestjs/common":"^10.0.0","@nestjs/testing":"^10.0.0","reflect-metadata":"^0.1.13","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"peerDependencies":{"rxjs":"^7.0.0","@nestjs/core":"^10.0.0","@nestjs/common":"^10.0.0"},"_npmOperationalInternal":{"tmp":"tmp/9japay-nestjs_1.0.3_1757156276995_0.540761754929159","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"9japay-nestjs","version":"1.0.4","keywords":["9japay","nestjs","virtual-accounts","payments","api","sdk"],"author":{"name":"Essien Ekanem"},"license":"MIT","_id":"9japay-nestjs@1.0.4","maintainers":[{"name":"evidenze","email":"evidenzeekanem@gmail.com"}],"homepage":"https://github.com/evidenze/9japay-nestjs#readme","bugs":{"url":"https://github.com/evidenze/9japay-nestjs/issues"},"dist":{"shasum":"9257e51c97bbeeded956d4cbc85ec52732a39d1f","tarball":"https://registry.npmjs.org/9japay-nestjs/-/9japay-nestjs-1.0.4.tgz","fileCount":26,"integrity":"sha512-zrvxbyGd/9fzohLcwlouELeej0RDvSgZR+YqPt3uf+ckgUsfk5AMi6u4QSgdiXcRbyK6HKrrmn6qcf8724B8vA==","signatures":[{"sig":"MEUCIDuygkyZqGwDWhf5qrUokYaXo7q7kbUPiiqSVE3h4ImZAiEA2m3Ta9Jcon8MToqRyVYRXhljTb6w0ZkfikNfa4Uml8Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":69695},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"43c3213985621813dca6c0d90b67e9cb6708bbc3","scripts":{"lint":"eslint 'src/**/*.ts'","test":"jest","build":"tsc","lint:fix":"eslint 'src/**/*.ts' --fix","test:watch":"jest --watch","test:coverage":"jest --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"evidenze","email":"evidenzeekanem@gmail.com"},"repository":{"url":"git+https://github.com/evidenze/9japay-nestjs.git","type":"git"},"_npmVersion":"10.9.2","description":"A comprehensive NestJS SDK for integrating with 9jaPay Virtual Account APIs","directories":{},"_nodeVersion":"22.14.0","dependencies":{"axios":"^1.6.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","rxjs":"^7.0.0","eslint":"^8.0.0","ts-jest":"^29.0.0","typescript":"^5.0.0","@types/jest":"^29.0.0","@types/node":"^20.0.0","@nestjs/core":"^10.0.0","@nestjs/common":"^10.0.0","@nestjs/testing":"^10.0.0","reflect-metadata":"^0.1.13","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"peerDependencies":{"rxjs":"^7.0.0","@nestjs/core":"^10.0.0","@nestjs/common":"^10.0.0"},"_npmOperationalInternal":{"tmp":"tmp/9japay-nestjs_1.0.4_1757165619022_0.5783938252976122","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"9japay-nestjs","version":"1.0.5","keywords":["9japay","nestjs","virtual-accounts","payments","api","sdk"],"author":{"name":"Essien Ekanem"},"license":"MIT","_id":"9japay-nestjs@1.0.5","maintainers":[{"name":"evidenze","email":"evidenzeekanem@gmail.com"}],"homepage":"https://github.com/evidenze/9japay-nestjs#readme","bugs":{"url":"https://github.com/evidenze/9japay-nestjs/issues"},"dist":{"shasum":"afa270f86feaac3a46b04f7d44ded918fb86db9e","tarball":"https://registry.npmjs.org/9japay-nestjs/-/9japay-nestjs-1.0.5.tgz","fileCount":27,"integrity":"sha512-EZjQ6n689MciTn5IO3J5LCq7v8qr/xhZ+Yhf6ovcOrUjeSVDhirXoRCuvUE64WOvGG63bxhChjSqpa8qMXtAyg==","signatures":[{"sig":"MEUCIQC4o3CBdBfWzkROS6xqWP2OzYs1sdm+/NWrQ8Sz3+vqWwIgC8IJR0FMWsbHDR/hotU/sK8B9r3RdDwWz231YfUWjfQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":69887},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"a47ab2f4cfc40faeba008aa4c8526117688d3d7d","scripts":{"lint":"eslint 'src/**/*.ts'","test":"jest","build":"tsc","lint:fix":"eslint 'src/**/*.ts' --fix","test:watch":"jest --watch","test:coverage":"jest --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"evidenze","email":"evidenzeekanem@gmail.com"},"repository":{"url":"git+https://github.com/evidenze/9japay-nestjs.git","type":"git"},"_npmVersion":"11.6.1","description":"A comprehensive NestJS SDK for integrating with 9jaPay Virtual Account APIs","directories":{},"_nodeVersion":"24.11.0","dependencies":{"axios":"^1.6.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","rxjs":"^7.0.0","eslint":"^8.0.0","ts-jest":"^29.0.0","typescript":"^5.0.0","@types/jest":"^29.0.0","@types/node":"^20.0.0","@nestjs/core":"^10.0.0","@nestjs/common":"^10.0.0","@nestjs/testing":"^10.0.0","reflect-metadata":"^0.1.13","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"peerDependencies":{"rxjs":"^7.0.0","@nestjs/core":"^10.0.0","@nestjs/common":"^10.0.0"},"_npmOperationalInternal":{"tmp":"tmp/9japay-nestjs_1.0.5_1764147910706_0.19313119694330072","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"9japay-nestjs","version":"1.1.0","description":"A comprehensive NestJS SDK for integrating with 9jaPay Virtual Account APIs","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc","test":"jest","test:watch":"jest --watch","test:coverage":"jest --coverage","lint":"eslint 'src/**/*.ts'","lint:fix":"eslint 'src/**/*.ts' --fix","prepublishOnly":"npm run build"},"keywords":["9japay","nestjs","virtual-accounts","payments","api","sdk"],"author":{"name":"Essien Ekanem"},"license":"MIT","peerDependencies":{"@nestjs/common":"^10.0.0 || ^11.0.0","@nestjs/core":"^10.0.0 || ^11.0.0","rxjs":"^7.0.0 || ^8.0.0"},"devDependencies":{"@nestjs/common":"^10.0.0","@nestjs/core":"^10.0.0","@nestjs/testing":"^10.0.0","@types/jest":"^29.0.0","@types/node":"^20.0.0","@typescript-eslint/eslint-plugin":"^6.0.0","@typescript-eslint/parser":"^6.0.0","eslint":"^8.0.0","jest":"^29.0.0","reflect-metadata":"^0.1.13","rxjs":"^7.0.0","ts-jest":"^29.0.0","typescript":"^5.0.0"},"dependencies":{"axios":"^1.6.0"},"repository":{"type":"git","url":"git+https://github.com/evidenze/9japay-nestjs.git"},"bugs":{"url":"https://github.com/evidenze/9japay-nestjs/issues"},"homepage":"https://github.com/evidenze/9japay-nestjs#readme","gitHead":"c2ef59cc5e9c6546f5cf357d9f2f5a2a1ed242b0","_id":"9japay-nestjs@1.1.0","_nodeVersion":"24.11.0","_npmVersion":"11.6.1","dist":{"integrity":"sha512-Rx+y8uR9wJyso1XXXLQORDLFUqa4FXX/Ydn4Gv1Y2Ay7wN33B6tHA2DvaBP5gN5sBQR5PISdrIZovM7DhYLhkg==","shasum":"d3cff3640ef70c227fdbcca17810c5bdc1718895","tarball":"https://registry.npmjs.org/9japay-nestjs/-/9japay-nestjs-1.1.0.tgz","fileCount":27,"unpackedSize":69945,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIGwdWTf2JlXKXXuW0MtsWyTKHZDhjKn7K3hyBU0WcHwAAiBJCM6HkIcpbN82nDmhK9ittKkN/yF2Mk3Hb6q8K4gjig=="}]},"_npmUser":{"name":"evidenze","email":"evidenzeekanem@gmail.com"},"directories":{},"maintainers":[{"name":"evidenze","email":"evidenzeekanem@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/9japay-nestjs_1.1.0_1764149105551_0.8443974288783855"},"_hasShrinkwrap":false}},"time":{"created":"2025-09-06T09:50:26.509Z","modified":"2025-11-26T09:25:05.918Z","1.0.0":"2025-09-06T09:50:26.732Z","1.0.1":"2025-09-06T10:10:16.571Z","1.0.2":"2025-09-06T10:32:45.135Z","1.0.3":"2025-09-06T10:57:57.177Z","1.0.4":"2025-09-06T13:33:39.223Z","1.0.5":"2025-11-26T09:05:10.879Z","1.1.0":"2025-11-26T09:25:05.734Z"},"bugs":{"url":"https://github.com/evidenze/9japay-nestjs/issues"},"author":{"name":"Essien Ekanem"},"license":"MIT","homepage":"https://github.com/evidenze/9japay-nestjs#readme","keywords":["9japay","nestjs","virtual-accounts","payments","api","sdk"],"repository":{"type":"git","url":"git+https://github.com/evidenze/9japay-nestjs.git"},"description":"A comprehensive NestJS SDK for integrating with 9jaPay Virtual Account APIs","maintainers":[{"name":"evidenze","email":"evidenzeekanem@gmail.com"}],"readme":"# 9jaPay NestJS SDK\n\nA comprehensive NestJS SDK for integrating with 9jaPay Virtual Account APIs. This SDK provides a type-safe, easy-to-use interface for all 9jaPay API endpoints including virtual account management, transfers, and transaction handling.\n\n## Features\n\n- 🚀 **Full API Coverage**: Complete implementation of all 9jaPay API endpoints\n- 🛡️ **Type Safety**: Full TypeScript support with comprehensive type definitions\n- 🏗️ **NestJS Integration**: Native NestJS module with dependency injection support\n- 🌍 **Multi-Environment**: Support for both sandbox and production environments\n- 📚 **Well Documented**: Comprehensive documentation and examples\n- ✅ **Tested**: Unit tests included\n- 🔧 **Configurable**: Flexible configuration options\n\n## Installation\n\n```bash\nnpm install 9japay-nestjs\n# or\nyarn add 9japay-nestjs\n```\n\n## Quick Start\n\n### 1. Module Registration\n\n```typescript\nimport { Module } from '@nestjs/common';\nimport { NineJaPayModule } from '9japay-nestjs';\n\n@Module({\n  imports: [\n    NineJaPayModule.register({\n      apiKey: 'your-api-key',\n      secretKey: 'your-secret-key',\n      environment: 'sandbox', // or 'production'\n    }),\n  ],\n})\nexport class AppModule {}\n```\n\n### 2. Async Configuration\n\n```typescript\nimport { Module } from '@nestjs/common';\nimport { ConfigModule, ConfigService } from '@nestjs/config';\nimport { NineJaPayModule } from '9japay-nestjs';\n\n@Module({\n  imports: [\n    ConfigModule.forRoot(),\n    NineJaPayModule.registerAsync({\n      useFactory: (configService: ConfigService) => ({\n        apiKey: configService.get('NINE_JA_PAY_API_KEY'),\n        secretKey: configService.get('NINE_JA_PAY_SECRET_KEY'),\n        environment: configService.get('NINE_JA_PAY_ENVIRONMENT'),\n      }),\n      inject: [ConfigService],\n    }),\n  ],\n})\nexport class AppModule {}\n```\n\n### 3. Using the Service\n\n```typescript\nimport { Injectable } from '@nestjs/common';\nimport { NineJaPayService } from '9japay-nestjs';\n\n@Injectable()\nexport class PaymentService {\n  constructor(private readonly nineJaPayService: NineJaPayService) {}\n\n  async createVirtualAccount(accountName: string) {\n    const response = await this.nineJaPayService.createPermanentVirtualAccount({\n      requestReference: `ref-${Date.now()}`,\n      accountName,\n      autoPayoutEnabled: true,\n    });\n\n    return response;\n  }\n\n  async makeTransfer(transferData: any) {\n    // First, validate the recipient account\n    const nameEnquiry = await this.nineJaPayService.nameEnquiry({\n      bankCode: transferData.bankCode,\n      accountNumber: transferData.accountNumber,\n    });\n\n    if (nameEnquiry.status === 'SUCCESS') {\n      // Proceed with transfer\n      const transfer = await this.nineJaPayService.transfer({\n        paymentReference: `pay-${Date.now()}`,\n        senderAccountNumber: transferData.senderAccountNumber,\n        senderAccountName: transferData.senderAccountName,\n        recipientAccountNumber: transferData.accountNumber,\n        recipientAccountName: nameEnquiry.data.accountName,\n        recipientBankCode: transferData.bankCode,\n        amount: transferData.amount.toString(),\n        nameEnquiryReference: nameEnquiry.data.nameEnquiryReference,\n        narration: transferData.narration,\n      });\n\n      return transfer;\n    }\n  }\n}\n```\n\n## API Reference\n\n### Virtual Account Management\n\n#### Permanent Virtual Accounts\n\n```typescript\n// Create permanent virtual account\nawait nineJaPayService.createPermanentVirtualAccount({\n  requestReference: 'unique-ref-123',\n  accountName: 'John Doe Account',\n  autoPayoutEnabled: true,\n});\n\n// Update permanent virtual account\nawait nineJaPayService.updatePermanentVirtualAccount('9000001234', {\n  accountName: 'Updated Account Name',\n  blockStatus: false,\n  autoPayoutEnabled: false,\n});\n\n// Get single permanent virtual account\nawait nineJaPayService.getPermanentVirtualAccount('9000001234');\n\n// Get all permanent virtual accounts\nawait nineJaPayService.getAllPermanentVirtualAccounts({\n  pageSize: 10,\n  pageNumber: 1,\n});\n\n// Close permanent virtual account\nawait nineJaPayService.closePermanentVirtualAccount({\n  requestReference: 'close-ref-123',\n  accountNumber: '9000001234',\n  reasonForClosure: 'Account no longer needed',\n});\n```\n\n#### Transient Virtual Accounts\n\n```typescript\n// Create transient virtual account\nawait nineJaPayService.createTransientVirtualAccount({\n  requestReference: 'temp-ref-123',\n  timeToLive: '3600', // 1 hour in seconds\n  amount: 100000, // Amount in kobo (optional)\n  isSinglePayment: true,\n});\n\n// Update transient virtual account\nawait nineJaPayService.updateTransientVirtualAccount('9000001234', {\n  blockStatus: false,\n});\n\n// Get single transient virtual account\nawait nineJaPayService.getTransientVirtualAccount('9000001234');\n\n// Get all transient virtual accounts\nawait nineJaPayService.getAllTransientVirtualAccounts({\n  pageSize: 10,\n  pageNumber: 1,\n});\n```\n\n#### General Virtual Account Operations\n\n```typescript\n// Get all virtual accounts (both permanent and transient)\nawait nineJaPayService.getAllVirtualAccounts({\n  pageSize: 20,\n  pageNumber: 1,\n});\n\n// Get single virtual account (regardless of type)\nawait nineJaPayService.getVirtualAccount('9000001234');\n\n// Get account balance\nawait nineJaPayService.getAccountBalance('9000001234');\n\n// Get total balance summary\nawait nineJaPayService.getTotalBalanceSummary();\n```\n\n### Transfers\n\n```typescript\n// Get list of banks\nconst banks = await nineJaPayService.getBankList();\n\n// Perform name enquiry\nconst nameEnquiry = await nineJaPayService.nameEnquiry({\n  bankCode: '057',\n  accountNumber: '1234567890',\n});\n\n// Transfer from regular account\nawait nineJaPayService.transfer({\n  paymentReference: 'pay-ref-123',\n  senderAccountNumber: '3000001234',\n  senderAccountName: 'Sender Name',\n  recipientAccountNumber: '1234567890',\n  recipientAccountName: 'Recipient Name',\n  recipientBankCode: '057',\n  amount: '100000', // Amount in kobo\n  nameEnquiryReference: nameEnquiry.data.nameEnquiryReference,\n  narration: 'Payment for services',\n});\n\n// Transfer from virtual account\nawait nineJaPayService.transferFromVirtualAccount({\n  // Same parameters as above\n});\n\n// Check transaction status\nawait nineJaPayService.getTransactionStatus('pay-ref-123');\n```\n\n### Transactions\n\n```typescript\n// Get transactions with filters\nawait nineJaPayService.getTransactions({\n  pageSize: 10,\n  pageNumber: 1,\n  accountNumber: '9000001234', // optional\n  startDate: '2024-01-01', // optional\n  endDate: '2024-12-31', // optional\n});\n\n// Get single transaction by ID\nawait nineJaPayService.getTransactionById('transaction-id-123');\n\n// Resend failed notification for a transaction\nawait nineJaPayService.resendNotification({\n  transactionId: 'transaction-id-123',\n});\n\n// Resend all failed notifications for an account\nawait nineJaPayService.resendNotificationsForAccount({\n  accountNumber: '9000001234',\n});\n\n// Resend all failed notifications\nawait nineJaPayService.resendAllNotifications();\n\n// Simulate deposit (sandbox only)\nawait nineJaPayService.simulateDeposit({\n  recipientAccountNumber: '9000001234',\n  amount: '100000',\n  authKey: 'test-auth-key',\n});\n```\n\n## Configuration Options\n\n```typescript\ninterface _9JaPayConfig {\n  apiKey: string;           // Your 9jaPay API key\n  secretKey: string;        // Your 9jaPay secret key\n  environment: 'sandbox' | 'production'; // Environment\n  baseUrl?: string;         // Optional custom base URL\n  rejectUnauthorized?: boolean; // Optional: Set to false for local testing to ignore SSL cert errors (default: true)\n}\n```\n\n### Local Testing Configuration\n\nFor local testing environments where you might encounter SSL certificate issues, you can disable SSL verification:\n\n```typescript\nNineJaPayModule.register({\n  apiKey: 'your-api-key',\n  secretKey: 'your-secret-key',\n  environment: 'sandbox',\n  rejectUnauthorized: false, // Disable SSL verification for local testing\n})\n```\n\n⚠️ **Security Warning**: Only use `rejectUnauthorized: false` in development/testing environments. Never use this in production!\n\n## Environment URLs\n\n- **Sandbox**: `https://test.developer.9japay.com/v1/api`\n- **Production**: `https://developer.9japay.com/v1/api`\n\n## Error Handling\n\nThe SDK provides comprehensive error handling with two types of exceptions:\n\n### 1. NineJaPayException (Recommended)\n\nFor 9jaPay API errors, the SDK throws `NineJaPayException` which properly maps 9jaPay status codes to HTTP status codes:\n\n```typescript\nimport { NineJaPayException } from '9japay-nestjs';\n\ntry {\n  const result = await nineJaPayService.createPermanentVirtualAccount({\n    requestReference: 'duplicate-ref',\n    accountName: 'Test Account',\n    autoPayoutEnabled: true,\n  });\n} catch (error) {\n  if (error instanceof NineJaPayException) {\n    console.log('9jaPay Status Code:', error.nineJaPayStatusCode); // \"26\"\n    console.log('HTTP Status Code:', error.getStatus()); // 409\n    console.log('Message:', error.message); // \"Duplicate record found.\"\n    console.log('Full Response:', error.nineJaPayResponse);\n    \n    // Handle specific 9jaPay errors\n    switch (error.nineJaPayStatusCode) {\n      case '26':\n        // Handle duplicate record\n        console.log('Duplicate record detected');\n        break;\n      case '25':\n        // Handle no record found\n        console.log('Record not found');\n        break;\n      case '09':\n        // Handle validation error\n        console.log('Validation failed');\n        break;\n      default:\n        console.log('Other 9jaPay error');\n    }\n  }\n}\n```\n\n### 2. Standard _9JaPayError\n\nFor network errors or other issues:\n\n```typescript\ntry {\n  const result = await nineJaPayService.createPermanentVirtualAccount({\n    requestReference: 'ref-123',\n    accountName: 'Test Account',\n    autoPayoutEnabled: true,\n  });\n} catch (error) {\n  console.error('Error:', error.message);\n  console.error('9jaPay Status Code:', error.nineJaPayStatusCode);\n  console.error('HTTP Status Code:', error.httpStatusCode);\n  console.error('Response:', error.response);\n}\n```\n\n### Error Response Structure\n\nWhen using `NineJaPayException`, the error response structure is:\n\n```typescript\n{\n  statusCode: 409,              // HTTP status code (for proper REST API responses)\n  message: \"Duplicate record found.\",\n  nineJaPayStatusCode: \"26\",    // 9jaPay's business logic status code\n  nineJaPayResponse: {          // Full 9jaPay response\n    status: \"FAILED\",\n    message: \"Duplicate record found.\",\n    statusCode: \"26\"\n  }\n}\n```\n\n## Response Codes\n\nThe SDK maps 9jaPay status codes to appropriate HTTP status codes:\n\n| 9jaPay Code | Description | HTTP Status | HTTP Code |\n|-------------|-------------|-------------|-----------|\n| 00 | Success | OK | 200 |\n| 01 | Processing | Accepted | 202 |\n| 06 | General error | Internal Server Error | 500 |\n| 09 | Validation error | Bad Request | 400 |\n| 25 | No record found | Not Found | 404 |\n| 26 | Duplicate record | Conflict | 409 |\n\n### Status Code Usage\n\n- **9jaPay Code**: Used for business logic and specific error handling\n- **HTTP Status**: Used for REST API responses and proper HTTP semantics\n- **Both codes are available** in the `NineJaPayException` for comprehensive error handling\n\n## Development\n\n### Building the Package\n\n```bash\nnpm run build\n```\n\n### Running Tests\n\n```bash\nnpm test\nnpm run test:watch\nnpm run test:coverage\n```\n\n### Linting\n\n```bash\nnpm run lint\nnpm run lint:fix\n```\n\n## Contributing\n\n1. Fork the repository\n2. Create a feature branch\n3. Make your changes\n4. Add tests\n5. Run the test suite\n6. Submit a pull request\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n## Support\n\nFor support and questions:\n\n- Create an issue on GitHub\n- Check the [9jaPay API Documentation](https://docs.9japay.com/docs/intro)\n\n## Changelog\n\n### v1.0.2\n- **Enhanced Error Handling**: Added `NineJaPayException` class with proper HTTP status code mapping\n- **Fixed Status Code Conflict**: Separated 9jaPay status codes from HTTP status codes to prevent `ERR_HTTP_INVALID_STATUS_CODE`\n- **Improved Error Structure**: Better error response format with both business logic and HTTP codes\n- **Status Code Mapping**: Automatic mapping of 9jaPay codes (e.g., \"26\") to appropriate HTTP codes (e.g., 409)\n\n### v1.0.1\n- **Global Module**: Made module global to resolve dependency injection issues\n- **Fix**: Service now available throughout application without additional imports\n\n### v1.0.0\n- Initial release\n- Complete API coverage\n- TypeScript support\n- NestJS integration\n- Unit tests\n- Comprehensive documentation\n","readmeFilename":"README.md"}