@explorins/pers-sdk 2.0.7 → 2.0.11

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 (171) hide show
  1. package/README.md +113 -59
  2. package/dist/analytics/index.d.ts +0 -2
  3. package/dist/analytics/index.d.ts.map +1 -1
  4. package/dist/analytics/models/index.d.ts +1 -10
  5. package/dist/analytics/models/index.d.ts.map +1 -1
  6. package/dist/analytics.cjs +44 -29
  7. package/dist/analytics.cjs.map +1 -1
  8. package/dist/analytics.js +45 -2
  9. package/dist/analytics.js.map +1 -1
  10. package/dist/business/index.d.ts +0 -1
  11. package/dist/business/index.d.ts.map +1 -1
  12. package/dist/business.cjs +7 -774
  13. package/dist/business.cjs.map +1 -1
  14. package/dist/business.js +3 -751
  15. package/dist/business.js.map +1 -1
  16. package/dist/campaign/index.d.ts +0 -1
  17. package/dist/campaign/index.d.ts.map +1 -1
  18. package/dist/campaign.cjs +429 -29
  19. package/dist/campaign.cjs.map +1 -1
  20. package/dist/campaign.js +431 -3
  21. package/dist/campaign.js.map +1 -1
  22. package/dist/chunks/business-membership-service-8KC_qRj7.cjs +756 -0
  23. package/dist/chunks/business-membership-service-8KC_qRj7.cjs.map +1 -0
  24. package/dist/chunks/business-membership-service-D6vaVQTR.js +751 -0
  25. package/dist/chunks/business-membership-service-D6vaVQTR.js.map +1 -0
  26. package/dist/chunks/{web3-chain-service-BeBjALg2.cjs → index-B-g2JPVK.cjs} +1 -220
  27. package/dist/chunks/index-B-g2JPVK.cjs.map +1 -0
  28. package/dist/chunks/{web3-chain-service-DKHCnHQX.js → index-CKm_V5XE.js} +2 -219
  29. package/dist/chunks/index-CKm_V5XE.js.map +1 -0
  30. package/dist/chunks/payment-service-Bkw7ZXev.cjs +214 -0
  31. package/dist/chunks/payment-service-Bkw7ZXev.cjs.map +1 -0
  32. package/dist/chunks/payment-service-IvM6rryM.js +211 -0
  33. package/dist/chunks/payment-service-IvM6rryM.js.map +1 -0
  34. package/dist/chunks/{pers-sdk-JIExM712.js → pers-sdk-DYnIZvcx.js} +12 -291
  35. package/dist/chunks/pers-sdk-DYnIZvcx.js.map +1 -0
  36. package/dist/chunks/{pers-sdk-h-uoLpBx.cjs → pers-sdk-Dr9W8stD.cjs} +38 -318
  37. package/dist/chunks/pers-sdk-Dr9W8stD.cjs.map +1 -0
  38. package/dist/chunks/redemption-service-D-hBqh42.js +339 -0
  39. package/dist/chunks/redemption-service-D-hBqh42.js.map +1 -0
  40. package/dist/chunks/redemption-service-rMB6T2W5.cjs +342 -0
  41. package/dist/chunks/redemption-service-rMB6T2W5.cjs.map +1 -0
  42. package/dist/chunks/tenant-service-CsRA3O2V.js +163 -0
  43. package/dist/chunks/tenant-service-CsRA3O2V.js.map +1 -0
  44. package/dist/chunks/tenant-service-fj-pkXTw.cjs +166 -0
  45. package/dist/chunks/tenant-service-fj-pkXTw.cjs.map +1 -0
  46. package/dist/chunks/{transaction-request.builder-DrqTWcyC.cjs → transaction-request.builder-BwWmfHXm.cjs} +6 -6
  47. package/dist/chunks/{transaction-request.builder-DrqTWcyC.cjs.map → transaction-request.builder-BwWmfHXm.cjs.map} +1 -1
  48. package/dist/chunks/{transaction-request.builder-DltmruUC.js → transaction-request.builder-C1FPWmYN.js} +6 -6
  49. package/dist/chunks/{transaction-request.builder-DltmruUC.js.map → transaction-request.builder-C1FPWmYN.js.map} +1 -1
  50. package/dist/chunks/web3-chain-service-D68-0WaW.cjs +224 -0
  51. package/dist/chunks/web3-chain-service-D68-0WaW.cjs.map +1 -0
  52. package/dist/chunks/web3-chain-service-DuvxmKSj.js +221 -0
  53. package/dist/chunks/web3-chain-service-DuvxmKSj.js.map +1 -0
  54. package/dist/chunks/{explorer.utils-Cx3wrqAj.cjs → web3-manager-C_cFaMCm.cjs} +411 -144
  55. package/dist/chunks/web3-manager-C_cFaMCm.cjs.map +1 -0
  56. package/dist/chunks/{explorer.utils-BkS3k8hX.js → web3-manager-OExwBWB7.js} +412 -146
  57. package/dist/chunks/web3-manager-OExwBWB7.js.map +1 -0
  58. package/dist/core.cjs +18 -21
  59. package/dist/core.cjs.map +1 -1
  60. package/dist/core.js +10 -12
  61. package/dist/core.js.map +1 -1
  62. package/dist/donation/index.d.ts +0 -1
  63. package/dist/donation/index.d.ts.map +1 -1
  64. package/dist/donation.cjs +48 -29
  65. package/dist/donation.cjs.map +1 -1
  66. package/dist/donation.js +50 -3
  67. package/dist/donation.js.map +1 -1
  68. package/dist/index.cjs +43 -69
  69. package/dist/index.cjs.map +1 -1
  70. package/dist/index.d.ts +1 -3
  71. package/dist/index.d.ts.map +1 -1
  72. package/dist/index.js +13 -15
  73. package/dist/index.js.map +1 -1
  74. package/dist/managers/analytics-manager.d.ts +1 -1
  75. package/dist/managers/index.d.ts +0 -1
  76. package/dist/managers/index.d.ts.map +1 -1
  77. package/dist/managers/web3-manager.d.ts +1 -1
  78. package/dist/managers/web3-manager.d.ts.map +1 -1
  79. package/dist/node.cjs +10 -13
  80. package/dist/node.cjs.map +1 -1
  81. package/dist/node.js +10 -13
  82. package/dist/node.js.map +1 -1
  83. package/dist/package.json +4 -10
  84. package/dist/payment/index.d.ts +0 -1
  85. package/dist/payment/index.d.ts.map +1 -1
  86. package/dist/payment.cjs +5 -232
  87. package/dist/payment.cjs.map +1 -1
  88. package/dist/payment.js +3 -210
  89. package/dist/payment.js.map +1 -1
  90. package/dist/pers-sdk.d.ts +1 -13
  91. package/dist/pers-sdk.d.ts.map +1 -1
  92. package/dist/redemption/index.d.ts +0 -1
  93. package/dist/redemption/index.d.ts.map +1 -1
  94. package/dist/redemption/services/redemption-service.d.ts +1 -2
  95. package/dist/redemption/services/redemption-service.d.ts.map +1 -1
  96. package/dist/redemption.cjs +5 -360
  97. package/dist/redemption.cjs.map +1 -1
  98. package/dist/redemption.js +3 -338
  99. package/dist/redemption.js.map +1 -1
  100. package/dist/shared/interfaces/pers-shared-lib.interfaces.d.ts +15 -21
  101. package/dist/shared/interfaces/pers-shared-lib.interfaces.d.ts.map +1 -1
  102. package/dist/tenant/index.d.ts +0 -1
  103. package/dist/tenant/index.d.ts.map +1 -1
  104. package/dist/tenant.cjs +5 -184
  105. package/dist/tenant.cjs.map +1 -1
  106. package/dist/tenant.js +3 -162
  107. package/dist/tenant.js.map +1 -1
  108. package/dist/token/index.d.ts +0 -1
  109. package/dist/token/index.d.ts.map +1 -1
  110. package/dist/token.cjs +1 -25
  111. package/dist/token.cjs.map +1 -1
  112. package/dist/token.js +1 -1
  113. package/dist/transaction/models/transaction-request.builder.d.ts +4 -4
  114. package/dist/transaction/models/transaction-request.builder.d.ts.map +1 -1
  115. package/dist/transaction.cjs +1 -1
  116. package/dist/transaction.js +1 -1
  117. package/dist/user/index.d.ts +0 -1
  118. package/dist/user/index.d.ts.map +1 -1
  119. package/dist/user-status/index.d.ts +0 -1
  120. package/dist/user-status/index.d.ts.map +1 -1
  121. package/dist/user-status.cjs +0 -25
  122. package/dist/user-status.cjs.map +1 -1
  123. package/dist/user-status.js +0 -1
  124. package/dist/user-status.js.map +1 -1
  125. package/dist/user.cjs +209 -29
  126. package/dist/user.cjs.map +1 -1
  127. package/dist/user.js +211 -3
  128. package/dist/user.js.map +1 -1
  129. package/dist/web3/index.d.ts +1 -0
  130. package/dist/web3/index.d.ts.map +1 -1
  131. package/dist/web3-chain/index.d.ts +0 -1
  132. package/dist/web3-chain/index.d.ts.map +1 -1
  133. package/dist/web3-chain.cjs +14 -29
  134. package/dist/web3-chain.cjs.map +1 -1
  135. package/dist/web3-chain.js +16 -3
  136. package/dist/web3-chain.js.map +1 -1
  137. package/dist/web3-manager.cjs +13 -0
  138. package/dist/web3-manager.cjs.map +1 -0
  139. package/dist/web3-manager.js +7 -0
  140. package/dist/web3-manager.js.map +1 -0
  141. package/dist/web3.cjs +10 -6
  142. package/dist/web3.cjs.map +1 -1
  143. package/dist/web3.js +4 -1
  144. package/dist/web3.js.map +1 -1
  145. package/package.json +4 -10
  146. package/dist/chunks/analytics-service-CitlimKJ.cjs +0 -49
  147. package/dist/chunks/analytics-service-CitlimKJ.cjs.map +0 -1
  148. package/dist/chunks/analytics-service-CxyrOwel.js +0 -46
  149. package/dist/chunks/analytics-service-CxyrOwel.js.map +0 -1
  150. package/dist/chunks/campaign-service-CdEz0jpP.cjs +0 -435
  151. package/dist/chunks/campaign-service-CdEz0jpP.cjs.map +0 -1
  152. package/dist/chunks/campaign-service-DrTAqFZM.js +0 -432
  153. package/dist/chunks/campaign-service-DrTAqFZM.js.map +0 -1
  154. package/dist/chunks/donation-service--6cnTvWq.cjs +0 -54
  155. package/dist/chunks/donation-service--6cnTvWq.cjs.map +0 -1
  156. package/dist/chunks/donation-service-xiXZ2Eto.js +0 -51
  157. package/dist/chunks/donation-service-xiXZ2Eto.js.map +0 -1
  158. package/dist/chunks/explorer.utils-BkS3k8hX.js.map +0 -1
  159. package/dist/chunks/explorer.utils-Cx3wrqAj.cjs.map +0 -1
  160. package/dist/chunks/index-BtDNXaFq.js +0 -13
  161. package/dist/chunks/index-BtDNXaFq.js.map +0 -1
  162. package/dist/chunks/index-CMk3Aqkk.cjs +0 -15
  163. package/dist/chunks/index-CMk3Aqkk.cjs.map +0 -1
  164. package/dist/chunks/pers-sdk-JIExM712.js.map +0 -1
  165. package/dist/chunks/pers-sdk-h-uoLpBx.cjs.map +0 -1
  166. package/dist/chunks/user-service-BGP3SZpk.js +0 -212
  167. package/dist/chunks/user-service-BGP3SZpk.js.map +0 -1
  168. package/dist/chunks/user-service-gITOx4qj.cjs +0 -215
  169. package/dist/chunks/user-service-gITOx4qj.cjs.map +0 -1
  170. package/dist/chunks/web3-chain-service-BeBjALg2.cjs.map +0 -1
  171. package/dist/chunks/web3-chain-service-DKHCnHQX.js.map +0 -1
