@grtsnx/payba3 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (118) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/CODE_OF_CONDUCT.md +24 -0
  3. package/CONTRIBUTING.md +149 -0
  4. package/LICENSE +21 -0
  5. package/README.md +282 -0
  6. package/SECURITY.md +53 -0
  7. package/SUPPORT.md +27 -0
  8. package/assets/payba3-logo.svg +17 -0
  9. package/dist/index.d.ts +18 -0
  10. package/dist/index.js +24 -0
  11. package/dist/lib/lib.module.d.ts +2 -0
  12. package/dist/lib/lib.module.js +37 -0
  13. package/dist/lib/lib.module.js.map +1 -0
  14. package/dist/lib/monnify/config/monnify.helper.d.ts +24 -0
  15. package/dist/lib/monnify/config/monnify.helper.js +234 -0
  16. package/dist/lib/monnify/config/monnify.helper.js.map +1 -0
  17. package/dist/lib/monnify/config/monnify.types.d.ts +93 -0
  18. package/dist/lib/monnify/config/monnify.types.js +3 -0
  19. package/dist/lib/monnify/config/monnify.types.js.map +1 -0
  20. package/dist/lib/monnify/monnify.module.d.ts +2 -0
  21. package/dist/lib/monnify/monnify.module.js +22 -0
  22. package/dist/lib/monnify/monnify.module.js.map +1 -0
  23. package/dist/lib/monnify/monnify.service.d.ts +19 -0
  24. package/dist/lib/monnify/monnify.service.js +113 -0
  25. package/dist/lib/monnify/monnify.service.js.map +1 -0
  26. package/dist/lib/mono/config/mono.helper.d.ts +11 -0
  27. package/dist/lib/mono/config/mono.helper.js +78 -0
  28. package/dist/lib/mono/config/mono.helper.js.map +1 -0
  29. package/dist/lib/mono/config/mono.types.d.ts +48 -0
  30. package/dist/lib/mono/config/mono.types.js +3 -0
  31. package/dist/lib/mono/config/mono.types.js.map +1 -0
  32. package/dist/lib/mono/mono.module.d.ts +2 -0
  33. package/dist/lib/mono/mono.module.js +22 -0
  34. package/dist/lib/mono/mono.module.js.map +1 -0
  35. package/dist/lib/mono/mono.service.d.ts +15 -0
  36. package/dist/lib/mono/mono.service.js +77 -0
  37. package/dist/lib/mono/mono.service.js.map +1 -0
  38. package/dist/lib/opay/config/opay.helper.d.ts +17 -0
  39. package/dist/lib/opay/config/opay.helper.js +175 -0
  40. package/dist/lib/opay/config/opay.helper.js.map +1 -0
  41. package/dist/lib/opay/config/opay.types.d.ts +73 -0
  42. package/dist/lib/opay/config/opay.types.js +3 -0
  43. package/dist/lib/opay/config/opay.types.js.map +1 -0
  44. package/dist/lib/opay/opay.module.d.ts +2 -0
  45. package/dist/lib/opay/opay.module.js +22 -0
  46. package/dist/lib/opay/opay.module.js.map +1 -0
  47. package/dist/lib/opay/opay.service.d.ts +17 -0
  48. package/dist/lib/opay/opay.service.js +104 -0
  49. package/dist/lib/opay/opay.service.js.map +1 -0
  50. package/dist/lib/payba3.service.d.ts +16 -0
  51. package/dist/lib/payba3.service.js +59 -0
  52. package/dist/lib/payba3.service.js.map +1 -0
  53. package/dist/lib/payba3.types.d.ts +18 -0
  54. package/dist/lib/payba3.types.js +13 -0
  55. package/dist/lib/payba3.types.js.map +1 -0
  56. package/dist/lib/paystack/config/paystack.helper.d.ts +15 -0
  57. package/dist/lib/paystack/config/paystack.helper.js +134 -0
  58. package/dist/lib/paystack/config/paystack.helper.js.map +1 -0
  59. package/dist/lib/paystack/config/paystack.types.d.ts +92 -0
  60. package/dist/lib/paystack/config/paystack.types.js +3 -0
  61. package/dist/lib/paystack/config/paystack.types.js.map +1 -0
  62. package/dist/lib/paystack/paystack.module.d.ts +2 -0
  63. package/dist/lib/paystack/paystack.module.js +22 -0
  64. package/dist/lib/paystack/paystack.module.js.map +1 -0
  65. package/dist/lib/paystack/paystack.service.d.ts +33 -0
  66. package/dist/lib/paystack/paystack.service.js +328 -0
  67. package/dist/lib/paystack/paystack.service.js.map +1 -0
  68. package/dist/lib/qoreid/config/qoreid.helper.d.ts +19 -0
  69. package/dist/lib/qoreid/config/qoreid.helper.js +132 -0
  70. package/dist/lib/qoreid/config/qoreid.helper.js.map +1 -0
  71. package/dist/lib/qoreid/config/qoreid.types.d.ts +35 -0
  72. package/dist/lib/qoreid/config/qoreid.types.js +3 -0
  73. package/dist/lib/qoreid/config/qoreid.types.js.map +1 -0
  74. package/dist/lib/qoreid/qoreid.module.d.ts +2 -0
  75. package/dist/lib/qoreid/qoreid.module.js +22 -0
  76. package/dist/lib/qoreid/qoreid.module.js.map +1 -0
  77. package/dist/lib/qoreid/qoreid.service.d.ts +10 -0
  78. package/dist/lib/qoreid/qoreid.service.js +63 -0
  79. package/dist/lib/qoreid/qoreid.service.js.map +1 -0
  80. package/dist/lib/safehaven/config/safe.helper.d.ts +16 -0
  81. package/dist/lib/safehaven/config/safe.helper.js +136 -0
  82. package/dist/lib/safehaven/config/safe.helper.js.map +1 -0
  83. package/dist/lib/safehaven/config/safe.types.d.ts +50 -0
  84. package/dist/lib/safehaven/config/safe.types.js +3 -0
  85. package/dist/lib/safehaven/config/safe.types.js.map +1 -0
  86. package/dist/lib/safehaven/safe.module.d.ts +2 -0
  87. package/dist/lib/safehaven/safe.module.js +22 -0
  88. package/dist/lib/safehaven/safe.module.js.map +1 -0
  89. package/dist/lib/safehaven/safe.service.d.ts +14 -0
  90. package/dist/lib/safehaven/safe.service.js +77 -0
  91. package/dist/lib/safehaven/safe.service.js.map +1 -0
  92. package/dist/lib/seerbit/config/seerbit.helper.d.ts +11 -0
  93. package/dist/lib/seerbit/config/seerbit.helper.js +88 -0
  94. package/dist/lib/seerbit/config/seerbit.helper.js.map +1 -0
  95. package/dist/lib/seerbit/config/seerbit.types.d.ts +49 -0
  96. package/dist/lib/seerbit/config/seerbit.types.js +3 -0
  97. package/dist/lib/seerbit/config/seerbit.types.js.map +1 -0
  98. package/dist/lib/seerbit/seerbit.module.d.ts +2 -0
  99. package/dist/lib/seerbit/seerbit.module.js +22 -0
  100. package/dist/lib/seerbit/seerbit.module.js.map +1 -0
  101. package/dist/lib/seerbit/seerbit.service.d.ts +11 -0
  102. package/dist/lib/seerbit/seerbit.service.js +83 -0
  103. package/dist/lib/seerbit/seerbit.service.js.map +1 -0
  104. package/dist/lib/shared/index.d.ts +1 -0
  105. package/dist/lib/shared/index.js +18 -0
  106. package/dist/lib/shared/index.js.map +1 -0
  107. package/dist/lib/shared/response.helper.d.ts +15 -0
  108. package/dist/lib/shared/response.helper.js +39 -0
  109. package/dist/lib/shared/response.helper.js.map +1 -0
  110. package/llms.txt +25 -0
  111. package/package.json +169 -0
  112. package/src/lib/monnify/monnify_llm.txt +429 -0
  113. package/src/lib/mono/mono_llm.txt +372 -0
  114. package/src/lib/opay/opay_llm.txt +1022 -0
  115. package/src/lib/paystack/paystack_llm.txt +382 -0
  116. package/src/lib/qoreid/qoreid_llm.txt +68 -0
  117. package/src/lib/safehaven/safehaven_llm.txt +77 -0
  118. package/src/lib/seerbit/seerbit_llm.txt +61 -0
