nestjs-monobank 1.2.8

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 (250) hide show
  1. package/LICENSE +661 -0
  2. package/README.md +18 -0
  3. package/dist/common/enums/discount.enum.d.ts +24 -0
  4. package/dist/common/enums/discount.enum.js +2 -0
  5. package/dist/common/enums/index.d.ts +1 -0
  6. package/dist/common/enums/index.js +17 -0
  7. package/dist/common/interfaces/common.interface.d.ts +177 -0
  8. package/dist/common/interfaces/common.interface.js +2 -0
  9. package/dist/common/interfaces/index.d.ts +2 -0
  10. package/dist/common/interfaces/index.js +18 -0
  11. package/dist/common/interfaces/monobank-options.interface.d.ts +15 -0
  12. package/dist/common/interfaces/monobank-options.interface.js +4 -0
  13. package/dist/core/config/monobank.constants.d.ts +1 -0
  14. package/dist/core/config/monobank.constants.js +4 -0
  15. package/dist/core/http/monobank.error.d.ts +6 -0
  16. package/dist/core/http/monobank.error.js +13 -0
  17. package/dist/core/http/monobank.http-client.d.ts +16 -0
  18. package/dist/core/http/monobank.http-client.js +66 -0
  19. package/dist/core/http/monobank.interceptor.d.ts +2 -0
  20. package/dist/core/http/monobank.interceptor.js +19 -0
  21. package/dist/index.d.ts +3 -0
  22. package/dist/index.js +19 -0
  23. package/dist/modules/invoice/enums/cancel-status.enum.d.ts +18 -0
  24. package/dist/modules/invoice/enums/cancel-status.enum.js +22 -0
  25. package/dist/modules/invoice/enums/charge-status.enum.d.ts +14 -0
  26. package/dist/modules/invoice/enums/charge-status.enum.js +18 -0
  27. package/dist/modules/invoice/enums/index.d.ts +3 -0
  28. package/dist/modules/invoice/enums/index.js +19 -0
  29. package/dist/modules/invoice/enums/invoice-status.enum.d.ts +34 -0
  30. package/dist/modules/invoice/enums/invoice-status.enum.js +38 -0
  31. package/dist/modules/invoice/interfaces/index.d.ts +2 -0
  32. package/dist/modules/invoice/interfaces/index.js +18 -0
  33. package/dist/modules/invoice/interfaces/requests/create-cancel.request.d.ts +22 -0
  34. package/dist/modules/invoice/interfaces/requests/create-cancel.request.js +2 -0
  35. package/dist/modules/invoice/interfaces/requests/create-charge.request.d.ts +42 -0
  36. package/dist/modules/invoice/interfaces/requests/create-charge.request.js +2 -0
  37. package/dist/modules/invoice/interfaces/requests/create-finalize.request.d.ts +19 -0
  38. package/dist/modules/invoice/interfaces/requests/create-finalize.request.js +2 -0
  39. package/dist/modules/invoice/interfaces/requests/create-invoice.request.d.ts +88 -0
  40. package/dist/modules/invoice/interfaces/requests/create-invoice.request.js +2 -0
  41. package/dist/modules/invoice/interfaces/requests/index.d.ts +4 -0
  42. package/dist/modules/invoice/interfaces/requests/index.js +20 -0
  43. package/dist/modules/invoice/interfaces/responses/cancel.response.d.ts +18 -0
  44. package/dist/modules/invoice/interfaces/responses/cancel.response.js +2 -0
  45. package/dist/modules/invoice/interfaces/responses/charge.response.d.ts +35 -0
  46. package/dist/modules/invoice/interfaces/responses/charge.response.js +2 -0
  47. package/dist/modules/invoice/interfaces/responses/create-cancel.response.d.ts +7 -0
  48. package/dist/modules/invoice/interfaces/responses/create-cancel.response.js +2 -0
  49. package/dist/modules/invoice/interfaces/responses/create-charge.response.d.ts +7 -0
  50. package/dist/modules/invoice/interfaces/responses/create-charge.response.js +2 -0
  51. package/dist/modules/invoice/interfaces/responses/create-finalize.response.d.ts +7 -0
  52. package/dist/modules/invoice/interfaces/responses/create-finalize.response.js +2 -0
  53. package/dist/modules/invoice/interfaces/responses/create-invoice.response.d.ts +7 -0
  54. package/dist/modules/invoice/interfaces/responses/create-invoice.response.js +2 -0
  55. package/dist/modules/invoice/interfaces/responses/finalize.response.d.ts +9 -0
  56. package/dist/modules/invoice/interfaces/responses/finalize.response.js +2 -0
  57. package/dist/modules/invoice/interfaces/responses/fiscal-checks.response.d.ts +42 -0
  58. package/dist/modules/invoice/interfaces/responses/fiscal-checks.response.js +2 -0
  59. package/dist/modules/invoice/interfaces/responses/index.d.ts +9 -0
  60. package/dist/modules/invoice/interfaces/responses/index.js +25 -0
  61. package/dist/modules/invoice/interfaces/responses/invoice-status.response.d.ts +116 -0
  62. package/dist/modules/invoice/interfaces/responses/invoice-status.response.js +2 -0
  63. package/dist/modules/invoice/interfaces/responses/invoice.response.d.ts +13 -0
  64. package/dist/modules/invoice/interfaces/responses/invoice.response.js +2 -0
  65. package/dist/modules/invoice/interfaces/responses/receipt.response.d.ts +6 -0
  66. package/dist/modules/invoice/interfaces/responses/receipt.response.js +2 -0
  67. package/dist/modules/invoice/invoice.module.d.ts +2 -0
  68. package/dist/modules/invoice/invoice.module.js +20 -0
  69. package/dist/modules/invoice/invoice.service.d.ts +154 -0
  70. package/dist/modules/invoice/invoice.service.js +187 -0
  71. package/dist/modules/merchant/interfaces/index.d.ts +1 -0
  72. package/dist/modules/merchant/interfaces/index.js +17 -0
  73. package/dist/modules/merchant/interfaces/responses/index.d.ts +2 -0
  74. package/dist/modules/merchant/interfaces/responses/index.js +18 -0
  75. package/dist/modules/merchant/interfaces/responses/merchant.response.d.ts +17 -0
  76. package/dist/modules/merchant/interfaces/responses/merchant.response.js +2 -0
  77. package/dist/modules/merchant/interfaces/responses/pubkey.response.d.ts +10 -0
  78. package/dist/modules/merchant/interfaces/responses/pubkey.response.js +2 -0
  79. package/dist/modules/merchant/merchant.module.d.ts +2 -0
  80. package/dist/modules/merchant/merchant.module.js +20 -0
  81. package/dist/modules/merchant/merchant.service.d.ts +36 -0
  82. package/dist/modules/merchant/merchant.service.js +58 -0
  83. package/dist/modules/qr/enums/amount-type.enum.d.ts +11 -0
  84. package/dist/modules/qr/enums/amount-type.enum.js +15 -0
  85. package/dist/modules/qr/enums/index.d.ts +1 -0
  86. package/dist/modules/qr/enums/index.js +17 -0
  87. package/dist/modules/qr/interfaces/index.d.ts +0 -0
  88. package/dist/modules/qr/interfaces/index.js +0 -0
  89. package/dist/modules/qr/interfaces/responses/index.d.ts +2 -0
  90. package/dist/modules/qr/interfaces/responses/index.js +18 -0
  91. package/dist/modules/qr/interfaces/responses/list.response.d.ts +8 -0
  92. package/dist/modules/qr/interfaces/responses/list.response.js +2 -0
  93. package/dist/modules/qr/interfaces/responses/qr.response.d.ts +14 -0
  94. package/dist/modules/qr/interfaces/responses/qr.response.js +2 -0
  95. package/dist/modules/qr/qr.module.d.ts +2 -0
  96. package/dist/modules/qr/qr.module.js +20 -0
  97. package/dist/modules/qr/qr.service.d.ts +32 -0
  98. package/dist/modules/qr/qr.service.js +56 -0
  99. package/dist/modules/statement/interfaces/index.d.ts +1 -0
  100. package/dist/modules/statement/interfaces/index.js +17 -0
  101. package/dist/modules/statement/interfaces/responses/index.d.ts +1 -0
  102. package/dist/modules/statement/interfaces/responses/index.js +17 -0
  103. package/dist/modules/statement/interfaces/responses/statement.response.d.ts +99 -0
  104. package/dist/modules/statement/interfaces/responses/statement.response.js +2 -0
  105. package/dist/modules/statement/statement.module.d.ts +2 -0
  106. package/dist/modules/statement/statement.module.js +20 -0
  107. package/dist/modules/statement/statement.service.d.ts +17 -0
  108. package/dist/modules/statement/statement.service.js +38 -0
  109. package/dist/modules/subscription/enums/index.d.ts +2 -0
  110. package/dist/modules/subscription/enums/index.js +18 -0
  111. package/dist/modules/subscription/enums/subscription-status.enum.d.ts +13 -0
  112. package/dist/modules/subscription/enums/subscription-status.enum.js +17 -0
  113. package/dist/modules/subscription/enums/wallet-status.enum.d.ts +17 -0
  114. package/dist/modules/subscription/enums/wallet-status.enum.js +21 -0
  115. package/dist/modules/subscription/interfaces/index.d.ts +2 -0
  116. package/dist/modules/subscription/interfaces/index.js +18 -0
  117. package/dist/modules/subscription/interfaces/requests/client-subscriptions.request.d.ts +26 -0
  118. package/dist/modules/subscription/interfaces/requests/client-subscriptions.request.js +2 -0
  119. package/dist/modules/subscription/interfaces/requests/create-subscription.request.d.ts +32 -0
  120. package/dist/modules/subscription/interfaces/requests/create-subscription.request.js +2 -0
  121. package/dist/modules/subscription/interfaces/requests/edit-subscription.request.d.ts +18 -0
  122. package/dist/modules/subscription/interfaces/requests/edit-subscription.request.js +2 -0
  123. package/dist/modules/subscription/interfaces/requests/history.request.d.ts +15 -0
  124. package/dist/modules/subscription/interfaces/requests/history.request.js +2 -0
  125. package/dist/modules/subscription/interfaces/requests/index.d.ts +4 -0
  126. package/dist/modules/subscription/interfaces/requests/index.js +20 -0
  127. package/dist/modules/subscription/interfaces/responses/client-subscriptions.response.d.ts +27 -0
  128. package/dist/modules/subscription/interfaces/responses/client-subscriptions.response.js +2 -0
  129. package/dist/modules/subscription/interfaces/responses/create-subscription.response.d.ts +5 -0
  130. package/dist/modules/subscription/interfaces/responses/create-subscription.response.js +2 -0
  131. package/dist/modules/subscription/interfaces/responses/history.response.d.ts +9 -0
  132. package/dist/modules/subscription/interfaces/responses/history.response.js +2 -0
  133. package/dist/modules/subscription/interfaces/responses/index.d.ts +5 -0
  134. package/dist/modules/subscription/interfaces/responses/index.js +21 -0
  135. package/dist/modules/subscription/interfaces/responses/subscription-status.response.d.ts +29 -0
  136. package/dist/modules/subscription/interfaces/responses/subscription-status.response.js +2 -0
  137. package/dist/modules/subscription/interfaces/responses/subscription.response.d.ts +9 -0
  138. package/dist/modules/subscription/interfaces/responses/subscription.response.js +2 -0
  139. package/dist/modules/subscription/subscription.module.d.ts +2 -0
  140. package/dist/modules/subscription/subscription.module.js +20 -0
  141. package/dist/modules/subscription/subscription.service.d.ts +91 -0
  142. package/dist/modules/subscription/subscription.service.js +121 -0
  143. package/dist/modules/wallet/interfaces/index.d.ts +2 -0
  144. package/dist/modules/wallet/interfaces/index.js +18 -0
  145. package/dist/modules/wallet/interfaces/requests/create-card-token.request.d.ts +42 -0
  146. package/dist/modules/wallet/interfaces/requests/create-card-token.request.js +2 -0
  147. package/dist/modules/wallet/interfaces/requests/index.d.ts +1 -0
  148. package/dist/modules/wallet/interfaces/requests/index.js +17 -0
  149. package/dist/modules/wallet/interfaces/responses/card-token.response.d.ts +37 -0
  150. package/dist/modules/wallet/interfaces/responses/card-token.response.js +2 -0
  151. package/dist/modules/wallet/interfaces/responses/create-card-token.response.d.ts +7 -0
  152. package/dist/modules/wallet/interfaces/responses/create-card-token.response.js +2 -0
  153. package/dist/modules/wallet/interfaces/responses/index.d.ts +2 -0
  154. package/dist/modules/wallet/interfaces/responses/index.js +18 -0
  155. package/dist/modules/wallet/wallet.module.d.ts +2 -0
  156. package/dist/modules/wallet/wallet.module.js +20 -0
  157. package/dist/modules/wallet/wallet.service.d.ts +54 -0
  158. package/dist/modules/wallet/wallet.service.js +78 -0
  159. package/dist/modules/webhook/webhook.module.d.ts +2 -0
  160. package/dist/modules/webhook/webhook.module.js +24 -0
  161. package/dist/modules/webhook/webhook.service.d.ts +44 -0
  162. package/dist/modules/webhook/webhook.service.js +72 -0
  163. package/dist/monobank.module.d.ts +36 -0
  164. package/dist/monobank.module.js +117 -0
  165. package/dist/monobank.service.d.ts +17 -0
  166. package/dist/monobank.service.js +42 -0
  167. package/package.json +68 -0
  168. package/src/common/enums/discount.enum.ts +26 -0
  169. package/src/common/enums/index.ts +1 -0
  170. package/src/common/interfaces/common.interface.ts +206 -0
  171. package/src/common/interfaces/index.ts +2 -0
  172. package/src/common/interfaces/monobank-options.interface.ts +18 -0
  173. package/src/core/config/monobank.constants.ts +1 -0
  174. package/src/core/http/monobank.error.ts +10 -0
  175. package/src/core/http/monobank.http-client.ts +66 -0
  176. package/src/core/http/monobank.interceptor.ts +24 -0
  177. package/src/index.ts +3 -0
  178. package/src/modules/invoice/enums/cancel-status.enum.ts +20 -0
  179. package/src/modules/invoice/enums/charge-status.enum.ts +16 -0
  180. package/src/modules/invoice/enums/index.ts +3 -0
  181. package/src/modules/invoice/enums/invoice-status.enum.ts +40 -0
  182. package/src/modules/invoice/interfaces/index.ts +2 -0
  183. package/src/modules/invoice/interfaces/requests/create-cancel.request.ts +26 -0
  184. package/src/modules/invoice/interfaces/requests/create-charge.request.ts +52 -0
  185. package/src/modules/invoice/interfaces/requests/create-finalize.request.ts +22 -0
  186. package/src/modules/invoice/interfaces/requests/create-invoice.request.ts +103 -0
  187. package/src/modules/invoice/interfaces/requests/index.ts +4 -0
  188. package/src/modules/invoice/interfaces/responses/cancel.response.ts +21 -0
  189. package/src/modules/invoice/interfaces/responses/charge.response.ts +43 -0
  190. package/src/modules/invoice/interfaces/responses/create-cancel.response.ts +7 -0
  191. package/src/modules/invoice/interfaces/responses/create-charge.response.ts +7 -0
  192. package/src/modules/invoice/interfaces/responses/create-finalize.response.ts +7 -0
  193. package/src/modules/invoice/interfaces/responses/create-invoice.response.ts +7 -0
  194. package/src/modules/invoice/interfaces/responses/finalize.response.ts +9 -0
  195. package/src/modules/invoice/interfaces/responses/fiscal-checks.response.ts +49 -0
  196. package/src/modules/invoice/interfaces/responses/index.ts +10 -0
  197. package/src/modules/invoice/interfaces/responses/invoice-status.response.ts +142 -0
  198. package/src/modules/invoice/interfaces/responses/invoice.response.ts +14 -0
  199. package/src/modules/invoice/interfaces/responses/receipt.response.ts +6 -0
  200. package/src/modules/invoice/invoice.module.ts +8 -0
  201. package/src/modules/invoice/invoice.service.ts +191 -0
  202. package/src/modules/merchant/interfaces/index.ts +1 -0
  203. package/src/modules/merchant/interfaces/responses/index.ts +2 -0
  204. package/src/modules/merchant/interfaces/responses/merchant.response.ts +19 -0
  205. package/src/modules/merchant/interfaces/responses/pubkey.response.ts +10 -0
  206. package/src/modules/merchant/merchant.module.ts +8 -0
  207. package/src/modules/merchant/merchant.service.ts +46 -0
  208. package/src/modules/qr/enums/amount-type.enum.ts +13 -0
  209. package/src/modules/qr/enums/index.ts +1 -0
  210. package/src/modules/qr/interfaces/index.ts +0 -0
  211. package/src/modules/qr/interfaces/responses/index.ts +2 -0
  212. package/src/modules/qr/interfaces/responses/list.response.ts +11 -0
  213. package/src/modules/qr/interfaces/responses/qr.response.ts +18 -0
  214. package/src/modules/qr/qr.module.ts +8 -0
  215. package/src/modules/qr/qr.service.ts +43 -0
  216. package/src/modules/statement/interfaces/index.ts +1 -0
  217. package/src/modules/statement/interfaces/responses/index.ts +1 -0
  218. package/src/modules/statement/interfaces/responses/statement.response.ts +119 -0
  219. package/src/modules/statement/statement.module.ts +8 -0
  220. package/src/modules/statement/statement.service.ts +25 -0
  221. package/src/modules/subscription/enums/index.ts +2 -0
  222. package/src/modules/subscription/enums/subscription-status.enum.ts +14 -0
  223. package/src/modules/subscription/enums/wallet-status.enum.ts +19 -0
  224. package/src/modules/subscription/interfaces/index.ts +2 -0
  225. package/src/modules/subscription/interfaces/requests/client-subscriptions.request.ts +31 -0
  226. package/src/modules/subscription/interfaces/requests/create-subscription.request.ts +38 -0
  227. package/src/modules/subscription/interfaces/requests/edit-subscription.request.ts +20 -0
  228. package/src/modules/subscription/interfaces/requests/history.request.ts +20 -0
  229. package/src/modules/subscription/interfaces/requests/index.ts +4 -0
  230. package/src/modules/subscription/interfaces/responses/client-subscriptions.response.ts +36 -0
  231. package/src/modules/subscription/interfaces/responses/create-subscription.response.ts +6 -0
  232. package/src/modules/subscription/interfaces/responses/history.response.ts +12 -0
  233. package/src/modules/subscription/interfaces/responses/index.ts +5 -0
  234. package/src/modules/subscription/interfaces/responses/subscription-status.response.ts +40 -0
  235. package/src/modules/subscription/interfaces/responses/subscription.response.ts +11 -0
  236. package/src/modules/subscription/subscription.module.ts +8 -0
  237. package/src/modules/subscription/subscription.service.ts +121 -0
  238. package/src/modules/wallet/interfaces/index.ts +2 -0
  239. package/src/modules/wallet/interfaces/requests/create-card-token.request.ts +50 -0
  240. package/src/modules/wallet/interfaces/requests/index.ts +1 -0
  241. package/src/modules/wallet/interfaces/responses/card-token.response.ts +44 -0
  242. package/src/modules/wallet/interfaces/responses/create-card-token.response.ts +7 -0
  243. package/src/modules/wallet/interfaces/responses/index.ts +2 -0
  244. package/src/modules/wallet/wallet.module.ts +8 -0
  245. package/src/modules/wallet/wallet.service.ts +71 -0
  246. package/src/modules/webhook/webhook.module.ts +12 -0
  247. package/src/modules/webhook/webhook.service.ts +60 -0
  248. package/src/monobank.module.ts +115 -0
  249. package/src/monobank.service.ts +21 -0
  250. package/tsconfig.json +18 -0