@@ -0,0 +1,214 @@
1
+ 'use strict';
2
+
3
+ require('@explorins/pers-shared');
4
+ var paginationUtils = require('./pagination-utils-B2jRHMSO.cjs');
5
+
6
+ /**
7
+ * Platform-Agnostic Purchase API Client (RESTful Architecture)
8
+ *
9
+ * Handles purchase and payment operations using the PERS backend's new RESTful endpoints.
10
+ * Uses @explorins/pers-shared DTOs for consistency with backend.
11
+ *
12
+ * Migration Status: Updated to match /purchases controller (replaces /purchase endpoints)
13
+ *
14
+ * Available Access Levels:
15
+ * - PUBLIC: Project key authentication for catalog browsing and payment operations
16
+ * - USER: Requires user authentication JWT (purchase creation, history access)
17
+ * - ADMIN: Requires tenant admin privileges (not implemented in this client)
18
+ *
19
+ * Note: This SDK focuses on backend purchase operations only.
20
+ * Payment provider integrations (Stripe, etc.) should remain in infrastructure layer.
21
+ */
22
+ class PurchaseApi {
23
+ constructor(apiClient) {
24
+ this.apiClient = apiClient;
25
+ this.basePath = '/purchases';
26
+ }
27
+ // ==========================================
28
+ // PUBLIC OPERATIONS (Project Key)
29
+ // ==========================================
30
+ /**
31
+ * PUBLIC: Get purchase tokens (Intelligent Access)
32
+ *
33
+ * RESTful endpoint: GET /purchases/tokens
34
+ * Replaces: GET /purchase/token
35
+ *
36
+ * INTELLIGENT ACCESS:
37
+ * - PUBLIC (Project Key): Returns active tokens only (active parameter ignored)
38
+ * - ADMIN (Tenant Admin JWT): Returns filtered results based on active parameter
39
+ *
40
+ * @param active Filter by active status
41
+ * @param options Pagination options (page, limit, sortBy, sortOrder)
42
+ * @returns Paginated response with purchase tokens
43
+ */
44
+ async getPurchaseTokens(active, options) {
45
+ const params = paginationUtils.buildPaginationParams(options);
46
+ if (active !== undefined) {
47
+ params.append('active', String(active));
48
+ }
49
+ const response = await this.apiClient.get(`${this.basePath}/tokens?${params.toString()}`);
50
+ return paginationUtils.normalizeToPaginated(response);
51
+ }
52
+ /**
53
+ * PUBLIC: Get donation types
54
+ *
55
+ * RESTful endpoint: GET /purchases/donation-types
56
+ * Replaces: GET /purchase/donation/type
57
+ *
58
+ * @param options Pagination options (page, limit, sortBy, sortOrder)
59
+ * @returns Paginated response with donation types
60
+ */
61
+ async getDonationTypes(options) {
62
+ const params = paginationUtils.buildPaginationParams(options);
63
+ const response = await this.apiClient.get(`${this.basePath}/donation-types?${params.toString()}`);
64
+ return paginationUtils.normalizeToPaginated(response);
65
+ }
66
+ // ==========================================
67
+ // PAYMENT OPERATIONS (FINANCIAL - CRITICAL)
68
+ // ==========================================
69
+ /**
70
+ * PUBLIC: Create payment intent (FINANCIAL OPERATION)
71
+ *
72
+ * RESTful endpoint: POST /purchases/payment-intents
73
+ * Replaces: POST /purchase/payment-intent
74
+ *
75
+ * CRITICAL: Handles real money operations - tenant context required
76
+ */
77
+ async createPaymentIntent(amount, currency, receiptEmail, description) {
78
+ const body = {
79
+ amount,
80
+ currency,
81
+ receiptEmail,
82
+ description
83
+ };
84
+ return this.apiClient.post(`${this.basePath}/payment-intents`, body);
85
+ }
86
+ /**
87
+ * PUBLIC: Update payment intent (FINANCIAL OPERATION)
88
+ *
89
+ * RESTful endpoint: PUT /purchases/payment-intents/{paymentIntentId}
90
+ * Replaces: PUT /purchase/payment-intent/{paymentIntentId}
91
+ *
92
+ * CRITICAL: Handles real money operations - tenant context required
93
+ */
94
+ async updatePaymentIntent(paymentIntentId, amount, currency, receiptEmail, description) {
95
+ const body = {
96
+ amount,
97
+ currency,
98
+ receiptEmail,
99
+ description
100
+ };
101
+ return this.apiClient.put(`${this.basePath}/payment-intents/${paymentIntentId}`, body);
102
+ }
103
+ /**
104
+ * PUBLIC: Cancel payment intent (FINANCIAL OPERATION)
105
+ *
106
+ * RESTful endpoint: DELETE /purchases/payment-intents/{paymentIntentId}
107
+ * Replaces: DELETE /purchase/payment-intent/{paymentIntentId}
108
+ *
109
+ * CRITICAL: Handles real money operations - tenant context required
110
+ */
111
+ async cancelPaymentIntent(paymentIntentId) {
112
+ return this.apiClient.delete(`${this.basePath}/payment-intents/${paymentIntentId}`);
113
+ }
114
+ // ==========================================
115
+ // USER OPERATIONS (JWT + Project Key)
116
+ // ==========================================
117
+ /**
118
+ * USER: Create purchase (BUSINESS CRITICAL - FINANCIAL TRANSACTION)
119
+ *
120
+ * RESTful endpoint: POST /purchases
121
+ * Replaces: POST /purchase/auth
122
+ *
123
+ * USER-ONLY: Requires user authentication JWT for purchase creation
124
+ * CRITICAL: Real financial transaction with Stripe integration
125
+ */
126
+ async createUserPurchase(paymentIntentId, amount, purchaseTokenId, donationTypeId, donationAccountAddress) {
127
+ const body = {
128
+ quantity: amount,
129
+ purchaseTokenId: purchaseTokenId || '',
130
+ donationTypeId,
131
+ donationAccountAddress,
132
+ paymentIntentId
133
+ };
134
+ return this.apiClient.post(`${this.basePath}`, body);
135
+ }
136
+ /**
137
+ * USER: Get user purchase history
138
+ *
139
+ * RESTful endpoint: GET /purchases/me/history
140
+ * Replaces: GET /purchase/auth
141
+ *
142
+ * USER-ONLY: Get authenticated user's purchase history
143
+ * FINANCIAL RECORDS: User attribution critical for compliance
144
+ *
145
+ * @param options - Pagination options (page, limit, sortBy, sortOrder)
146
+ * @returns Paginated response with purchase history
147
+ */
148
+ async getUserPurchaseHistory(options) {
149
+ const params = paginationUtils.buildPaginationParams(options);
150
+ const response = await this.apiClient.get(`${this.basePath}/me/history?${params.toString()}`);
151
+ return paginationUtils.normalizeToPaginated(response);
152
+ }
153
+ }
154
+
155
+ /**
156
+ * Platform-Agnostic Payment Service
157
+ *
158
+ * Contains payment business logic and operations that work across platforms.
159
+ * No framework dependencies - pure TypeScript business logic.
160
+ *
161
+ * Focuses only on actual backend capabilities.
162
+ * Payment provider logic (Stripe, etc.) should remain in infrastructure layer.
163
+ */
164
+ class PaymentService {
165
+ constructor(paymentApi) {
166
+ this.paymentApi = paymentApi;
167
+ }
168
+ // ==========================================
169
+ // PUBLIC OPERATIONS
170
+ // ==========================================
171
+ /**
172
+ * PUBLIC: Get active purchase tokens
173
+ */
174
+ async getActivePurchaseTokens(active = true, options) {
175
+ return this.paymentApi.getPurchaseTokens(active, options);
176
+ }
177
+ /**
178
+ * PUBLIC: Create payment intent
179
+ */
180
+ async createPaymentIntent(amount, currency, receiptEmail, description) {
181
+ return this.paymentApi.createPaymentIntent(amount, currency, receiptEmail, description);
182
+ }
183
+ /**
184
+ * PUBLIC: Update payment intent
185
+ */
186
+ async updatePaymentIntent(paymentIntentId, amount, currency, receiptEmail, description) {
187
+ return this.paymentApi.updatePaymentIntent(paymentIntentId, amount, currency, receiptEmail, description);
188
+ }
189
+ /**
190
+ * PUBLIC: Cancel payment intent
191
+ */
192
+ async cancelPaymentIntent(paymentIntentId) {
193
+ return this.paymentApi.cancelPaymentIntent(paymentIntentId);
194
+ }
195
+ // ==========================================
196
+ // AUTHENTICATED OPERATIONS
197
+ // ==========================================
198
+ /**
199
+ * AUTH: Create purchase
200
+ */
201
+ async createPurchase(paymentIntentId, amount, purchaseTokenId, donationTypeId, donationAccountAddress) {
202
+ return this.paymentApi.createUserPurchase(paymentIntentId, amount, purchaseTokenId, donationTypeId, donationAccountAddress);
203
+ }
204
+ /**
205
+ * AUTH: Get all user purchases
206
+ */
207
+ async getAllUserPurchases(options) {
208
+ return this.paymentApi.getUserPurchaseHistory(options);
209
+ }
210
+ }
211
+
212
+ exports.PaymentService = PaymentService;
213
+ exports.PurchaseApi = PurchaseApi;
214
+ //# sourceMappingURL=payment-service-Bkw7ZXev.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payment-service-Bkw7ZXev.cjs","sources":["../../src/payment/api/payment-api.ts","../../src/payment/services/payment-service.ts"],"sourcesContent":[null,null],"names":["buildPaginationParams","normalizeToPaginated"],"mappings":"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"}
@@ -0,0 +1,211 @@
1
+ import '@explorins/pers-shared';
2
+ import { b as buildPaginationParams, n as normalizeToPaginated } from './pagination-utils-9vQ-Npkr.js';
3
+
4
+ /**
5
+ * Platform-Agnostic Purchase API Client (RESTful Architecture)
6
+ *
7
+ * Handles purchase and payment operations using the PERS backend's new RESTful endpoints.
8
+ * Uses @explorins/pers-shared DTOs for consistency with backend.
9
+ *
10
+ * Migration Status: Updated to match /purchases controller (replaces /purchase endpoints)
11
+ *
12
+ * Available Access Levels:
13
+ * - PUBLIC: Project key authentication for catalog browsing and payment operations
14
+ * - USER: Requires user authentication JWT (purchase creation, history access)
15
+ * - ADMIN: Requires tenant admin privileges (not implemented in this client)
16
+ *
17
+ * Note: This SDK focuses on backend purchase operations only.
18
+ * Payment provider integrations (Stripe, etc.) should remain in infrastructure layer.
19
+ */
20
+ class PurchaseApi {
21
+ constructor(apiClient) {
22
+ this.apiClient = apiClient;
23
+ this.basePath = '/purchases';
24
+ }
25
+ // ==========================================
26
+ // PUBLIC OPERATIONS (Project Key)
27
+ // ==========================================
28
+ /**
29
+ * PUBLIC: Get purchase tokens (Intelligent Access)
30
+ *
31
+ * RESTful endpoint: GET /purchases/tokens
32
+ * Replaces: GET /purchase/token
33
+ *
34
+ * INTELLIGENT ACCESS:
35
+ * - PUBLIC (Project Key): Returns active tokens only (active parameter ignored)
36
+ * - ADMIN (Tenant Admin JWT): Returns filtered results based on active parameter
37
+ *
38
+ * @param active Filter by active status
39
+ * @param options Pagination options (page, limit, sortBy, sortOrder)
40
+ * @returns Paginated response with purchase tokens
41
+ */
42
+ async getPurchaseTokens(active, options) {
43
+ const params = buildPaginationParams(options);
44
+ if (active !== undefined) {
45
+ params.append('active', String(active));
46
+ }
47
+ const response = await this.apiClient.get(`${this.basePath}/tokens?${params.toString()}`);
48
+ return normalizeToPaginated(response);
49
+ }
50
+ /**
51
+ * PUBLIC: Get donation types
52
+ *
53
+ * RESTful endpoint: GET /purchases/donation-types
54
+ * Replaces: GET /purchase/donation/type
55
+ *
56
+ * @param options Pagination options (page, limit, sortBy, sortOrder)
57
+ * @returns Paginated response with donation types
58
+ */
59
+ async getDonationTypes(options) {
60
+ const params = buildPaginationParams(options);
61
+ const response = await this.apiClient.get(`${this.basePath}/donation-types?${params.toString()}`);
62
+ return normalizeToPaginated(response);
63
+ }
64
+ // ==========================================
65
+ // PAYMENT OPERATIONS (FINANCIAL - CRITICAL)
66
+ // ==========================================
67
+ /**
68
+ * PUBLIC: Create payment intent (FINANCIAL OPERATION)
69
+ *
70
+ * RESTful endpoint: POST /purchases/payment-intents
71
+ * Replaces: POST /purchase/payment-intent
72
+ *
73
+ * CRITICAL: Handles real money operations - tenant context required
74
+ */
75
+ async createPaymentIntent(amount, currency, receiptEmail, description) {
76
+ const body = {
77
+ amount,
78
+ currency,
79
+ receiptEmail,
80
+ description
81
+ };
82
+ return this.apiClient.post(`${this.basePath}/payment-intents`, body);
83
+ }
84
+ /**
85
+ * PUBLIC: Update payment intent (FINANCIAL OPERATION)
86
+ *
87
+ * RESTful endpoint: PUT /purchases/payment-intents/{paymentIntentId}
88
+ * Replaces: PUT /purchase/payment-intent/{paymentIntentId}
89
+ *
90
+ * CRITICAL: Handles real money operations - tenant context required
91
+ */
92
+ async updatePaymentIntent(paymentIntentId, amount, currency, receiptEmail, description) {
93
+ const body = {
94
+ amount,
95
+ currency,
96
+ receiptEmail,
97
+ description
98
+ };
99
+ return this.apiClient.put(`${this.basePath}/payment-intents/${paymentIntentId}`, body);
100
+ }
101
+ /**
102
+ * PUBLIC: Cancel payment intent (FINANCIAL OPERATION)
103
+ *
104
+ * RESTful endpoint: DELETE /purchases/payment-intents/{paymentIntentId}
105
+ * Replaces: DELETE /purchase/payment-intent/{paymentIntentId}
106
+ *
107
+ * CRITICAL: Handles real money operations - tenant context required
108
+ */
109
+ async cancelPaymentIntent(paymentIntentId) {
110
+ return this.apiClient.delete(`${this.basePath}/payment-intents/${paymentIntentId}`);
111
+ }
112
+ // ==========================================
113
+ // USER OPERATIONS (JWT + Project Key)
114
+ // ==========================================
115
+ /**
116
+ * USER: Create purchase (BUSINESS CRITICAL - FINANCIAL TRANSACTION)
117
+ *
118
+ * RESTful endpoint: POST /purchases
119
+ * Replaces: POST /purchase/auth
120
+ *
121
+ * USER-ONLY: Requires user authentication JWT for purchase creation
122
+ * CRITICAL: Real financial transaction with Stripe integration
123
+ */
124
+ async createUserPurchase(paymentIntentId, amount, purchaseTokenId, donationTypeId, donationAccountAddress) {
125
+ const body = {
126
+ quantity: amount,
127
+ purchaseTokenId: purchaseTokenId || '',
128
+ donationTypeId,
129
+ donationAccountAddress,
130
+ paymentIntentId
131
+ };
132
+ return this.apiClient.post(`${this.basePath}`, body);
133
+ }
134
+ /**
135
+ * USER: Get user purchase history
136
+ *
137
+ * RESTful endpoint: GET /purchases/me/history
138
+ * Replaces: GET /purchase/auth
139
+ *
140
+ * USER-ONLY: Get authenticated user's purchase history
141
+ * FINANCIAL RECORDS: User attribution critical for compliance
142
+ *
143
+ * @param options - Pagination options (page, limit, sortBy, sortOrder)
144
+ * @returns Paginated response with purchase history
145
+ */
146
+ async getUserPurchaseHistory(options) {
147
+ const params = buildPaginationParams(options);
148
+ const response = await this.apiClient.get(`${this.basePath}/me/history?${params.toString()}`);
149
+ return normalizeToPaginated(response);
150
+ }
151
+ }
152
+
153
+ /**
154
+ * Platform-Agnostic Payment Service
155
+ *
156
+ * Contains payment business logic and operations that work across platforms.
157
+ * No framework dependencies - pure TypeScript business logic.
158
+ *
159
+ * Focuses only on actual backend capabilities.
160
+ * Payment provider logic (Stripe, etc.) should remain in infrastructure layer.
161
+ */
162
+ class PaymentService {
163
+ constructor(paymentApi) {
164
+ this.paymentApi = paymentApi;
165
+ }
166
+ // ==========================================
167
+ // PUBLIC OPERATIONS
168
+ // ==========================================
169
+ /**
170
+ * PUBLIC: Get active purchase tokens
171
+ */
172
+ async getActivePurchaseTokens(active = true, options) {
173
+ return this.paymentApi.getPurchaseTokens(active, options);
174
+ }
175
+ /**
176
+ * PUBLIC: Create payment intent
177
+ */
178
+ async createPaymentIntent(amount, currency, receiptEmail, description) {
179
+ return this.paymentApi.createPaymentIntent(amount, currency, receiptEmail, description);
180
+ }
181
+ /**
182
+ * PUBLIC: Update payment intent
183
+ */
184
+ async updatePaymentIntent(paymentIntentId, amount, currency, receiptEmail, description) {
185
+ return this.paymentApi.updatePaymentIntent(paymentIntentId, amount, currency, receiptEmail, description);
186
+ }
187
+ /**
188
+ * PUBLIC: Cancel payment intent
189
+ */
190
+ async cancelPaymentIntent(paymentIntentId) {
191
+ return this.paymentApi.cancelPaymentIntent(paymentIntentId);
192
+ }
193
+ // ==========================================
194
+ // AUTHENTICATED OPERATIONS
195
+ // ==========================================
196
+ /**
197
+ * AUTH: Create purchase
198
+ */
199
+ async createPurchase(paymentIntentId, amount, purchaseTokenId, donationTypeId, donationAccountAddress) {
200
+ return this.paymentApi.createUserPurchase(paymentIntentId, amount, purchaseTokenId, donationTypeId, donationAccountAddress);
201
+ }
202
+ /**
203
+ * AUTH: Get all user purchases
204
+ */
205
+ async getAllUserPurchases(options) {
206
+ return this.paymentApi.getUserPurchaseHistory(options);
207
+ }
208
+ }
209
+
210
+ export { PurchaseApi as P, PaymentService as a };
211
+ //# sourceMappingURL=payment-service-IvM6rryM.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payment-service-IvM6rryM.js","sources":["../../src/payment/api/payment-api.ts","../../src/payment/services/payment-service.ts"],"sourcesContent":[null,null],"names":[],"mappings":"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"}