@@ -0,0 +1,48 @@
1
+ export type MonoEnvironment = 'sandbox' | 'live';
2
+ export type MonoHttpMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';
3
+ export type MonoRequestOptions = {
4
+ method?: MonoHttpMethod;
5
+ body?: unknown;
6
+ };
7
+ export type MonoRequestContext = {
8
+ baseUrl: string;
9
+ secretKey: string;
10
+ endpoint: string;
11
+ options?: MonoRequestOptions;
12
+ };
13
+ export type MonoResponse<T = unknown> = {
14
+ status?: string;
15
+ message?: string;
16
+ data?: T;
17
+ [key: string]: unknown;
18
+ };
19
+ export type MonoInitiateAccountLinkingInput = {
20
+ customer?: Record<string, unknown>;
21
+ scope?: string;
22
+ reference?: string;
23
+ redirect_url?: string;
24
+ meta?: Record<string, unknown>;
25
+ };
26
+ export type MonoInitiatePaymentInput = {
27
+ amount: number;
28
+ type?: string;
29
+ description?: string;
30
+ reference?: string;
31
+ customer?: Record<string, unknown>;
32
+ redirect_url?: string;
33
+ meta?: Record<string, unknown>;
34
+ [key: string]: unknown;
35
+ };
36
+ export type MonoBvnLookupInput = {
37
+ bvn: string;
38
+ scope?: string;
39
+ reference?: string;
40
+ redirect_url?: string;
41
+ [key: string]: unknown;
42
+ };
43
+ export type MonoDisbursementSourceAccountInput = {
44
+ account_number: string;
45
+ bank_code: string;
46
+ account_name?: string;
47
+ [key: string]: unknown;
48
+ };
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=mono.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mono.types.js","sourceRoot":"","sources":["../../../../src/lib/mono/config/mono.types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export declare class MonoModule {
2
+ }
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.MonoModule = void 0;
10
+ const common_1 = require("@nestjs/common");
11
+ const mono_service_1 = require("./mono.service");
12
+ let MonoModule = class MonoModule {
13
+ };
14
+ exports.MonoModule = MonoModule;
15
+ exports.MonoModule = MonoModule = __decorate([
16
+ (0, common_1.Global)(),
17
+ (0, common_1.Module)({
18
+ providers: [mono_service_1.MonoService],
19
+ exports: [mono_service_1.MonoService],
20
+ })
21
+ ], MonoModule);
22
+ //# sourceMappingURL=mono.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mono.module.js","sourceRoot":"","sources":["../../../src/lib/mono/mono.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAgD;AAChD,iDAA6C;AAOtC,IAAM,UAAU,GAAhB,MAAM,UAAU;CAAG,CAAA;AAAb,gCAAU;qBAAV,UAAU;IALtB,IAAA,eAAM,GAAE;IACR,IAAA,eAAM,EAAC;QACN,SAAS,EAAE,CAAC,0BAAW,CAAC;QACxB,OAAO,EAAE,CAAC,0BAAW,CAAC;KACvB,CAAC;GACW,UAAU,CAAG"}
@@ -0,0 +1,15 @@
1
+ import type { MonoBvnLookupInput, MonoDisbursementSourceAccountInput, MonoInitiateAccountLinkingInput, MonoInitiatePaymentInput, MonoRequestOptions, MonoResponse } from './config/mono.types';
2
+ export declare class MonoService {
3
+ private readonly baseUrl;
4
+ private readonly secretKey;
5
+ constructor();
6
+ request<T = unknown>(endpoint: string, options?: MonoRequestOptions): Promise<T>;
7
+ initiateAccountLinking(input: MonoInitiateAccountLinkingInput): Promise<MonoResponse>;
8
+ exchangeToken(code: string): Promise<MonoResponse>;
9
+ getAccount(accountId: string): Promise<MonoResponse>;
10
+ getTransactions(accountId: string, query?: Record<string, string | number | boolean | undefined>): Promise<MonoResponse>;
11
+ initiatePayment(input: MonoInitiatePaymentInput): Promise<MonoResponse>;
12
+ verifyPayment(reference: string): Promise<MonoResponse>;
13
+ createDisbursementSourceAccount(input: MonoDisbursementSourceAccountInput): Promise<MonoResponse>;
14
+ initiateBvnLookup(input: MonoBvnLookupInput): Promise<MonoResponse>;
15
+ }
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.MonoService = void 0;
13
+ const common_1 = require("@nestjs/common");
14
+ const mono_helper_1 = require("./config/mono.helper");
15
+ let MonoService = class MonoService {
16
+ baseUrl;
17
+ secretKey;
18
+ constructor() {
19
+ const environment = (process.env.MONO_ENVIRONMENT ??
20
+ 'sandbox');
21
+ this.baseUrl = (0, mono_helper_1.getMonoBaseUrl)(process.env.MONO_BASE_URL);
22
+ this.secretKey = (0, mono_helper_1.getMonoSecretKey)(environment) ?? '';
23
+ }
24
+ async request(endpoint, options) {
25
+ return (0, mono_helper_1.requestMono)({
26
+ baseUrl: this.baseUrl,
27
+ secretKey: this.secretKey,
28
+ endpoint,
29
+ options,
30
+ });
31
+ }
32
+ async initiateAccountLinking(input) {
33
+ return this.request('/v2/accounts/initiate', {
34
+ method: 'POST',
35
+ body: input,
36
+ });
37
+ }
38
+ async exchangeToken(code) {
39
+ return this.request('/v2/accounts/auth', {
40
+ method: 'POST',
41
+ body: { code },
42
+ });
43
+ }
44
+ async getAccount(accountId) {
45
+ return this.request(`/v2/accounts/${encodeURIComponent(accountId)}`);
46
+ }
47
+ async getTransactions(accountId, query = {}) {
48
+ return this.request(`/v2/accounts/${encodeURIComponent(accountId)}/transactions${(0, mono_helper_1.buildMonoQuery)(query)}`);
49
+ }
50
+ async initiatePayment(input) {
51
+ return this.request('/v2/payments/initiate', {
52
+ method: 'POST',
53
+ body: input,
54
+ });
55
+ }
56
+ async verifyPayment(reference) {
57
+ return this.request(`/v2/payments/verify/${encodeURIComponent(reference)}`);
58
+ }
59
+ async createDisbursementSourceAccount(input) {
60
+ return this.request('/v3/payments/disburse/source-accounts', {
61
+ method: 'POST',
62
+ body: input,
63
+ });
64
+ }
65
+ async initiateBvnLookup(input) {
66
+ return this.request('/v2/lookup/bvn/initiate', {
67
+ method: 'POST',
68
+ body: input,
69
+ });
70
+ }
71
+ };
72
+ exports.MonoService = MonoService;
73
+ exports.MonoService = MonoService = __decorate([
74
+ (0, common_1.Injectable)(),
75
+ __metadata("design:paramtypes", [])
76
+ ], MonoService);
77
+ //# sourceMappingURL=mono.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mono.service.js","sourceRoot":"","sources":["../../../src/lib/mono/mono.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;AAC5C,sDAK8B;AAYvB,IAAM,WAAW,GAAjB,MAAM,WAAW;IACL,OAAO,CAAS;IAChB,SAAS,CAAS;IAEnC;QACE,MAAM,WAAW,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB;YAC/C,SAAS,CAAoB,CAAC;QAEhC,IAAI,CAAC,OAAO,GAAG,IAAA,4BAAc,EAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QACzD,IAAI,CAAC,SAAS,GAAG,IAAA,8BAAgB,EAAC,WAAW,CAAC,IAAI,EAAE,CAAC;IACvD,CAAC;IAED,KAAK,CAAC,OAAO,CACX,QAAgB,EAChB,OAA4B;QAE5B,OAAO,IAAA,yBAAW,EAAI;YACpB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,QAAQ;YACR,OAAO;SACR,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,sBAAsB,CAC1B,KAAsC;QAEtC,OAAO,IAAI,CAAC,OAAO,CAAC,uBAAuB,EAAE;YAC3C,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,KAAK;SACZ,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,IAAY;QAC9B,OAAO,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE;YACvC,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,EAAE,IAAI,EAAE;SACf,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,SAAiB;QAChC,OAAO,IAAI,CAAC,OAAO,CAAC,gBAAgB,kBAAkB,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IACvE,CAAC;IAED,KAAK,CAAC,eAAe,CACnB,SAAiB,EACjB,QAA+D,EAAE;QAEjE,OAAO,IAAI,CAAC,OAAO,CACjB,gBAAgB,kBAAkB,CAAC,SAAS,CAAC,gBAAgB,IAAA,4BAAc,EAAC,KAAK,CAAC,EAAE,CACrF,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,eAAe,CACnB,KAA+B;QAE/B,OAAO,IAAI,CAAC,OAAO,CAAC,uBAAuB,EAAE;YAC3C,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,KAAK;SACZ,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,SAAiB;QACnC,OAAO,IAAI,CAAC,OAAO,CAAC,uBAAuB,kBAAkB,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IAC9E,CAAC;IAED,KAAK,CAAC,+BAA+B,CACnC,KAAyC;QAEzC,OAAO,IAAI,CAAC,OAAO,CAAC,uCAAuC,EAAE;YAC3D,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,KAAK;SACZ,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,KAAyB;QAC/C,OAAO,IAAI,CAAC,OAAO,CAAC,yBAAyB,EAAE;YAC7C,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,KAAK;SACZ,CAAC,CAAC;IACL,CAAC;CACF,CAAA;AAjFY,kCAAW;sBAAX,WAAW;IADvB,IAAA,mBAAU,GAAE;;GACA,WAAW,CAiFvB"}
@@ -0,0 +1,17 @@
1
+ import type { OPayBaseUrls, OPayCredentials, OPayEnvironment, OPayRequestContext, OPayRequestOptions, OPayResponse } from './opay.types';
2
+ export declare const OPAY_BASE_URLS: OPayBaseUrls;
3
+ export declare const getOPayBaseUrl: (environment: OPayEnvironment, baseUrlOverride?: string) => string;
4
+ export declare const getOPayCredentials: (environment: OPayEnvironment) => OPayCredentials;
5
+ export declare const assertOPayCredentials: (credentials: OPayCredentials, authMode: OPayRequestOptions["authMode"]) => void;
6
+ export declare const sortObjectKeys: (value: unknown) => unknown;
7
+ export declare const stringifyOPayPayload: (body: unknown) => string;
8
+ export declare const createOPaySignature: (body: unknown, secretKey: string) => string;
9
+ export declare const stringifyOPayCallbackPayload: (body: unknown) => string | Buffer;
10
+ export declare const createOPayCallbackSignature: (body: unknown, secretKey: string) => string;
11
+ export declare const buildOPayHeaders: (credentials: OPayCredentials, options: OPayRequestOptions) => Record<string, string>;
12
+ export declare const buildOPayRequestInit: (credentials: OPayCredentials, options: OPayRequestOptions) => RequestInit;
13
+ export declare const parseOPayResponse: (response: Response) => Promise<unknown>;
14
+ export declare const isOPayResponse: (value: unknown) => value is OPayResponse;
15
+ export declare const getOPayErrorMessage: (error: unknown) => string;
16
+ export declare const requestOPay: <T = unknown>({ baseUrl, credentials, endpoint, options, }: OPayRequestContext) => Promise<T>;
17
+ export declare const verifyOPayCallbackSignature: (body: unknown, signature: string, secretKey: string) => boolean;
@@ -0,0 +1,175 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.verifyOPayCallbackSignature = exports.requestOPay = exports.getOPayErrorMessage = exports.isOPayResponse = exports.parseOPayResponse = exports.buildOPayRequestInit = exports.buildOPayHeaders = exports.createOPayCallbackSignature = exports.stringifyOPayCallbackPayload = exports.createOPaySignature = exports.stringifyOPayPayload = exports.sortObjectKeys = exports.assertOPayCredentials = exports.getOPayCredentials = exports.getOPayBaseUrl = exports.OPAY_BASE_URLS = void 0;
37
+ const crypto = __importStar(require("crypto"));
38
+ const common_1 = require("@nestjs/common");
39
+ const response_helper_1 = require("../../shared/response.helper");
40
+ exports.OPAY_BASE_URLS = {
41
+ sandbox: 'https://testapi.opaycheckout.com',
42
+ live: 'https://liveapi.opaycheckout.com',
43
+ };
44
+ const getOPayBaseUrl = (environment, baseUrlOverride) => (baseUrlOverride ?? exports.OPAY_BASE_URLS[environment]).replace(/\/+$/, '');
45
+ exports.getOPayBaseUrl = getOPayBaseUrl;
46
+ const getOPayCredentials = (environment) => ({
47
+ merchantId: (environment === 'live'
48
+ ? process.env.OPAY_LIVE_MERCHANT_ID
49
+ : process.env.OPAY_MERCHANT_ID)?.trim() ?? '',
50
+ publicKey: (environment === 'live'
51
+ ? process.env.OPAY_LIVE_PUBLIC_KEY
52
+ : process.env.OPAY_PUBLIC_KEY)?.trim() ?? '',
53
+ secretKey: (environment === 'live'
54
+ ? process.env.OPAY_LIVE_SECRET_KEY
55
+ : process.env.OPAY_SECRET_KEY)?.trim() ?? '',
56
+ });
57
+ exports.getOPayCredentials = getOPayCredentials;
58
+ const assertOPayCredentials = (credentials, authMode) => {
59
+ if (!credentials.merchantId) {
60
+ throw new common_1.InternalServerErrorException('OPAY_MERCHANT_ID is not configured');
61
+ }
62
+ if (authMode === 'publicKey' && !credentials.publicKey) {
63
+ throw new common_1.InternalServerErrorException('OPAY_PUBLIC_KEY is not configured');
64
+ }
65
+ if (authMode === 'signature' && !credentials.secretKey) {
66
+ throw new common_1.InternalServerErrorException('OPAY_SECRET_KEY is not configured');
67
+ }
68
+ };
69
+ exports.assertOPayCredentials = assertOPayCredentials;
70
+ const sortObjectKeys = (value) => {
71
+ if (Array.isArray(value)) {
72
+ return value.map(exports.sortObjectKeys);
73
+ }
74
+ if (typeof value === 'object' && value !== null) {
75
+ return Object.keys(value)
76
+ .sort()
77
+ .reduce((acc, key) => {
78
+ acc[key] = (0, exports.sortObjectKeys)(value[key]);
79
+ return acc;
80
+ }, {});
81
+ }
82
+ return value;
83
+ };
84
+ exports.sortObjectKeys = sortObjectKeys;
85
+ const stringifyOPayPayload = (body) => JSON.stringify((0, exports.sortObjectKeys)(body ?? {}));
86
+ exports.stringifyOPayPayload = stringifyOPayPayload;
87
+ const createOPaySignature = (body, secretKey) => crypto
88
+ .createHmac('sha512', secretKey)
89
+ .update((0, exports.stringifyOPayPayload)(body))
90
+ .digest('hex');
91
+ exports.createOPaySignature = createOPaySignature;
92
+ const stringifyOPayCallbackPayload = (body) => {
93
+ if (typeof body === 'string' || Buffer.isBuffer(body)) {
94
+ return body;
95
+ }
96
+ return (0, exports.stringifyOPayPayload)(body);
97
+ };
98
+ exports.stringifyOPayCallbackPayload = stringifyOPayCallbackPayload;
99
+ const createOPayCallbackSignature = (body, secretKey) => crypto
100
+ .createHmac('sha3-512', secretKey)
101
+ .update((0, exports.stringifyOPayCallbackPayload)(body))
102
+ .digest('hex');
103
+ exports.createOPayCallbackSignature = createOPayCallbackSignature;
104
+ const buildOPayHeaders = (credentials, options) => {
105
+ const token = options.authMode === 'publicKey'
106
+ ? credentials.publicKey
107
+ : (0, exports.createOPaySignature)(options.body, credentials.secretKey);
108
+ return {
109
+ 'Content-Type': 'application/json',
110
+ Authorization: `Bearer ${token}`,
111
+ MerchantId: credentials.merchantId,
112
+ };
113
+ };
114
+ exports.buildOPayHeaders = buildOPayHeaders;
115
+ const buildOPayRequestInit = (credentials, options) => ({
116
+ method: options.method ?? 'POST',
117
+ headers: (0, exports.buildOPayHeaders)(credentials, options),
118
+ body: options.body ? JSON.stringify(options.body) : undefined,
119
+ redirect: 'error',
120
+ });
121
+ exports.buildOPayRequestInit = buildOPayRequestInit;
122
+ const parseOPayResponse = async (response) => {
123
+ const text = await response.text();
124
+ if (!text) {
125
+ return null;
126
+ }
127
+ try {
128
+ return JSON.parse(text);
129
+ }
130
+ catch {
131
+ return text;
132
+ }
133
+ };
134
+ exports.parseOPayResponse = parseOPayResponse;
135
+ const isOPayResponse = (value) => typeof value === 'object' &&
136
+ value !== null &&
137
+ 'code' in value &&
138
+ 'message' in value;
139
+ exports.isOPayResponse = isOPayResponse;
140
+ const getOPayErrorMessage = (error) => error instanceof Error ? error.message : 'OPay request failed';
141
+ exports.getOPayErrorMessage = getOPayErrorMessage;
142
+ const requestOPay = async ({ baseUrl, credentials, endpoint, options, }) => {
143
+ (0, exports.assertOPayCredentials)(credentials, options.authMode);
144
+ let response;
145
+ try {
146
+ response = await fetch(`${baseUrl}${endpoint}`, (0, exports.buildOPayRequestInit)(credentials, options));
147
+ }
148
+ catch (error) {
149
+ throw new common_1.BadGatewayException({
150
+ message: 'OPay request failed',
151
+ data: (0, exports.getOPayErrorMessage)(error),
152
+ });
153
+ }
154
+ const body = await (0, exports.parseOPayResponse)(response);
155
+ if (!response.ok) {
156
+ throw new response_helper_1.handleResponse(common_1.HttpStatus.BAD_REQUEST, 'OPay request failed', body);
157
+ }
158
+ if ((0, exports.isOPayResponse)(body) && body.code !== '00000') {
159
+ throw new response_helper_1.handleResponse(common_1.HttpStatus.BAD_REQUEST, body.message || 'OPay request failed', body);
160
+ }
161
+ return body;
162
+ };
163
+ exports.requestOPay = requestOPay;
164
+ const verifyOPayCallbackSignature = (body, signature, secretKey) => {
165
+ if (!/^[a-f0-9]+$/i.test(signature) || signature.length % 2 !== 0) {
166
+ return false;
167
+ }
168
+ const expected = (0, exports.createOPayCallbackSignature)(body, secretKey);
169
+ const expectedBuffer = Buffer.from(expected, 'hex');
170
+ const receivedBuffer = Buffer.from(signature, 'hex');
171
+ return (expectedBuffer.length === receivedBuffer.length &&
172
+ crypto.timingSafeEqual(expectedBuffer, receivedBuffer));
173
+ };
174
+ exports.verifyOPayCallbackSignature = verifyOPayCallbackSignature;
175
+ //# sourceMappingURL=opay.helper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"opay.helper.js","sourceRoot":"","sources":["../../../../src/lib/opay/config/opay.helper.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,73 @@
1
+ export type OPayEnvironment = 'sandbox' | 'live';
2
+ export type OPayHttpMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';
3
+ export type OPayAuthMode = 'publicKey' | 'signature';
4
+ export type OPayCredentials = {
5
+ merchantId: string;
6
+ publicKey: string;
7
+ secretKey: string;
8
+ };
9
+ export type OPayBaseUrls = Record<OPayEnvironment, string>;
10
+ export type OPayAmount = {
11
+ total: number;
12
+ currency: string;
13
+ };
14
+ export type OPayProduct = {
15
+ name: string;
16
+ description: string;
17
+ };
18
+ export type OPayUserInfo = {
19
+ userId?: string;
20
+ userName?: string;
21
+ userEmail?: string;
22
+ userMobile?: string;
23
+ };
24
+ export type OPayPaymentPayload = {
25
+ reference: string;
26
+ country?: string;
27
+ amount: OPayAmount;
28
+ product?: OPayProduct;
29
+ payMethod?: string;
30
+ returnUrl?: string;
31
+ callbackUrl?: string;
32
+ cancelUrl?: string;
33
+ expireAt?: number;
34
+ userInfo?: OPayUserInfo;
35
+ [key: string]: unknown;
36
+ };
37
+ export type OPayStatusPayload = {
38
+ country?: string;
39
+ reference?: string;
40
+ orderNo?: string;
41
+ };
42
+ export type OPayRefundPayload = {
43
+ reference: string;
44
+ originalReference: string;
45
+ country?: string;
46
+ amount: OPayAmount;
47
+ refundWay?: string;
48
+ callbackUrl?: string;
49
+ refundReason?: string;
50
+ receiver?: Record<string, unknown>;
51
+ };
52
+ export type OPayOtpPayload = {
53
+ orderNo: string;
54
+ country?: string;
55
+ otp?: string;
56
+ pin?: string;
57
+ };
58
+ export type OPayRequestOptions = {
59
+ method?: OPayHttpMethod;
60
+ authMode: OPayAuthMode;
61
+ body?: unknown;
62
+ };
63
+ export type OPayRequestContext = {
64
+ baseUrl: string;
65
+ credentials: OPayCredentials;
66
+ endpoint: string;
67
+ options: OPayRequestOptions;
68
+ };
69
+ export type OPayResponse<T = unknown> = {
70
+ code: string;
71
+ message: string;
72
+ data?: T;
73
+ };
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=opay.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"opay.types.js","sourceRoot":"","sources":["../../../../src/lib/opay/config/opay.types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export declare class OPayModule {
2
+ }
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.OPayModule = void 0;
10
+ const common_1 = require("@nestjs/common");
11
+ const opay_service_1 = require("./opay.service");
12
+ let OPayModule = class OPayModule {
13
+ };
14
+ exports.OPayModule = OPayModule;
15
+ exports.OPayModule = OPayModule = __decorate([
16
+ (0, common_1.Global)(),
17
+ (0, common_1.Module)({
18
+ providers: [opay_service_1.OPayService],
19
+ exports: [opay_service_1.OPayService],
20
+ })
21
+ ], OPayModule);
22
+ //# sourceMappingURL=opay.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"opay.module.js","sourceRoot":"","sources":["../../../src/lib/opay/opay.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAgD;AAChD,iDAA6C;AAOtC,IAAM,UAAU,GAAhB,MAAM,UAAU;CAAG,CAAA;AAAb,gCAAU;qBAAV,UAAU;IALtB,IAAA,eAAM,GAAE;IACR,IAAA,eAAM,EAAC;QACN,SAAS,EAAE,CAAC,0BAAW,CAAC;QACxB,OAAO,EAAE,CAAC,0BAAW,CAAC;KACvB,CAAC;GACW,UAAU,CAAG"}
@@ -0,0 +1,17 @@
1
+ import type { OPayOtpPayload, OPayPaymentPayload, OPayRefundPayload, OPayRequestOptions, OPayResponse, OPayStatusPayload } from './config/opay.types';
2
+ export declare class OPayService {
3
+ private readonly baseUrl;
4
+ private readonly credentials;
5
+ constructor();
6
+ request<T = unknown>(endpoint: string, options: OPayRequestOptions): Promise<T>;
7
+ createCashierPayment(input: OPayPaymentPayload): Promise<OPayResponse>;
8
+ createPayment(input: OPayPaymentPayload): Promise<OPayResponse>;
9
+ queryPaymentStatus(input: OPayStatusPayload): Promise<OPayResponse>;
10
+ cancelPayment(input: OPayStatusPayload): Promise<OPayResponse>;
11
+ createRefund(input: OPayRefundPayload): Promise<OPayResponse>;
12
+ queryRefundStatus(input: OPayStatusPayload): Promise<OPayResponse>;
13
+ sendOtp(input: OPayOtpPayload): Promise<OPayResponse>;
14
+ inputOtp(input: Required<Pick<OPayOtpPayload, 'orderNo' | 'otp'>> & OPayOtpPayload): Promise<OPayResponse>;
15
+ inputPin(input: Required<Pick<OPayOtpPayload, 'orderNo' | 'pin'>> & OPayOtpPayload): Promise<OPayResponse>;
16
+ verifyCallback(body: unknown, signature: string): boolean;
17
+ }
@@ -0,0 +1,104 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.OPayService = void 0;
13
+ const common_1 = require("@nestjs/common");
14
+ const opay_helper_1 = require("./config/opay.helper");
15
+ let OPayService = class OPayService {
16
+ baseUrl;
17
+ credentials;
18
+ constructor() {
19
+ const environment = (process.env.OPAY_ENVIRONMENT ??
20
+ 'sandbox');
21
+ this.baseUrl = (0, opay_helper_1.getOPayBaseUrl)(environment, process.env.OPAY_BASE_URL);
22
+ this.credentials = (0, opay_helper_1.getOPayCredentials)(environment);
23
+ }
24
+ async request(endpoint, options) {
25
+ return (0, opay_helper_1.requestOPay)({
26
+ baseUrl: this.baseUrl,
27
+ credentials: this.credentials,
28
+ endpoint,
29
+ options,
30
+ });
31
+ }
32
+ async createCashierPayment(input) {
33
+ return this.request('/api/v1/international/cashier/create', {
34
+ method: 'POST',
35
+ authMode: 'publicKey',
36
+ body: { country: 'NG', ...input },
37
+ });
38
+ }
39
+ async createPayment(input) {
40
+ return this.request('/api/v1/international/payment/create', {
41
+ method: 'POST',
42
+ authMode: 'signature',
43
+ body: { country: 'NG', ...input },
44
+ });
45
+ }
46
+ async queryPaymentStatus(input) {
47
+ return this.request('/api/v1/international/cashier/status', {
48
+ method: 'POST',
49
+ authMode: 'signature',
50
+ body: { country: 'NG', ...input },
51
+ });
52
+ }
53
+ async cancelPayment(input) {
54
+ return this.request('/api/v1/international/cashier/close', {
55
+ method: 'POST',
56
+ authMode: 'signature',
57
+ body: { country: 'NG', ...input },
58
+ });
59
+ }
60
+ async createRefund(input) {
61
+ return this.request('/api/v1/international/payment/refund/create', {
62
+ method: 'POST',
63
+ authMode: 'signature',
64
+ body: { country: 'NG', refundWay: 'Original', ...input },
65
+ });
66
+ }
67
+ async queryRefundStatus(input) {
68
+ return this.request('/api/v1/international/payment/refund/query', {
69
+ method: 'POST',
70
+ authMode: 'signature',
71
+ body: { country: 'NG', ...input },
72
+ });
73
+ }
74
+ async sendOtp(input) {
75
+ return this.request('/api/v1/international/payment/otp/send', {
76
+ method: 'POST',
77
+ authMode: 'signature',
78
+ body: { country: 'NG', ...input },
79
+ });
80
+ }
81
+ async inputOtp(input) {
82
+ return this.request('/api/v1/international/payment/otp/input', {
83
+ method: 'POST',
84
+ authMode: 'signature',
85
+ body: { country: 'NG', ...input },
86
+ });
87
+ }
88
+ async inputPin(input) {
89
+ return this.request('/api/v1/international/payment/pin/input', {
90
+ method: 'POST',
91
+ authMode: 'signature',
92
+ body: { country: 'NG', ...input },
93
+ });
94
+ }
95
+ verifyCallback(body, signature) {
96
+ return (0, opay_helper_1.verifyOPayCallbackSignature)(body, signature, this.credentials.secretKey);
97
+ }
98
+ };
99
+ exports.OPayService = OPayService;
100
+ exports.OPayService = OPayService = __decorate([
101
+ (0, common_1.Injectable)(),
102
+ __metadata("design:paramtypes", [])
103
+ ], OPayService);
104
+ //# sourceMappingURL=opay.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"opay.service.js","sourceRoot":"","sources":["../../../src/lib/opay/opay.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { MonoService } from './mono/mono.service';
2
+ import { MonnifyService } from './monnify/monnify.service';
3
+ import { OPayService } from './opay/opay.service';
4
+ import { PaystackService } from './paystack/paystack.service';
5
+ import { QoreIDService } from './qoreid/qoreid.service';
6
+ import { SafehavenService } from './safehaven/safe.service';
7
+ import { SeerbitService } from './seerbit/seerbit.service';
8
+ import { type Payba3ChannelMap, type Payba3ChannelName } from './payba3.types';
9
+ export declare class Payba3Service {
10
+ private readonly channels;
11
+ constructor(mono: MonoService, monnify: MonnifyService, opay: OPayService, paystack: PaystackService, qoreid: QoreIDService, safehaven: SafehavenService, seerbit: SeerbitService);
12
+ list(): Payba3ChannelName[];
13
+ has(channel: string): channel is Payba3ChannelName;
14
+ use<T extends Payba3ChannelName>(channel: T): Payba3ChannelMap[T];
15
+ use(channel: string): Payba3ChannelMap[Payba3ChannelName];
16
+ }