@@ -0,0 +1,78 @@
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.WalletService = void 0;
13
+ const common_1 = require("@nestjs/common");
14
+ const monobank_http_client_1 = require("../../core/http/monobank.http-client");
15
+ let WalletService = class WalletService {
16
+ constructor(http) {
17
+ this.http = http;
18
+ }
19
+ /**
20
+ * Створює токен картки (Card Token) для збереження платіжної картки.
21
+ *
22
+ * Використовується для:
23
+ * - привʼязки картки клієнта
24
+ * - повторних платежів без повторного введення реквізитів
25
+ * - роботи з wallet-платежами Monobank
26
+ *
27
+ * @param {CreateCardTokenRequest} data - Дані для створення токена картки.
28
+ * @returns {Promise<CreateCardTokenResponse>} Дані створеного токена картки.
29
+ *
30
+ * @example
31
+ * const data: CreateCardTokenRequest = {
32
+ * amount: 100,
33
+ * ccy: 980,
34
+ * redirectUrl: "https://example.com/success",
35
+ * webHookUrl: "https://example.com/webhook"
36
+ * };
37
+ *
38
+ * const token = await this.monobankService.wallet.create(data);
39
+ * console.log(token.cardToken);
40
+ */
41
+ async create(data) {
42
+ return this.http.post("/merchant/wallet/payment", data);
43
+ }
44
+ /**
45
+ * Отримує інформацію про wallet за його ідентифікатором.
46
+ *
47
+ * @param {string} id - Унікальний ідентифікатор wallet.
48
+ * @returns {Promise<CardTokenResponse>} Дані wallet (привʼязана картка, статус тощо).
49
+ *
50
+ * @example
51
+ * const wallet = await this.monobankService.wallet.getById("wlt_123456");
52
+ * console.log(wallet);
53
+ */
54
+ async getById(id) {
55
+ return this.http.get(`/merchant/wallet?walletId=${id}`);
56
+ }
57
+ /**
58
+ * Видаляє привʼязану картку за токеном.
59
+ *
60
+ * Після видалення:
61
+ * - токен стає недійсним
62
+ * - повторні списання по цій картці неможливі
63
+ *
64
+ * @param {string} token - Токен картки (cardToken).
65
+ * @returns {Promise<void>} Результат операції видалення.
66
+ *
67
+ * @example
68
+ * await this.monobankService.wallet.deleteByToken("card_token_abc123");
69
+ */
70
+ async deleteByToken(token) {
71
+ return this.http.delete(`/merchant/wallet/card?cardToken=${token}`);
72
+ }
73
+ };
74
+ exports.WalletService = WalletService;
75
+ exports.WalletService = WalletService = __decorate([
76
+ (0, common_1.Injectable)(),
77
+ __metadata("design:paramtypes", [monobank_http_client_1.MonobankHttpClient])
78
+ ], WalletService);
@@ -0,0 +1,2 @@
1
+ export declare class WebhookModule {
2
+ }
@@ -0,0 +1,24 @@
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.WebhookModule = void 0;
10
+ const common_1 = require("@nestjs/common");
11
+ const webhook_service_1 = require("./webhook.service");
12
+ const merchant_module_1 = require("../merchant/merchant.module");
13
+ let WebhookModule = class WebhookModule {
14
+ };
15
+ exports.WebhookModule = WebhookModule;
16
+ exports.WebhookModule = WebhookModule = __decorate([
17
+ (0, common_1.Module)({
18
+ imports: [
19
+ merchant_module_1.MerchantModule
20
+ ],
21
+ providers: [webhook_service_1.WebhookService],
22
+ exports: [webhook_service_1.WebhookService]
23
+ })
24
+ ], WebhookModule);
@@ -0,0 +1,44 @@
1
+ import { MerchantService } from '../merchant/merchant.service';
2
+ export declare class WebhookService {
3
+ readonly merchant: MerchantService;
4
+ constructor(merchant: MerchantService);
5
+ /**
6
+ * Верифікує підпис webhook-повідомлення від Monobank.
7
+ *
8
+ * Метод:
9
+ * 1. Отримує публічний ключ мерчанта через Merchant API
10
+ * 2. Декодує підпис з Base64
11
+ * 3. Перевіряє цифровий підпис за алгоритмом SHA256
12
+ *
13
+ * Використовується для гарантії, що webhook:
14
+ * - дійсно надісланий Monobank
15
+ * - не був змінений під час передачі
16
+ *
17
+ * @param {Buffer} rawBody - Сире тіло HTTP-запиту (без JSON.parse).
18
+ * @param {string} xSignBase64 - Значення заголовка `X-Sign` у форматі Base64.
19
+ *
20
+ * @returns {Promise<boolean>}
21
+ * - `true` — підпис валідний
22
+ * - `false` — підпис невалідний
23
+ *
24
+ * @example
25
+ * // controller.ts
26
+ * @Post('/mono-webhook')
27
+ * async handleWebhook(
28
+ * @Headers('x-sign') xSign: string,
29
+ * @Req() req: RawBodyRequest<Request>
30
+ * ) {
31
+ * const isValid = await this.webhookService.verifyWebhookSignature(
32
+ * req.rawBody,
33
+ * xSign
34
+ * );
35
+ *
36
+ * if (!isValid) {
37
+ * throw new UnauthorizedException('Invalid webhook signature');
38
+ * }
39
+ *
40
+ * // обробка події
41
+ * }
42
+ */
43
+ verifyWebhookSignature(rawBody: Buffer, xSignBase64: string): Promise<boolean>;
44
+ }
@@ -0,0 +1,72 @@
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.WebhookService = void 0;
13
+ const common_1 = require("@nestjs/common");
14
+ const merchant_service_1 = require("../merchant/merchant.service");
15
+ const crypto = require("crypto");
16
+ let WebhookService = class WebhookService {
17
+ constructor(merchant) {
18
+ this.merchant = merchant;
19
+ }
20
+ /**
21
+ * Верифікує підпис webhook-повідомлення від Monobank.
22
+ *
23
+ * Метод:
24
+ * 1. Отримує публічний ключ мерчанта через Merchant API
25
+ * 2. Декодує підпис з Base64
26
+ * 3. Перевіряє цифровий підпис за алгоритмом SHA256
27
+ *
28
+ * Використовується для гарантії, що webhook:
29
+ * - дійсно надісланий Monobank
30
+ * - не був змінений під час передачі
31
+ *
32
+ * @param {Buffer} rawBody - Сире тіло HTTP-запиту (без JSON.parse).
33
+ * @param {string} xSignBase64 - Значення заголовка `X-Sign` у форматі Base64.
34
+ *
35
+ * @returns {Promise<boolean>}
36
+ * - `true` — підпис валідний
37
+ * - `false` — підпис невалідний
38
+ *
39
+ * @example
40
+ * // controller.ts
41
+ * @Post('/mono-webhook')
42
+ * async handleWebhook(
43
+ * @Headers('x-sign') xSign: string,
44
+ * @Req() req: RawBodyRequest<Request>
45
+ * ) {
46
+ * const isValid = await this.webhookService.verifyWebhookSignature(
47
+ * req.rawBody,
48
+ * xSign
49
+ * );
50
+ *
51
+ * if (!isValid) {
52
+ * throw new UnauthorizedException('Invalid webhook signature');
53
+ * }
54
+ *
55
+ * // обробка події
56
+ * }
57
+ */
58
+ async verifyWebhookSignature(rawBody, xSignBase64) {
59
+ const { key: publicKeyBase64 } = await this.merchant.getMerchantPubkey();
60
+ const sign = Buffer.from(xSignBase64, "base64");
61
+ const publicKey = Buffer.from(publicKeyBase64, "base64");
62
+ const verifier = crypto.createVerify("SHA256");
63
+ verifier.write(rawBody);
64
+ verifier.end();
65
+ return verifier.verify({ key: publicKey, format: "pem", type: "spki" }, sign);
66
+ }
67
+ };
68
+ exports.WebhookService = WebhookService;
69
+ exports.WebhookService = WebhookService = __decorate([
70
+ (0, common_1.Injectable)(),
71
+ __metadata("design:paramtypes", [merchant_service_1.MerchantService])
72
+ ], WebhookService);
@@ -0,0 +1,36 @@
1
+ import { type DynamicModule } from "@nestjs/common";
2
+ import { type MonobankModuleAsyncOptions, type MonobankModuleOptions } from './common/interfaces';
3
+ export declare class MonobankModule {
4
+ /**
5
+ * Метод для реєстрації модуля з синхронними параметрами.
6
+ * Цей метод використовується для конфігурації модуля з наперед заданими параметрами.
7
+ * @param {MonobankModuleOptions} options - Налаштування для конфігурації Monobank API.
8
+ * @returns {DynamicModule} Повертає динамічний модуль з необхідними провайдерами та імпортами.
9
+ *
10
+ * @example
11
+ * ```ts
12
+ * MonobankModule.forRoot({
13
+ * apiKey: configService.getOrThrow('MONOBANK_API_KEY')
14
+ * });
15
+ * ```
16
+ */
17
+ static forRoot(options: MonobankModuleOptions): DynamicModule;
18
+ /**
19
+ * Метод для реєстрації модуля з асинхронною конфігурацією.
20
+ * Цей метод використовується для конфігурації модуля з параметрами, які будуть передані через фабричну функцію.
21
+ * @param {MonobankModuleAsyncOptions} options - Асинхронні параметри для конфігурації Monobank API.
22
+ * @returns {DynamicModule} Повертає динамічний модуль з необхідними провайдерами та імпортами.
23
+ *
24
+ * @example
25
+ * ```ts
26
+ * MonobankModule.forRootAsync({
27
+ * imports: [ConfigModule],
28
+ * useFactory: async (configService: ConfigService) => ({
29
+ * apiKey: configService.getOrThrow('MONOBANK_API_KEY')
30
+ * }),
31
+ * inject: [ConfigService]
32
+ * });
33
+ * ```
34
+ */
35
+ static forRootAsync(options: MonobankModuleAsyncOptions): DynamicModule;
36
+ }
@@ -0,0 +1,117 @@
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 MonobankModule_1;
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.MonobankModule = void 0;
11
+ const common_1 = require("@nestjs/common");
12
+ const interfaces_1 = require("./common/interfaces");
13
+ const monobank_service_1 = require("./monobank.service");
14
+ const invoice_module_1 = require("./modules/invoice/invoice.module");
15
+ const merchant_module_1 = require("./modules/merchant/merchant.module");
16
+ const statement_module_1 = require("./modules/statement/statement.module");
17
+ const wallet_module_1 = require("./modules/wallet/wallet.module");
18
+ const webhook_module_1 = require("./modules/webhook/webhook.module");
19
+ const monobank_http_client_1 = require("./core/http/monobank.http-client");
20
+ const subscription_module_1 = require("./modules/subscription/subscription.module");
21
+ const qr_module_1 = require("./modules/qr/qr.module");
22
+ let MonobankModule = MonobankModule_1 = class MonobankModule {
23
+ /**
24
+ * Метод для реєстрації модуля з синхронними параметрами.
25
+ * Цей метод використовується для конфігурації модуля з наперед заданими параметрами.
26
+ * @param {MonobankModuleOptions} options - Налаштування для конфігурації Monobank API.
27
+ * @returns {DynamicModule} Повертає динамічний модуль з необхідними провайдерами та імпортами.
28
+ *
29
+ * @example
30
+ * ```ts
31
+ * MonobankModule.forRoot({
32
+ * apiKey: configService.getOrThrow('MONOBANK_API_KEY')
33
+ * });
34
+ * ```
35
+ */
36
+ static forRoot(options) {
37
+ return {
38
+ module: MonobankModule_1,
39
+ imports: [
40
+ invoice_module_1.InvoiceModule,
41
+ merchant_module_1.MerchantModule,
42
+ statement_module_1.StatementModule,
43
+ wallet_module_1.WalletModule,
44
+ qr_module_1.QrModule,
45
+ subscription_module_1.SubscriptionModule,
46
+ webhook_module_1.WebhookModule
47
+ ],
48
+ providers: [
49
+ {
50
+ provide: interfaces_1.MonobankOptionsSymbol,
51
+ useValue: options,
52
+ },
53
+ {
54
+ provide: monobank_http_client_1.MonobankHttpClient,
55
+ useFactory: (cfg) => new monobank_http_client_1.MonobankHttpClient(cfg),
56
+ inject: [interfaces_1.MonobankOptionsSymbol]
57
+ },
58
+ monobank_service_1.MonobankService,
59
+ ],
60
+ exports: [monobank_service_1.MonobankService, monobank_http_client_1.MonobankHttpClient],
61
+ global: true,
62
+ };
63
+ }
64
+ /**
65
+ * Метод для реєстрації модуля з асинхронною конфігурацією.
66
+ * Цей метод використовується для конфігурації модуля з параметрами, які будуть передані через фабричну функцію.
67
+ * @param {MonobankModuleAsyncOptions} options - Асинхронні параметри для конфігурації Monobank API.
68
+ * @returns {DynamicModule} Повертає динамічний модуль з необхідними провайдерами та імпортами.
69
+ *
70
+ * @example
71
+ * ```ts
72
+ * MonobankModule.forRootAsync({
73
+ * imports: [ConfigModule],
74
+ * useFactory: async (configService: ConfigService) => ({
75
+ * apiKey: configService.getOrThrow('MONOBANK_API_KEY')
76
+ * }),
77
+ * inject: [ConfigService]
78
+ * });
79
+ * ```
80
+ */
81
+ static forRootAsync(options) {
82
+ return {
83
+ module: MonobankModule_1,
84
+ imports: [
85
+ ...(options.imports || []),
86
+ invoice_module_1.InvoiceModule,
87
+ merchant_module_1.MerchantModule,
88
+ statement_module_1.StatementModule,
89
+ wallet_module_1.WalletModule,
90
+ webhook_module_1.WebhookModule,
91
+ qr_module_1.QrModule,
92
+ subscription_module_1.SubscriptionModule,
93
+ invoice_module_1.InvoiceModule
94
+ ],
95
+ providers: [
96
+ {
97
+ provide: interfaces_1.MonobankOptionsSymbol,
98
+ useFactory: options.useFactory,
99
+ inject: options.inject || []
100
+ },
101
+ {
102
+ provide: monobank_http_client_1.MonobankHttpClient,
103
+ useFactory: (cfg) => new monobank_http_client_1.MonobankHttpClient(cfg),
104
+ inject: [interfaces_1.MonobankOptionsSymbol]
105
+ },
106
+ monobank_service_1.MonobankService
107
+ ],
108
+ exports: [monobank_service_1.MonobankService, monobank_http_client_1.MonobankHttpClient],
109
+ global: true
110
+ };
111
+ }
112
+ };
113
+ exports.MonobankModule = MonobankModule;
114
+ exports.MonobankModule = MonobankModule = MonobankModule_1 = __decorate([
115
+ (0, common_1.Global)(),
116
+ (0, common_1.Module)({})
117
+ ], MonobankModule);
@@ -0,0 +1,17 @@
1
+ import { InvoiceService } from './modules/invoice/invoice.service';
2
+ import { MerchantService } from './modules/merchant/merchant.service';
3
+ import { StatementService } from './modules/statement/statement.service';
4
+ import { WalletService } from './modules/wallet/wallet.service';
5
+ import { SubscriptionService } from "./modules/subscription/subscription.service";
6
+ import { WebhookService } from "./modules/webhook/webhook.service";
7
+ import { QrService } from "./modules/qr/qr.service";
8
+ export declare class MonobankService {
9
+ invoices: InvoiceService;
10
+ merchants: MerchantService;
11
+ statements: StatementService;
12
+ wallets: WalletService;
13
+ qr: QrService;
14
+ subscriptions: SubscriptionService;
15
+ webhook: WebhookService;
16
+ constructor(invoices: InvoiceService, merchants: MerchantService, statements: StatementService, wallets: WalletService, qr: QrService, subscriptions: SubscriptionService, webhook: WebhookService);
17
+ }
@@ -0,0 +1,42 @@
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.MonobankService = void 0;
13
+ const common_1 = require("@nestjs/common");
14
+ const invoice_service_1 = require("./modules/invoice/invoice.service");
15
+ const merchant_service_1 = require("./modules/merchant/merchant.service");
16
+ const statement_service_1 = require("./modules/statement/statement.service");
17
+ const wallet_service_1 = require("./modules/wallet/wallet.service");
18
+ const subscription_service_1 = require("./modules/subscription/subscription.service");
19
+ const webhook_service_1 = require("./modules/webhook/webhook.service");
20
+ const qr_service_1 = require("./modules/qr/qr.service");
21
+ let MonobankService = class MonobankService {
22
+ constructor(invoices, merchants, statements, wallets, qr, subscriptions, webhook) {
23
+ this.invoices = invoices;
24
+ this.merchants = merchants;
25
+ this.statements = statements;
26
+ this.wallets = wallets;
27
+ this.qr = qr;
28
+ this.subscriptions = subscriptions;
29
+ this.webhook = webhook;
30
+ }
31
+ };
32
+ exports.MonobankService = MonobankService;
33
+ exports.MonobankService = MonobankService = __decorate([
34
+ (0, common_1.Injectable)(),
35
+ __metadata("design:paramtypes", [invoice_service_1.InvoiceService,
36
+ merchant_service_1.MerchantService,
37
+ statement_service_1.StatementService,
38
+ wallet_service_1.WalletService,
39
+ qr_service_1.QrService,
40
+ subscription_service_1.SubscriptionService,
41
+ webhook_service_1.WebhookService])
42
+ ], MonobankService);
package/package.json ADDED
@@ -0,0 +1,68 @@
1
+ {
2
+ "name": "nestjs-monobank",
3
+ "version": "1.2.8",
4
+ "description": "A NestJS library for integrating with Monobank API",
5
+ "author": {
6
+ "name": "MikroTik_3",
7
+ "url": "https://docenko.vercel.app"
8
+ },
9
+ "contributors": [
10
+ {
11
+ "name": "Artur Docenko",
12
+ "email": "dotsenk20034@gmail.com"
13
+ }
14
+ ],
15
+ "keywords": [
16
+ "nest",
17
+ "nestjs",
18
+ "nestjs-module",
19
+ "monobank",
20
+ "invoice",
21
+ "payment"
22
+ ],
23
+ "license": "AGPL-3.0-only",
24
+ "homepage": "https://nestjs-monobank.vercel.app",
25
+ "repository": "git@github.com:MikroTik3/nestjs-monobank.git",
26
+ "main": "./dist/index.js",
27
+ "types": "./dist/index.d.ts",
28
+ "scripts": {
29
+ "build": "tsc -p tsconfig.json",
30
+ "precommit": "lint-staged",
31
+ "prepublish:npm": "npm run build",
32
+ "publish:npm": "npm publish --access public",
33
+ "format": "prettier --write \"src/**/*.ts\"",
34
+ "lint": "eslint \"{src,apps,libs}/**/*.ts\" --fix"
35
+ },
36
+ "dependencies": {
37
+ "axios": "^1.13.5",
38
+ "rxjs": "^7.8.1",
39
+ "undici": "^6.22.0"
40
+ },
41
+ "devDependencies": {
42
+ "@eslint/eslintrc": "^3.2.0",
43
+ "@eslint/js": "^9.18.0",
44
+ "@nestjs/cli": "^11.0.0",
45
+ "@nestjs/common": "^11.0.17",
46
+ "@nestjs/core": "^11.0.17",
47
+ "@nestjs/schematics": "^11.0.0",
48
+ "@nestjs/testing": "^11.0.1",
49
+ "@types/express": "^5.0.0",
50
+ "@types/jest": "^29.5.14",
51
+ "@types/node": "^22.10.7",
52
+ "@types/supertest": "^6.0.2",
53
+ "eslint": "^9.18.0",
54
+ "eslint-config-prettier": "^10.1.2",
55
+ "eslint-plugin-prettier": "^5.2.2",
56
+ "globals": "^16.0.0",
57
+ "jest": "^29.7.0",
58
+ "prettier": "^3.4.2",
59
+ "source-map-support": "^0.5.21",
60
+ "supertest": "^7.0.0",
61
+ "ts-jest": "^29.2.5",
62
+ "ts-loader": "^9.5.2",
63
+ "ts-node": "^10.9.2",
64
+ "tsconfig-paths": "^4.2.0",
65
+ "typescript": "^5.7.3",
66
+ "typescript-eslint": "^8.20.0"
67
+ }
68
+ }
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Тип знижки або надбавки.
3
+ */
4
+ export interface Discount {
5
+ /**
6
+ * Тип:
7
+ * - DISCOUNT — знижка
8
+ * - EXTRA_CHARGE — надбавка
9
+ * Обов’язкове поле.
10
+ */
11
+ type: "DISCOUNT" | "EXTRA_CHARGE";
12
+
13
+ /**
14
+ * Режим:
15
+ * - PERCENT — у відсотках
16
+ * - VALUE — фіксоване значення
17
+ * Обов’язкове поле.
18
+ */
19
+ mode: "PERCENT" | "VALUE";
20
+
21
+ /**
22
+ * Значення знижки або надбавки.
23
+ * Обов’язкове поле.
24
+ */
25
+ value: number;
26
+ }
@@ -0,0 +1 @@
1
+ export * from './discount.enum'