@misterhomer1992/miit-bot-payment 1.1.6 → 2.0.4

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 (248) hide show
  1. package/dist/config/ConfigurationManager.d.ts +64 -0
  2. package/dist/config/ConfigurationManager.d.ts.map +1 -0
  3. package/dist/config/ConfigurationManager.js +144 -0
  4. package/dist/config/ConfigurationManager.js.map +1 -0
  5. package/dist/config/defaults.d.ts +18 -0
  6. package/dist/config/defaults.d.ts.map +1 -0
  7. package/dist/config/defaults.js +26 -0
  8. package/dist/config/defaults.js.map +1 -0
  9. package/dist/config/environment.d.ts +38 -0
  10. package/dist/config/environment.d.ts.map +1 -0
  11. package/dist/config/environment.js +91 -0
  12. package/dist/config/environment.js.map +1 -0
  13. package/dist/config/index.d.ts +5 -0
  14. package/dist/config/index.d.ts.map +1 -0
  15. package/dist/config/index.js +18 -0
  16. package/dist/config/index.js.map +1 -0
  17. package/dist/config/types.d.ts +53 -0
  18. package/dist/config/types.d.ts.map +1 -0
  19. package/dist/config/types.js +3 -0
  20. package/dist/config/types.js.map +1 -0
  21. package/dist/index.d.ts +21 -0
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.js +23 -0
  24. package/dist/index.js.map +1 -1
  25. package/dist/modules/cache/InMemoryCache.d.ts +17 -0
  26. package/dist/modules/cache/InMemoryCache.d.ts.map +1 -0
  27. package/dist/modules/cache/InMemoryCache.js +77 -0
  28. package/dist/modules/cache/InMemoryCache.js.map +1 -0
  29. package/dist/modules/cache/index.d.ts +3 -0
  30. package/dist/modules/cache/index.d.ts.map +1 -0
  31. package/dist/modules/cache/index.js +19 -0
  32. package/dist/modules/cache/index.js.map +1 -0
  33. package/dist/modules/cache/types.d.ts +52 -0
  34. package/dist/modules/cache/types.d.ts.map +1 -0
  35. package/dist/modules/cache/types.js +3 -0
  36. package/dist/modules/cache/types.js.map +1 -0
  37. package/dist/modules/errors/index.d.ts +2 -0
  38. package/dist/modules/errors/index.d.ts.map +1 -0
  39. package/dist/modules/errors/index.js +19 -0
  40. package/dist/modules/errors/index.js.map +1 -0
  41. package/dist/modules/errors/types.d.ts +112 -0
  42. package/dist/modules/errors/types.d.ts.map +1 -0
  43. package/dist/modules/errors/types.js +174 -0
  44. package/dist/modules/errors/types.js.map +1 -0
  45. package/dist/modules/payments/api.d.ts +63 -1
  46. package/dist/modules/payments/api.d.ts.map +1 -1
  47. package/dist/modules/payments/api.js +103 -1
  48. package/dist/modules/payments/api.js.map +1 -1
  49. package/dist/modules/payments/const.d.ts.map +1 -1
  50. package/dist/modules/payments/const.js +1 -0
  51. package/dist/modules/payments/const.js.map +1 -1
  52. package/dist/modules/payments/index.d.ts +8 -0
  53. package/dist/modules/payments/index.d.ts.map +1 -1
  54. package/dist/modules/payments/index.js +8 -0
  55. package/dist/modules/payments/index.js.map +1 -1
  56. package/dist/modules/payments/service.d.ts +42 -2
  57. package/dist/modules/payments/service.d.ts.map +1 -1
  58. package/dist/modules/payments/service.js +132 -3
  59. package/dist/modules/payments/service.js.map +1 -1
  60. package/dist/modules/payments/subscription-check-webhook.handler.d.ts +85 -0
  61. package/dist/modules/payments/subscription-check-webhook.handler.d.ts.map +1 -0
  62. package/dist/modules/payments/subscription-check-webhook.handler.js +155 -0
  63. package/dist/modules/payments/subscription-check-webhook.handler.js.map +1 -0
  64. package/dist/modules/payments/subscription-check-webhook.service.d.ts +59 -0
  65. package/dist/modules/payments/subscription-check-webhook.service.d.ts.map +1 -0
  66. package/dist/modules/payments/subscription-check-webhook.service.js +330 -0
  67. package/dist/modules/payments/subscription-check-webhook.service.js.map +1 -0
  68. package/dist/modules/payments/subscription-check-webhook.types.d.ts +25 -0
  69. package/dist/modules/payments/subscription-check-webhook.types.d.ts.map +1 -0
  70. package/dist/modules/payments/subscription-check-webhook.types.js +3 -0
  71. package/dist/modules/payments/subscription-check-webhook.types.js.map +1 -0
  72. package/dist/modules/payments/types.d.ts +69 -2
  73. package/dist/modules/payments/types.d.ts.map +1 -1
  74. package/dist/modules/payments/utils.d.ts +151 -5
  75. package/dist/modules/payments/utils.d.ts.map +1 -1
  76. package/dist/modules/payments/utils.js +253 -9
  77. package/dist/modules/payments/utils.js.map +1 -1
  78. package/dist/modules/payments/wayforpay.service.d.ts +39 -0
  79. package/dist/modules/payments/wayforpay.service.d.ts.map +1 -0
  80. package/dist/modules/payments/wayforpay.service.js +217 -0
  81. package/dist/modules/payments/wayforpay.service.js.map +1 -0
  82. package/dist/modules/payments/wayforpay.types.d.ts +115 -0
  83. package/dist/modules/payments/wayforpay.types.d.ts.map +1 -0
  84. package/dist/modules/payments/wayforpay.types.js +3 -0
  85. package/dist/modules/payments/wayforpay.types.js.map +1 -0
  86. package/dist/modules/payments/webhook.handler.d.ts +98 -0
  87. package/dist/modules/payments/webhook.handler.d.ts.map +1 -0
  88. package/dist/modules/payments/webhook.handler.js +153 -0
  89. package/dist/modules/payments/webhook.handler.js.map +1 -0
  90. package/dist/modules/payments/webhook.service.d.ts +99 -0
  91. package/dist/modules/payments/webhook.service.d.ts.map +1 -0
  92. package/dist/modules/payments/webhook.service.js +672 -0
  93. package/dist/modules/payments/webhook.service.js.map +1 -0
  94. package/dist/modules/payments/webhook.types.d.ts +35 -0
  95. package/dist/modules/payments/webhook.types.d.ts.map +1 -0
  96. package/dist/modules/payments/webhook.types.js +3 -0
  97. package/dist/modules/payments/webhook.types.js.map +1 -0
  98. package/dist/modules/subscription/change.service.d.ts +80 -0
  99. package/dist/modules/subscription/change.service.d.ts.map +1 -0
  100. package/dist/modules/subscription/change.service.js +226 -0
  101. package/dist/modules/subscription/change.service.js.map +1 -0
  102. package/dist/modules/subscription/index.d.ts +2 -0
  103. package/dist/modules/subscription/index.d.ts.map +1 -1
  104. package/dist/modules/subscription/index.js +2 -0
  105. package/dist/modules/subscription/index.js.map +1 -1
  106. package/dist/modules/subscription/service.d.ts +8 -1
  107. package/dist/modules/subscription/service.d.ts.map +1 -1
  108. package/dist/modules/subscription/service.js +59 -2
  109. package/dist/modules/subscription/service.js.map +1 -1
  110. package/dist/modules/subscription/status-check.handler.d.ts +117 -0
  111. package/dist/modules/subscription/status-check.handler.d.ts.map +1 -0
  112. package/dist/modules/subscription/status-check.handler.js +164 -0
  113. package/dist/modules/subscription/status-check.handler.js.map +1 -0
  114. package/dist/modules/subscription/types.d.ts +37 -1
  115. package/dist/modules/subscription/types.d.ts.map +1 -1
  116. package/dist/modules/subscriptionPlan/const.d.ts +5 -0
  117. package/dist/modules/subscriptionPlan/const.d.ts.map +1 -0
  118. package/dist/modules/subscriptionPlan/const.js +106 -0
  119. package/dist/modules/subscriptionPlan/const.js.map +1 -0
  120. package/dist/modules/subscriptionPlan/index.d.ts +5 -0
  121. package/dist/modules/subscriptionPlan/index.d.ts.map +1 -0
  122. package/dist/modules/subscriptionPlan/index.js +21 -0
  123. package/dist/modules/subscriptionPlan/index.js.map +1 -0
  124. package/dist/modules/subscriptionPlan/repository.d.ts +22 -0
  125. package/dist/modules/subscriptionPlan/repository.d.ts.map +1 -0
  126. package/dist/modules/subscriptionPlan/repository.js +95 -0
  127. package/dist/modules/subscriptionPlan/repository.js.map +1 -0
  128. package/dist/modules/subscriptionPlan/service.d.ts +21 -0
  129. package/dist/modules/subscriptionPlan/service.d.ts.map +1 -0
  130. package/dist/modules/subscriptionPlan/service.js +128 -0
  131. package/dist/modules/subscriptionPlan/service.js.map +1 -0
  132. package/dist/modules/subscriptionPlan/types.d.ts +40 -0
  133. package/dist/modules/subscriptionPlan/types.d.ts.map +1 -0
  134. package/dist/modules/subscriptionPlan/types.js +3 -0
  135. package/dist/modules/subscriptionPlan/types.js.map +1 -0
  136. package/dist/modules/token/const.d.ts +7 -0
  137. package/dist/modules/token/const.d.ts.map +1 -0
  138. package/dist/modules/token/const.js +66 -0
  139. package/dist/modules/token/const.js.map +1 -0
  140. package/dist/modules/token/index.d.ts +4 -0
  141. package/dist/modules/token/index.d.ts.map +1 -0
  142. package/dist/modules/token/index.js +20 -0
  143. package/dist/modules/token/index.js.map +1 -0
  144. package/dist/modules/token/service.d.ts +46 -0
  145. package/dist/modules/token/service.d.ts.map +1 -0
  146. package/dist/modules/token/service.js +249 -0
  147. package/dist/modules/token/service.js.map +1 -0
  148. package/dist/modules/token/types.d.ts +109 -0
  149. package/dist/modules/token/types.d.ts.map +1 -0
  150. package/dist/modules/token/types.js +3 -0
  151. package/dist/modules/token/types.js.map +1 -0
  152. package/dist/modules/tokenPack/const.d.ts +4 -0
  153. package/dist/modules/tokenPack/const.d.ts.map +1 -0
  154. package/dist/modules/tokenPack/const.js +10 -0
  155. package/dist/modules/tokenPack/const.js.map +1 -0
  156. package/dist/modules/tokenPack/index.d.ts +5 -0
  157. package/dist/modules/tokenPack/index.d.ts.map +1 -0
  158. package/dist/modules/tokenPack/index.js +21 -0
  159. package/dist/modules/tokenPack/index.js.map +1 -0
  160. package/dist/modules/tokenPack/repository.d.ts +32 -0
  161. package/dist/modules/tokenPack/repository.d.ts.map +1 -0
  162. package/dist/modules/tokenPack/repository.js +103 -0
  163. package/dist/modules/tokenPack/repository.js.map +1 -0
  164. package/dist/modules/tokenPack/service.d.ts +28 -0
  165. package/dist/modules/tokenPack/service.d.ts.map +1 -0
  166. package/dist/modules/tokenPack/service.js +106 -0
  167. package/dist/modules/tokenPack/service.js.map +1 -0
  168. package/dist/modules/tokenPack/types.d.ts +124 -0
  169. package/dist/modules/tokenPack/types.d.ts.map +1 -0
  170. package/dist/modules/tokenPack/types.js +3 -0
  171. package/dist/modules/tokenPack/types.js.map +1 -0
  172. package/package.json +9 -5
  173. package/src/config/ConfigurationManager.ts +159 -0
  174. package/src/config/defaults.ts +27 -0
  175. package/src/config/environment.ts +94 -0
  176. package/src/config/index.ts +22 -0
  177. package/src/config/types.ts +56 -0
  178. package/src/index.ts +29 -0
  179. package/src/modules/cache/InMemoryCache.ts +98 -0
  180. package/src/modules/cache/index.ts +2 -0
  181. package/src/modules/cache/types.ts +60 -0
  182. package/src/modules/cancellableAPI/utils.ts +60 -0
  183. package/src/modules/errors/index.ts +16 -0
  184. package/src/modules/errors/types.ts +201 -0
  185. package/src/modules/invoice/const.ts +7 -0
  186. package/src/modules/invoice/index.ts +4 -0
  187. package/src/modules/invoice/repository.ts +52 -0
  188. package/src/modules/invoice/service.ts +44 -0
  189. package/src/modules/invoice/types.ts +47 -0
  190. package/src/modules/logger/types.ts +8 -0
  191. package/src/modules/network/utils.ts +24 -0
  192. package/src/modules/payments/api.ts +289 -0
  193. package/src/modules/payments/const.ts +11 -0
  194. package/src/modules/payments/index.ts +14 -0
  195. package/src/modules/payments/repository.ts +125 -0
  196. package/src/modules/payments/service.test.ts +400 -0
  197. package/src/modules/payments/service.ts +365 -0
  198. package/src/modules/payments/subscription-check-webhook.handler.integration.test.ts +935 -0
  199. package/src/modules/payments/subscription-check-webhook.handler.ts +211 -0
  200. package/src/modules/payments/subscription-check-webhook.service.ts +398 -0
  201. package/src/modules/payments/subscription-check-webhook.types.ts +29 -0
  202. package/src/modules/payments/types.ts +193 -0
  203. package/src/modules/payments/utils.ts +428 -0
  204. package/src/modules/payments/wayforpay.service.test.ts +375 -0
  205. package/src/modules/payments/wayforpay.service.ts +284 -0
  206. package/src/modules/payments/wayforpay.types.ts +138 -0
  207. package/src/modules/payments/webhook.handler.integration.test.ts +975 -0
  208. package/src/modules/payments/webhook.handler.ts +219 -0
  209. package/src/modules/payments/webhook.service.ts +812 -0
  210. package/src/modules/payments/webhook.types.ts +38 -0
  211. package/src/modules/subscription/change.service.ts +317 -0
  212. package/src/modules/subscription/const.ts +9 -0
  213. package/src/modules/subscription/index.ts +5 -0
  214. package/src/modules/subscription/repository.ts +277 -0
  215. package/src/modules/subscription/service.test.ts +665 -0
  216. package/src/modules/subscription/service.ts +328 -0
  217. package/src/modules/subscription/status-check.handler.ts +254 -0
  218. package/src/modules/subscription/types.ts +267 -0
  219. package/src/modules/subscription/utils.ts +5 -0
  220. package/src/modules/subscriptionPlan/const.ts +106 -0
  221. package/src/modules/subscriptionPlan/index.ts +4 -0
  222. package/src/modules/subscriptionPlan/repository.ts +129 -0
  223. package/src/modules/subscriptionPlan/service.test.ts +401 -0
  224. package/src/modules/subscriptionPlan/service.ts +148 -0
  225. package/src/modules/subscriptionPlan/types.ts +67 -0
  226. package/src/modules/token/const.ts +64 -0
  227. package/src/modules/token/index.ts +3 -0
  228. package/src/modules/token/service.test.ts +499 -0
  229. package/src/modules/token/service.ts +297 -0
  230. package/src/modules/token/types.ts +124 -0
  231. package/src/modules/tokenPack/const.ts +9 -0
  232. package/src/modules/tokenPack/index.ts +4 -0
  233. package/src/modules/tokenPack/repository.ts +144 -0
  234. package/src/modules/tokenPack/service.ts +119 -0
  235. package/src/modules/tokenPack/types.ts +131 -0
  236. package/src/modules/user/index.ts +3 -0
  237. package/src/modules/user/types.ts +143 -0
  238. package/src/modules/user/userRepository.ts +64 -0
  239. package/src/modules/user/userService.ts +68 -0
  240. package/src/types/extend-express.d.ts +16 -0
  241. package/src/types/function.ts +5 -0
  242. package/src/types/utilities.ts +22 -0
  243. package/src/utils.ts +53 -0
  244. package/tsconfig.json +29 -0
  245. package/dist/modules/subscription/subscriptionPlan.d.ts +0 -4
  246. package/dist/modules/subscription/subscriptionPlan.d.ts.map +0 -1
  247. package/dist/modules/subscription/subscriptionPlan.js +0 -67
  248. package/dist/modules/subscription/subscriptionPlan.js.map +0 -1
@@ -5,6 +5,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.createPaymentAPI = createPaymentAPI;
7
7
  exports.editRegularPurchaseAPI = editRegularPurchaseAPI;
8
+ exports.createTokenPackPaymentAPI = createTokenPackPaymentAPI;
9
+ exports.createUpgradePaymentAPI = createUpgradePaymentAPI;
8
10
  const moment_1 = __importDefault(require("moment"));
9
11
  const wayforpay_api_1 = require("@misterhomer1992/wayforpay-api");
10
12
  const utils_1 = require("../../utils");
@@ -28,7 +30,7 @@ const utils_2 = require("./utils");
28
30
  async function createPaymentAPI({ userId, platform, productName, productPrice, planId, dateNext, currency, regularCount = 3, regularMode = 'daily', language = 'UA', }) {
29
31
  const orderDate = Date.now();
30
32
  const formattedUtc = moment_1.default.utc().toISOString();
31
- const orderReference = (0, utils_2.createOrderReference)({
33
+ const orderReference = (0, utils_2.createSubscriptionOrderReference)({
32
34
  userId,
33
35
  platform,
34
36
  planId,
@@ -90,4 +92,104 @@ async function editRegularPurchaseAPI({ orderReference, amount, dateBegin, dateE
90
92
  }
91
93
  return response;
92
94
  }
95
+ /**
96
+ * Creates a one-time payment API URL for token pack purchases via Wayforpay.
97
+ * Generates a unique order reference using the v2 token pack format.
98
+ *
99
+ * @param params - Payment creation parameters
100
+ * @param params.userId - The unique identifier of the user making the payment
101
+ * @param params.platform - The application namespace (e.g., 'app' or 'telegram')
102
+ * @param params.productName - The name of the token pack being purchased
103
+ * @param params.productPrice - The price of the token pack
104
+ * @param params.packId - The identifier of the token pack
105
+ * @param params.currency - The currency code (e.g., 'UAH', 'USD')
106
+ * @param params.language - The language for the payment page (defaults to 'UA')
107
+ * @param params.returnUrl - Optional URL to redirect to after payment
108
+ * @returns Promise resolving to an object containing the payment URL and order reference, or null
109
+ * @throws Error with code 'CREATE_TOKEN_PACK_PAYMENT_API' if the API response is invalid or missing URL
110
+ */
111
+ async function createTokenPackPaymentAPI({ userId, platform, productName, productPrice, packId, currency, language = 'UA', returnUrl, }) {
112
+ const orderDate = Date.now();
113
+ const formattedUtc = moment_1.default.utc().toISOString();
114
+ const orderReference = (0, utils_2.createTokenPackOrderReference)({
115
+ userId,
116
+ platform,
117
+ packId,
118
+ utcDate: formattedUtc,
119
+ });
120
+ const response = (await (0, wayforpay_api_1.generatePurchase)({
121
+ merchantAccount: process.env.WAYFORPAY_MERCHANT_ACCOUNT,
122
+ merchantDomainName: process.env.WAYFORPAY_MERCHANT_DOMAIN,
123
+ merchantSecretKey: process.env.WAYFORPAY_MERCHANT_SECRET_KEY,
124
+ orderDate,
125
+ orderReference,
126
+ productName: [productName],
127
+ productPrice: [productPrice],
128
+ currency: currency,
129
+ language: language,
130
+ serviceUrl: process.env.WAYFORPAY_SERVICE_URL,
131
+ returnUrl,
132
+ }));
133
+ if (!(0, utils_1.isObject)(response) || (0, utils_1.isBadOrEmptyString)(response.url)) {
134
+ throw {
135
+ code: 'CREATE_TOKEN_PACK_PAYMENT_API',
136
+ };
137
+ }
138
+ return {
139
+ url: response.url,
140
+ orderReference,
141
+ };
142
+ }
143
+ /**
144
+ * Creates a recurring payment API URL for subscription upgrades via Wayforpay.
145
+ * Generates a unique order reference using the upgrade format.
146
+ *
147
+ * @param params - Payment creation parameters
148
+ * @param params.userId - The unique identifier of the user making the payment
149
+ * @param params.platform - The application namespace (e.g., 'app' or 'telegram')
150
+ * @param params.currentPlanId - The identifier of the current subscription plan
151
+ * @param params.newPlanId - The identifier of the new subscription plan to upgrade to
152
+ * @param params.productName - The name of the upgraded plan being purchased
153
+ * @param params.productPrice - The price difference (upgrade cost)
154
+ * @param params.currency - The currency code (e.g., 'UAH', 'USD')
155
+ * @param params.regularMode - The frequency mode for regular payments
156
+ * @param params.regularCount - Number of regular payments (defaults to 3)
157
+ * @param params.language - The language for the payment page (defaults to 'UA')
158
+ * @returns Promise resolving to an object containing the payment URL and order reference, or null
159
+ * @throws Error with code 'CREATE_UPGRADE_PAYMENT_API' if the API response is invalid or missing URL
160
+ */
161
+ async function createUpgradePaymentAPI({ userId, platform, currentPlanId, newPlanId, productName, productPrice, currency, regularMode = 'monthly', regularCount = 3, language = 'UA', }) {
162
+ const orderDate = Date.now();
163
+ const formattedUtc = moment_1.default.utc().toISOString();
164
+ const orderReference = (0, utils_2.createUpgradeOrderReference)({
165
+ userId,
166
+ platform,
167
+ currentPlanId,
168
+ newPlanId,
169
+ utcDate: formattedUtc,
170
+ });
171
+ const response = (await (0, wayforpay_api_1.generateRegularPurchase)({
172
+ merchantAccount: process.env.WAYFORPAY_MERCHANT_ACCOUNT,
173
+ merchantDomainName: process.env.WAYFORPAY_MERCHANT_DOMAIN,
174
+ merchantSecretKey: process.env.WAYFORPAY_MERCHANT_SECRET_KEY,
175
+ orderDate,
176
+ orderReference,
177
+ productName: [productName],
178
+ productPrice: [productPrice],
179
+ currency: currency,
180
+ language: language,
181
+ serviceUrl: process.env.WAYFORPAY_SERVICE_URL,
182
+ regularMode,
183
+ regularCount,
184
+ }));
185
+ if (!(0, utils_1.isObject)(response) || (0, utils_1.isBadOrEmptyString)(response.url)) {
186
+ throw {
187
+ code: 'CREATE_UPGRADE_PAYMENT_API',
188
+ };
189
+ }
190
+ return {
191
+ url: response.url,
192
+ orderReference,
193
+ };
194
+ }
93
195
  //# sourceMappingURL=api.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../../../src/modules/payments/api.ts"],"names":[],"mappings":";;;;;AAsIS,4CAAgB;AAAE,wDAAsB;AAtIjD,oDAA4B;AAC5B,kEAAkH;AAClH,uCAA2D;AAC3D,mCAA+C;AAO/C;;;;;;;;;;;;;;;GAeG;AACH,KAAK,UAAU,gBAAgB,CAAC,EAC5B,MAAM,EACN,QAAQ,EACR,WAAW,EACX,YAAY,EACZ,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,YAAY,GAAG,CAAC,EAChB,WAAW,GAAG,OAAO,EACrB,QAAQ,GAAG,IAAI,GAYlB;IACG,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,MAAM,YAAY,GAAG,gBAAM,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC;IAChD,MAAM,cAAc,GAAG,IAAA,4BAAoB,EAAC;QACxC,MAAM;QACN,QAAQ;QACR,MAAM;QACN,OAAO,EAAE,YAAY;KACxB,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,CAAC,MAAM,IAAA,uCAAuB,EAAC;QAC5C,eAAe,EAAE,OAAO,CAAC,GAAG,CAAC,0BAAoC;QACjE,kBAAkB,EAAE,OAAO,CAAC,GAAG,CAAC,yBAAmC;QACnE,iBAAiB,EAAE,OAAO,CAAC,GAAG,CAAC,6BAAuC;QACtE,SAAS;QACT,cAAc;QACd,WAAW,EAAE,CAAC,WAAW,CAAC;QAC1B,YAAY,EAAE,CAAC,YAAY,CAAC;QAC5B,QAAQ,EAAE,QAAoB;QAC9B,QAAQ,EAAE,QAAoB;QAC9B,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,qBAA+B;QACvD,WAAW;QACX,YAAY;QACZ,QAAQ;KACX,CAAC,CAAsB,CAAC;IAEzB,IAAI,CAAC,IAAA,gBAAQ,EAAC,QAAQ,CAAC,IAAI,IAAA,0BAAkB,EAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1D,MAAM;YACF,IAAI,EAAE,oBAAoB;SAC7B,CAAC;IACN,CAAC;IAED,OAAO;QACH,GAAG,EAAE,QAAQ,CAAC,GAAG;QACjB,cAAc;KACjB,CAAC;AACN,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,KAAK,UAAU,sBAAsB,CAAC,EAClC,cAAc,EACd,MAAM,EACN,SAAS,EACT,OAAO,EACP,WAAW,EACX,QAAQ,GAQX;IACG,MAAM,QAAQ,GAAG,MAAM,IAAA,mCAAmB,EAAC;QACvC,eAAe,EAAE,OAAO,CAAC,GAAG,CAAC,0BAAoC;QACjE,gBAAgB,EAAE,OAAO,CAAC,GAAG,CAAC,2BAAqC;QACnE,cAAc;QACd,MAAM;QACN,SAAS;QACT,OAAO;QACP,WAAW;QACX,QAAQ,EAAE,QAAoB;KACjC,CAAC,CAAC;IAEH,IAAI,CAAC,IAAA,gBAAQ,EAAC,QAAQ,CAAC,EAAE,CAAC;QACtB,MAAM;YACF,IAAI,EAAE,2BAA2B;SACpC,CAAC;IACN,CAAC;IAED,OAAO,QAAQ,CAAC;AACpB,CAAC"}
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../../src/modules/payments/api.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"const.d.ts","sourceRoot":"","sources":["../../../src/modules/payments/const.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAExC,QAAA,MAAM,sBAAsB,EAAE,OAAO,CAAC,aAAa,CAKlD,CAAC;AAEF,OAAO,EAAE,sBAAsB,EAAE,CAAC"}
1
+ {"version":3,"file":"const.d.ts","sourceRoot":"","sources":["../../../src/modules/payments/const.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAExC,QAAA,MAAM,sBAAsB,EAAE,OAAO,CAAC,aAAa,CAMlD,CAAC;AAEF,OAAO,EAAE,sBAAsB,EAAE,CAAC"}
@@ -6,6 +6,7 @@ const DEFAULT_PAYMENT_ENTITY = {
6
6
  provider: 'wayforpay',
7
7
  platform: 'telegram',
8
8
  currency: 'UAH',
9
+ paymentType: 'subscription',
9
10
  };
10
11
  exports.DEFAULT_PAYMENT_ENTITY = DEFAULT_PAYMENT_ENTITY;
11
12
  //# sourceMappingURL=const.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"const.js","sourceRoot":"","sources":["../../../src/modules/payments/const.ts"],"names":[],"mappings":";;;AAEA,MAAM,sBAAsB,GAA2B;IACnD,MAAM,EAAE,SAAS;IACjB,QAAQ,EAAE,WAAW;IACrB,QAAQ,EAAE,UAAU;IACpB,QAAQ,EAAE,KAAK;CAClB,CAAC;AAEO,wDAAsB"}
1
+ {"version":3,"file":"const.js","sourceRoot":"","sources":["../../../src/modules/payments/const.ts"],"names":[],"mappings":";;;AAEA,MAAM,sBAAsB,GAA2B;IACnD,MAAM,EAAE,SAAS;IACjB,QAAQ,EAAE,WAAW;IACrB,QAAQ,EAAE,UAAU;IACpB,QAAQ,EAAE,KAAK;IACf,WAAW,EAAE,cAAc;CAC9B,CAAC;AAEO,wDAAsB"}
@@ -4,4 +4,12 @@ export * from './types';
4
4
  export * from './const';
5
5
  export * from './api';
6
6
  export * from './utils';
7
+ export * from './wayforpay.service';
8
+ export * from './wayforpay.types';
9
+ export * from './webhook.service';
10
+ export * from './webhook.types';
11
+ export * from './webhook.handler';
12
+ export * from './subscription-check-webhook.service';
13
+ export * from './subscription-check-webhook.types';
14
+ export * from './subscription-check-webhook.handler';
7
15
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/modules/payments/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,OAAO,CAAC;AACtB,cAAc,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/modules/payments/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,OAAO,CAAC;AACtB,cAAc,SAAS,CAAC;AACxB,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sCAAsC,CAAC;AACrD,cAAc,oCAAoC,CAAC;AACnD,cAAc,sCAAsC,CAAC"}
@@ -20,4 +20,12 @@ __exportStar(require("./types"), exports);
20
20
  __exportStar(require("./const"), exports);
21
21
  __exportStar(require("./api"), exports);
22
22
  __exportStar(require("./utils"), exports);
23
+ __exportStar(require("./wayforpay.service"), exports);
24
+ __exportStar(require("./wayforpay.types"), exports);
25
+ __exportStar(require("./webhook.service"), exports);
26
+ __exportStar(require("./webhook.types"), exports);
27
+ __exportStar(require("./webhook.handler"), exports);
28
+ __exportStar(require("./subscription-check-webhook.service"), exports);
29
+ __exportStar(require("./subscription-check-webhook.types"), exports);
30
+ __exportStar(require("./subscription-check-webhook.handler"), exports);
23
31
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/modules/payments/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+CAA6B;AAC7B,4CAA0B;AAC1B,0CAAwB;AACxB,0CAAwB;AACxB,wCAAsB;AACtB,0CAAwB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/modules/payments/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+CAA6B;AAC7B,4CAA0B;AAC1B,0CAAwB;AACxB,0CAAwB;AACxB,wCAAsB;AACtB,0CAAwB;AACxB,sDAAoC;AACpC,oDAAkC;AAClC,oDAAkC;AAClC,kDAAgC;AAChC,oDAAkC;AAClC,uEAAqD;AACrD,qEAAmD;AACnD,uEAAqD"}
@@ -1,11 +1,14 @@
1
1
  import { Logger } from '../logger/types';
2
- import { PaymentEntity, IPaymentRepository, IPaymentService } from './types';
2
+ import { PaymentEntity, IPaymentRepository, IPaymentService, SignatureValidationResult } from './types';
3
+ import type { IWayForPayService } from './wayforpay.types';
3
4
  export declare class PaymentService implements IPaymentService {
4
5
  private readonly logger;
5
6
  private readonly repository;
6
- constructor({ logger, repository }: {
7
+ private readonly wayForPayService;
8
+ constructor({ logger, repository, wayForPayService, }: {
7
9
  logger: Logger;
8
10
  repository?: IPaymentRepository;
11
+ wayForPayService?: IWayForPayService;
9
12
  });
10
13
  getByOrderReference(orderReference: string): Promise<PaymentEntity | null>;
11
14
  getByUser(params: {
@@ -14,6 +17,10 @@ export declare class PaymentService implements IPaymentService {
14
17
  status?: PaymentEntity['status'];
15
18
  }): Promise<PaymentEntity[]>;
16
19
  create(paymentData: Omit<PaymentEntity, 'id'>): Promise<PaymentEntity>;
20
+ updateStatus({ id, status }: {
21
+ id: string;
22
+ status: PaymentEntity['status'];
23
+ }): Promise<void>;
17
24
  changeStatus({ id, status }: {
18
25
  id: string;
19
26
  status: PaymentEntity['status'];
@@ -32,5 +39,38 @@ export declare class PaymentService implements IPaymentService {
32
39
  regularMode?: 'daily' | 'weekly' | 'monthly' | 'yearly';
33
40
  language?: string;
34
41
  }): Promise<PaymentEntity>;
42
+ createTokenPackPaymentIntent(params: {
43
+ userId: string;
44
+ platform: string;
45
+ packId: string;
46
+ productName: string;
47
+ productPrice: number;
48
+ currency: 'UAH' | 'USD';
49
+ language?: string;
50
+ returnUrl?: string;
51
+ }): Promise<PaymentEntity>;
52
+ validateSignature(callbackData: {
53
+ merchantAccount: string;
54
+ orderReference: string;
55
+ amount: number;
56
+ currency: string;
57
+ authCode: string;
58
+ cardPan: string;
59
+ transactionStatus: string;
60
+ reasonCode: string | number;
61
+ merchantSignature: string;
62
+ }): SignatureValidationResult;
63
+ createUpgradePaymentIntent(params: {
64
+ userId: string;
65
+ platform: string;
66
+ currentPlanId: string;
67
+ newPlanId: string;
68
+ productName: string;
69
+ upgradeCost: number;
70
+ currency: 'UAH' | 'USD';
71
+ regularMode?: 'daily' | 'monthly' | 'yearly';
72
+ regularCount?: number;
73
+ language?: string;
74
+ }): Promise<PaymentEntity>;
35
75
  }
36
76
  //# sourceMappingURL=service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../src/modules/payments/service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAEzC,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAG7E,qBAAa,cAAe,YAAW,eAAe;IAClD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAqB;gBAEpC,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,kBAAkB,CAAA;KAAE;IAK1E,mBAAmB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAe1E,SAAS,CAAC,MAAM,EAAE;QAC3B,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,CAAC,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC;KACpC,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAiBf,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC;IAiBtE,YAAY,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAoB5F,yBAAyB,CAClC,MAAM,GAAE;QACJ,QAAQ,CAAC,EAAE,MAAM,CAAC;KAChB,GACP,OAAO,CAAC,aAAa,EAAE,CAAC;IAed,mBAAmB,CAAC,MAAM,EAAE;QACrC,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;QACf,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,EAAE,MAAM,CAAC;QACrB,QAAQ,EAAE,KAAK,GAAG,KAAK,CAAC;QACxB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,WAAW,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAC;QACxD,QAAQ,CAAC,EAAE,MAAM,CAAC;KACrB,GAAG,OAAO,CAAC,aAAa,CAAC;CAuD7B"}
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../src/modules/payments/service.ts"],"names":[],"mappings":"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"}
@@ -7,10 +7,12 @@ exports.PaymentService = void 0;
7
7
  const moment_1 = __importDefault(require("moment"));
8
8
  const repository_1 = require("./repository");
9
9
  const api_1 = require("./api");
10
+ const wayforpay_service_1 = require("./wayforpay.service");
10
11
  class PaymentService {
11
- constructor({ logger, repository }) {
12
+ constructor({ logger, repository, wayForPayService, }) {
12
13
  this.logger = logger;
13
14
  this.repository = repository || new repository_1.PaymentRepository();
15
+ this.wayForPayService = wayForPayService || new wayforpay_service_1.WayForPayService({ logger });
14
16
  }
15
17
  async getByOrderReference(orderReference) {
16
18
  try {
@@ -60,7 +62,7 @@ class PaymentService {
60
62
  throw error;
61
63
  }
62
64
  }
63
- async changeStatus({ id, status }) {
65
+ async updateStatus({ id, status }) {
64
66
  try {
65
67
  await this.repository.updateFields({
66
68
  id,
@@ -69,7 +71,7 @@ class PaymentService {
69
71
  }
70
72
  catch (error) {
71
73
  this.logger.error({
72
- message: 'Error in payment service updateFields',
74
+ message: 'Error in payment service updateStatus',
73
75
  payload: {
74
76
  id,
75
77
  status,
@@ -79,6 +81,9 @@ class PaymentService {
79
81
  throw error;
80
82
  }
81
83
  }
84
+ async changeStatus({ id, status }) {
85
+ return this.updateStatus({ id, status });
86
+ }
82
87
  async getExpiredPendingPayments(params = {}) {
83
88
  try {
84
89
  return await this.repository.getExpiredPendingPayments(params);
@@ -120,6 +125,7 @@ class PaymentService {
120
125
  status: 'pending',
121
126
  paymentLink: paymentResponse.url,
122
127
  planId,
128
+ paymentType: 'subscription',
123
129
  amount: productPrice,
124
130
  currency,
125
131
  createdAt: moment_1.default.utc().toISOString(),
@@ -144,6 +150,129 @@ class PaymentService {
144
150
  throw error;
145
151
  }
146
152
  }
153
+ async createTokenPackPaymentIntent(params) {
154
+ const { userId, platform, packId, productName, productPrice, currency, language, returnUrl } = params;
155
+ try {
156
+ // Step 1: Create payment URL from Wayforpay API for token pack
157
+ const paymentResponse = await (0, api_1.createTokenPackPaymentAPI)({
158
+ userId,
159
+ platform,
160
+ productName,
161
+ productPrice,
162
+ packId,
163
+ currency,
164
+ language,
165
+ returnUrl,
166
+ });
167
+ if (!paymentResponse?.url || !paymentResponse?.orderReference) {
168
+ throw new Error('Failed to get payment URL or order reference from Wayforpay for token pack');
169
+ }
170
+ // Step 2: Create payment record in database
171
+ const paymentEntity = await this.repository.create({
172
+ orderReference: paymentResponse.orderReference,
173
+ userId,
174
+ status: 'pending',
175
+ paymentLink: paymentResponse.url,
176
+ planId: packId,
177
+ paymentType: 'token_pack',
178
+ amount: productPrice,
179
+ currency,
180
+ createdAt: moment_1.default.utc().toISOString(),
181
+ platform: platform,
182
+ provider: 'wayforpay',
183
+ });
184
+ return paymentEntity;
185
+ }
186
+ catch (error) {
187
+ this.logger.error({
188
+ message: 'Error in payment service createTokenPackPaymentIntent',
189
+ payload: {
190
+ userId,
191
+ platform,
192
+ packId,
193
+ productName,
194
+ productPrice,
195
+ currency,
196
+ error: JSON.stringify(error),
197
+ },
198
+ });
199
+ throw error;
200
+ }
201
+ }
202
+ validateSignature(callbackData) {
203
+ try {
204
+ const result = this.wayForPayService.verifyCallbackSignature(callbackData);
205
+ return {
206
+ isValid: result.isValid,
207
+ error: result.error,
208
+ };
209
+ }
210
+ catch (error) {
211
+ this.logger.error({
212
+ message: 'Error in payment service validateSignature',
213
+ payload: {
214
+ orderReference: callbackData.orderReference,
215
+ error: JSON.stringify(error),
216
+ },
217
+ });
218
+ return {
219
+ isValid: false,
220
+ error: 'Error validating signature',
221
+ };
222
+ }
223
+ }
224
+ async createUpgradePaymentIntent(params) {
225
+ const { userId, platform, currentPlanId, newPlanId, productName, upgradeCost, currency, regularMode, regularCount, language, } = params;
226
+ try {
227
+ // Step 1: Create payment URL from Wayforpay API for upgrade
228
+ const paymentResponse = await (0, api_1.createUpgradePaymentAPI)({
229
+ userId,
230
+ platform,
231
+ currentPlanId,
232
+ newPlanId,
233
+ productName,
234
+ productPrice: upgradeCost,
235
+ currency,
236
+ regularMode,
237
+ regularCount,
238
+ language,
239
+ });
240
+ if (!paymentResponse?.url || !paymentResponse?.orderReference) {
241
+ throw new Error('Failed to get payment URL or order reference from Wayforpay for upgrade');
242
+ }
243
+ // Step 2: Create payment record in database
244
+ const paymentEntity = await this.repository.create({
245
+ orderReference: paymentResponse.orderReference,
246
+ userId,
247
+ status: 'pending',
248
+ paymentLink: paymentResponse.url,
249
+ planId: newPlanId,
250
+ paymentType: 'subscription_upgrade',
251
+ amount: upgradeCost,
252
+ currency,
253
+ createdAt: moment_1.default.utc().toISOString(),
254
+ platform: platform,
255
+ provider: 'wayforpay',
256
+ });
257
+ return paymentEntity;
258
+ }
259
+ catch (error) {
260
+ this.logger.error({
261
+ message: 'Error in payment service createUpgradePaymentIntent',
262
+ payload: {
263
+ userId,
264
+ platform,
265
+ currentPlanId,
266
+ newPlanId,
267
+ productName,
268
+ upgradeCost,
269
+ currency,
270
+ error: JSON.stringify(error),
271
+ },
272
+ });
273
+ throw error;
274
+ }
275
+ }
147
276
  }
148
277
  exports.PaymentService = PaymentService;
149
278
  //# sourceMappingURL=service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"service.js","sourceRoot":"","sources":["../../../src/modules/payments/service.ts"],"names":[],"mappings":";;;;;;AAAA,oDAA4B;AAE5B,6CAAiD;AAEjD,+BAAyC;AAEzC,MAAa,cAAc;IAIvB,YAAY,EAAE,MAAM,EAAE,UAAU,EAAuD;QACnF,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,UAAU,GAAG,UAAU,IAAI,IAAI,8BAAiB,EAAE,CAAC;IAC5D,CAAC;IAEM,KAAK,CAAC,mBAAmB,CAAC,cAAsB;QACnD,IAAI,CAAC;YACD,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,cAAc,CAAC,CAAC;QACrE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;gBACd,OAAO,EAAE,8CAA8C;gBACvD,OAAO,EAAE;oBACL,cAAc;oBACd,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;iBAC/B;aACJ,CAAC,CAAC;YACH,OAAO,IAAI,CAAC;QAChB,CAAC;IACL,CAAC;IAEM,KAAK,CAAC,SAAS,CAAC,MAItB;QACG,IAAI,CAAC;YACD,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACnD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;gBACd,OAAO,EAAE,oCAAoC;gBAC7C,OAAO,EAAE;oBACL,MAAM,EAAE,MAAM,CAAC,MAAM;oBACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ;oBACzB,MAAM,EAAE,MAAM,CAAC,MAAM;oBACrB,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;iBAC/B;aACJ,CAAC,CAAC;YACH,OAAO,EAAE,CAAC;QACd,CAAC;IACL,CAAC;IAEM,KAAK,CAAC,MAAM,CAAC,WAAsC;QACtD,IAAI,CAAC;YACD,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QACrD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;gBACd,OAAO,EAAE,iCAAiC;gBAC1C,OAAO,EAAE;oBACL,cAAc,EAAE,WAAW,CAAC,cAAc;oBAC1C,MAAM,EAAE,WAAW,CAAC,MAAM;oBAC1B,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;iBAC/B;aACJ,CAAC,CAAC;YAEH,MAAM,KAAK,CAAC;QAChB,CAAC;IACL,CAAC;IAEM,KAAK,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,MAAM,EAAmD;QACrF,IAAI,CAAC;YACD,MAAM,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC;gBAC/B,EAAE;gBACF,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;aAC/B,CAAC,CAAC;QACP,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;gBACd,OAAO,EAAE,uCAAuC;gBAChD,OAAO,EAAE;oBACL,EAAE;oBACF,MAAM;oBACN,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;iBAC/B;aACJ,CAAC,CAAC;YAEH,MAAM,KAAK,CAAC;QAChB,CAAC;IACL,CAAC;IAEM,KAAK,CAAC,yBAAyB,CAClC,SAEI,EAAE;QAEN,IAAI,CAAC;YACD,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,yBAAyB,CAAC,MAAM,CAAC,CAAC;QACnE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;gBACd,OAAO,EAAE,oDAAoD;gBAC7D,OAAO,EAAE;oBACL,QAAQ,EAAE,MAAM,CAAC,QAAQ;oBACzB,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;iBAC/B;aACJ,CAAC,CAAC;YACH,OAAO,EAAE,CAAC;QACd,CAAC;IACL,CAAC;IAEM,KAAK,CAAC,mBAAmB,CAAC,MAUhC;QACG,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,GACxG,MAAM,CAAC;QAEX,IAAI,CAAC;YACD,gDAAgD;YAChD,+CAA+C;YAC/C,MAAM,eAAe,GAAG,MAAM,IAAA,sBAAgB,EAAC;gBAC3C,MAAM;gBACN,QAAQ;gBACR,WAAW;gBACX,YAAY;gBACZ,MAAM;gBACN,QAAQ;gBACR,YAAY;gBACZ,WAAW;gBACX,QAAQ;aACX,CAAC,CAAC;YAEH,IAAI,CAAC,eAAe,EAAE,GAAG,IAAI,CAAC,eAAe,EAAE,cAAc,EAAE,CAAC;gBAC5D,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;YACnF,CAAC;YAED,4CAA4C;YAC5C,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;gBAC/C,cAAc,EAAE,eAAe,CAAC,cAAc;gBAC9C,MAAM;gBACN,MAAM,EAAE,SAAS;gBACjB,WAAW,EAAE,eAAe,CAAC,GAAG;gBAChC,MAAM;gBACN,MAAM,EAAE,YAAY;gBACpB,QAAQ;gBACR,SAAS,EAAE,gBAAM,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;gBACrC,QAAQ,EAAE,QAAQ;gBAClB,QAAQ,EAAE,WAAW;aACxB,CAAC,CAAC;YAEH,OAAO,aAAa,CAAC;QACzB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;gBACd,OAAO,EAAE,8CAA8C;gBACvD,OAAO,EAAE;oBACL,MAAM;oBACN,QAAQ;oBACR,MAAM;oBACN,WAAW;oBACX,YAAY;oBACZ,QAAQ;oBACR,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;iBAC/B;aACJ,CAAC,CAAC;YAEH,MAAM,KAAK,CAAC;QAChB,CAAC;IACL,CAAC;CACJ;AAtKD,wCAsKC"}
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../../../src/modules/payments/service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,85 @@
1
+ import { Logger } from '../logger/types';
2
+ import type { WayForPayCallbackData } from './wayforpay.types';
3
+ import type { WebhookRequest, WebhookResponse } from './webhook.handler';
4
+ import type { ISubscriptionCheckWebhookService, SubscriptionCheckWebhookResult } from './subscription-check-webhook.types';
5
+ /**
6
+ * Configuration options for the subscription check webhook handler.
7
+ */
8
+ interface SubscriptionCheckWebhookHandlerConfig {
9
+ logger: Logger;
10
+ webhookService?: ISubscriptionCheckWebhookService;
11
+ }
12
+ /**
13
+ * SubscriptionCheckWebhookHandler provides HTTP request handling for WayForPay
14
+ * subscription status check callbacks. It validates incoming requests and delegates
15
+ * processing to the SubscriptionCheckWebhookService.
16
+ *
17
+ * Usage with Express:
18
+ * ```typescript
19
+ * const handler = new SubscriptionCheckWebhookHandler({ logger });
20
+ * app.post('/webhook/subscription-check', (req, res) => handler.handleRequest(req, res));
21
+ * ```
22
+ *
23
+ * Usage with Cloud Functions:
24
+ * ```typescript
25
+ * const handler = new SubscriptionCheckWebhookHandler({ logger });
26
+ * export const subscriptionCheckWebhook = (req, res) => handler.handleRequest(req, res);
27
+ * ```
28
+ */
29
+ export declare class SubscriptionCheckWebhookHandler {
30
+ private readonly logger;
31
+ private readonly webhookService;
32
+ constructor(config: SubscriptionCheckWebhookHandlerConfig);
33
+ /**
34
+ * Handles an incoming HTTP request from WayForPay for subscription checks.
35
+ * Validates the request body, processes the subscription check callback,
36
+ * and returns the appropriate response.
37
+ *
38
+ * @param req - The HTTP request object
39
+ * @param res - The HTTP response object
40
+ */
41
+ handleRequest(req: WebhookRequest, res: WebhookResponse): Promise<void>;
42
+ /**
43
+ * Processes callback data directly without HTTP request parsing.
44
+ * Useful for testing or when data is already parsed.
45
+ *
46
+ * @param callbackData - The parsed callback data from WayForPay
47
+ * @returns Processing result with response to send back to WayForPay
48
+ */
49
+ processCallback(callbackData: WayForPayCallbackData): Promise<SubscriptionCheckWebhookResult>;
50
+ /**
51
+ * Parses and validates the webhook request body.
52
+ */
53
+ private parseRequestBody;
54
+ /**
55
+ * Sends the response back to WayForPay.
56
+ * WayForPay expects a 200 status with a signed response body.
57
+ */
58
+ private sendResponse;
59
+ }
60
+ /**
61
+ * Creates a subscription check webhook handler function for use with serverless platforms.
62
+ * Returns a function that can be directly used as a Cloud Function or Lambda handler.
63
+ *
64
+ * @param config - Configuration options for the webhook handler
65
+ * @returns An async function that handles webhook requests
66
+ *
67
+ * @example
68
+ * ```typescript
69
+ * // Firebase Cloud Functions
70
+ * import * as functions from 'firebase-functions';
71
+ * import { createSubscriptionCheckWebhookHandler } from 'miit-bot-payment';
72
+ *
73
+ * const logger = { info: console.log, warning: console.warn, error: console.error };
74
+ * export const subscriptionCheckWebhook = functions.https.onRequest(
75
+ * createSubscriptionCheckWebhookHandler({ logger })
76
+ * );
77
+ * ```
78
+ */
79
+ export declare function createSubscriptionCheckWebhookHandler(config: SubscriptionCheckWebhookHandlerConfig): (req: WebhookRequest, res: WebhookResponse) => Promise<void>;
80
+ /**
81
+ * Type export for the webhook handler function signature.
82
+ */
83
+ export type SubscriptionCheckWebhookHandlerFunction = (req: WebhookRequest, res: WebhookResponse) => Promise<void>;
84
+ export type { SubscriptionCheckWebhookHandlerConfig };
85
+ //# sourceMappingURL=subscription-check-webhook.handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subscription-check-webhook.handler.d.ts","sourceRoot":"","sources":["../../../src/modules/payments/subscription-check-webhook.handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAEzC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzE,OAAO,KAAK,EACR,gCAAgC,EAChC,8BAA8B,EACjC,MAAM,oCAAoC,CAAC;AAE5C;;GAEG;AACH,UAAU,qCAAqC;IAC3C,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,gCAAgC,CAAC;CACrD;AAWD;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,+BAA+B;IACxC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAmC;gBAEtD,MAAM,EAAE,qCAAqC;IASzD;;;;;;;OAOG;IACU,aAAa,CAAC,GAAG,EAAE,cAAc,EAAE,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IA8BpF;;;;;;OAMG;IACU,eAAe,CACxB,YAAY,EAAE,qBAAqB,GACpC,OAAO,CAAC,8BAA8B,CAAC;IAI1C;;OAEG;IACH,OAAO,CAAC,gBAAgB;IA8CxB;;;OAGG;IACH,OAAO,CAAC,YAAY;CAcvB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,qCAAqC,CACjD,MAAM,EAAE,qCAAqC,GAC9C,CAAC,GAAG,EAAE,cAAc,EAAE,GAAG,EAAE,eAAe,KAAK,OAAO,CAAC,IAAI,CAAC,CAG9D;AAED;;GAEG;AACH,MAAM,MAAM,uCAAuC,GAAG,CAClD,GAAG,EAAE,cAAc,EACnB,GAAG,EAAE,eAAe,KACnB,OAAO,CAAC,IAAI,CAAC,CAAC;AAEnB,YAAY,EAAE,qCAAqC,EAAE,CAAC"}