@forklaunch/implementation-ecommerce-stripe 1.0.9 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/domain/types/payment.mapper.types.d.ts +2 -0
- package/lib/domain/types/payment.mapper.types.d.ts.map +1 -1
- package/lib/eject/domain/types/payment.mapper.types.ts +3 -0
- package/lib/eject/services/payment.service.ts +7 -0
- package/lib/services/index.js +7 -0
- package/lib/services/index.mjs +7 -0
- package/lib/services/payment.service.d.ts +1 -0
- package/lib/services/payment.service.d.ts.map +1 -1
- package/package.json +8 -8
|
@@ -9,6 +9,8 @@ import Stripe from 'stripe';
|
|
|
9
9
|
*/
|
|
10
10
|
export type StripePaymentMappers<Entities extends BasePaymentEntities, Dto extends BasePaymentDtos> = {
|
|
11
11
|
PaymentMapper: {
|
|
12
|
+
/** Optional authoritative local relation guard before/after secret retrieval. */
|
|
13
|
+
validateResume?: (payment: Dto['PaymentMapper'], em: EntityManager) => Promise<void>;
|
|
12
14
|
entity: Entities['PaymentMapper'];
|
|
13
15
|
toDto: (entity: InferEntity<Entities['PaymentMapper']>) => Promise<Dto['PaymentMapper']>;
|
|
14
16
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"payment.mapper.types.d.ts","sourceRoot":"","sources":["../../../domain/types/payment.mapper.types.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,mBAAmB,EACpB,MAAM,iDAAiD,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B;;;;;GAKG;AACH,MAAM,MAAM,oBAAoB,CAC9B,QAAQ,SAAS,mBAAmB,EACpC,GAAG,SAAS,eAAe,IACzB;IACF,aAAa,EAAE;QACb,MAAM,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC;QAClC,KAAK,EAAE,CACL,MAAM,EAAE,WAAW,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,KAC3C,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC;KACpC,CAAC;IACF,mBAAmB,EAAE;QACnB,MAAM,EAAE,QAAQ,CAAC,qBAAqB,CAAC,CAAC;QACxC,QAAQ,EAAE,CACR,GAAG,EAAE,GAAG,CAAC,qBAAqB,CAAC,EAC/B,EAAE,EAAE,aAAa,EACjB,aAAa,EAAE,MAAM,CAAC,aAAa,EACnC,GAAG,IAAI,EAAE,OAAO,EAAE,KACf,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;KAC5D,CAAC;CACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"payment.mapper.types.d.ts","sourceRoot":"","sources":["../../../domain/types/payment.mapper.types.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,mBAAmB,EACpB,MAAM,iDAAiD,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B;;;;;GAKG;AACH,MAAM,MAAM,oBAAoB,CAC9B,QAAQ,SAAS,mBAAmB,EACpC,GAAG,SAAS,eAAe,IACzB;IACF,aAAa,EAAE;QACb,iFAAiF;QACjF,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,aAAa,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;QAErF,MAAM,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC;QAClC,KAAK,EAAE,CACL,MAAM,EAAE,WAAW,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,KAC3C,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC;KACpC,CAAC;IACF,mBAAmB,EAAE;QACnB,MAAM,EAAE,QAAQ,CAAC,qBAAqB,CAAC,CAAC;QACxC,QAAQ,EAAE,CACR,GAAG,EAAE,GAAG,CAAC,qBAAqB,CAAC,EAC/B,EAAE,EAAE,aAAa,EACjB,aAAa,EAAE,MAAM,CAAC,aAAa,EACnC,GAAG,IAAI,EAAE,OAAO,EAAE,KACf,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;KAC5D,CAAC;CACH,CAAC"}
|
|
@@ -16,6 +16,9 @@ export type StripePaymentMappers<
|
|
|
16
16
|
Dto extends BasePaymentDtos
|
|
17
17
|
> = {
|
|
18
18
|
PaymentMapper: {
|
|
19
|
+
/** Optional authoritative local relation guard before/after secret retrieval. */
|
|
20
|
+
validateResume?: (payment: Dto['PaymentMapper'], em: EntityManager) => Promise<void>;
|
|
21
|
+
|
|
19
22
|
entity: Entities['PaymentMapper'];
|
|
20
23
|
toDto: (
|
|
21
24
|
entity: InferEntity<Entities['PaymentMapper']>
|
|
@@ -32,6 +32,7 @@ export class StripePaymentService<
|
|
|
32
32
|
Dto extends BasePaymentDtos = BasePaymentDtos
|
|
33
33
|
> implements PaymentService {
|
|
34
34
|
basePaymentService: BasePaymentService<SchemaValidator, Entities, Dto>;
|
|
35
|
+
private readonly validateResume?: StripePaymentMappers<Entities, Dto>['PaymentMapper']['validateResume'];
|
|
35
36
|
protected readonly stripeClient: Stripe;
|
|
36
37
|
protected readonly em: EntityManager;
|
|
37
38
|
protected readonly openTelemetryCollector: OpenTelemetryCollector<MetricsDefinition>;
|
|
@@ -66,6 +67,7 @@ export class StripePaymentService<
|
|
|
66
67
|
}
|
|
67
68
|
) {
|
|
68
69
|
this.stripeClient = stripeClient;
|
|
70
|
+
this.validateResume = mappers.PaymentMapper.validateResume;
|
|
69
71
|
this.em = em;
|
|
70
72
|
this.openTelemetryCollector = openTelemetryCollector;
|
|
71
73
|
if (options?.connect) {
|
|
@@ -201,6 +203,7 @@ export class StripePaymentService<
|
|
|
201
203
|
em?: EntityManager
|
|
202
204
|
): Promise<Dto['PaymentMapper'] & { clientSecret?: string }> {
|
|
203
205
|
const payment = await this.basePaymentService.getPayment(idDto, em);
|
|
206
|
+
await this.validateResume?.(payment, em ?? this.em);
|
|
204
207
|
if (!payment.providerRef) {
|
|
205
208
|
return payment;
|
|
206
209
|
}
|
|
@@ -211,6 +214,10 @@ export class StripePaymentService<
|
|
|
211
214
|
? { stripeAccount: this.connect.connectedAccountId }
|
|
212
215
|
: undefined
|
|
213
216
|
);
|
|
217
|
+
if (paymentIntent?.id !== payment.providerRef) {
|
|
218
|
+
throw new Error('Stripe returned an invalid PaymentIntent response');
|
|
219
|
+
}
|
|
220
|
+
await this.validateResume?.(payment, em ?? this.em);
|
|
214
221
|
return {
|
|
215
222
|
...payment,
|
|
216
223
|
clientSecret: paymentIntent.client_secret ?? undefined
|
package/lib/services/index.js
CHANGED
|
@@ -28,12 +28,14 @@ module.exports = __toCommonJS(services_exports);
|
|
|
28
28
|
var import_services = require("@forklaunch/implementation-ecommerce-base/services");
|
|
29
29
|
var StripePaymentService = class {
|
|
30
30
|
basePaymentService;
|
|
31
|
+
validateResume;
|
|
31
32
|
stripeClient;
|
|
32
33
|
em;
|
|
33
34
|
openTelemetryCollector;
|
|
34
35
|
connect;
|
|
35
36
|
constructor(stripeClient, em, openTelemetryCollector, schemaValidator, mappers, options) {
|
|
36
37
|
this.stripeClient = stripeClient;
|
|
38
|
+
this.validateResume = mappers.PaymentMapper.validateResume;
|
|
37
39
|
this.em = em;
|
|
38
40
|
this.openTelemetryCollector = openTelemetryCollector;
|
|
39
41
|
if (options?.connect) {
|
|
@@ -126,6 +128,7 @@ var StripePaymentService = class {
|
|
|
126
128
|
*/
|
|
127
129
|
async resumePayment(idDto, em) {
|
|
128
130
|
const payment = await this.basePaymentService.getPayment(idDto, em);
|
|
131
|
+
await this.validateResume?.(payment, em ?? this.em);
|
|
129
132
|
if (!payment.providerRef) {
|
|
130
133
|
return payment;
|
|
131
134
|
}
|
|
@@ -134,6 +137,10 @@ var StripePaymentService = class {
|
|
|
134
137
|
{},
|
|
135
138
|
this.connect ? { stripeAccount: this.connect.connectedAccountId } : void 0
|
|
136
139
|
);
|
|
140
|
+
if (paymentIntent?.id !== payment.providerRef) {
|
|
141
|
+
throw new Error("Stripe returned an invalid PaymentIntent response");
|
|
142
|
+
}
|
|
143
|
+
await this.validateResume?.(payment, em ?? this.em);
|
|
137
144
|
return {
|
|
138
145
|
...payment,
|
|
139
146
|
clientSecret: paymentIntent.client_secret ?? void 0
|
package/lib/services/index.mjs
CHANGED
|
@@ -2,12 +2,14 @@
|
|
|
2
2
|
import { BasePaymentService } from "@forklaunch/implementation-ecommerce-base/services";
|
|
3
3
|
var StripePaymentService = class {
|
|
4
4
|
basePaymentService;
|
|
5
|
+
validateResume;
|
|
5
6
|
stripeClient;
|
|
6
7
|
em;
|
|
7
8
|
openTelemetryCollector;
|
|
8
9
|
connect;
|
|
9
10
|
constructor(stripeClient, em, openTelemetryCollector, schemaValidator, mappers, options) {
|
|
10
11
|
this.stripeClient = stripeClient;
|
|
12
|
+
this.validateResume = mappers.PaymentMapper.validateResume;
|
|
11
13
|
this.em = em;
|
|
12
14
|
this.openTelemetryCollector = openTelemetryCollector;
|
|
13
15
|
if (options?.connect) {
|
|
@@ -100,6 +102,7 @@ var StripePaymentService = class {
|
|
|
100
102
|
*/
|
|
101
103
|
async resumePayment(idDto, em) {
|
|
102
104
|
const payment = await this.basePaymentService.getPayment(idDto, em);
|
|
105
|
+
await this.validateResume?.(payment, em ?? this.em);
|
|
103
106
|
if (!payment.providerRef) {
|
|
104
107
|
return payment;
|
|
105
108
|
}
|
|
@@ -108,6 +111,10 @@ var StripePaymentService = class {
|
|
|
108
111
|
{},
|
|
109
112
|
this.connect ? { stripeAccount: this.connect.connectedAccountId } : void 0
|
|
110
113
|
);
|
|
114
|
+
if (paymentIntent?.id !== payment.providerRef) {
|
|
115
|
+
throw new Error("Stripe returned an invalid PaymentIntent response");
|
|
116
|
+
}
|
|
117
|
+
await this.validateResume?.(payment, em ?? this.em);
|
|
111
118
|
return {
|
|
112
119
|
...payment,
|
|
113
120
|
clientSecret: paymentIntent.client_secret ?? void 0
|
|
@@ -16,6 +16,7 @@ import { StripePaymentMappers } from '../domain/types/payment.mapper.types';
|
|
|
16
16
|
*/
|
|
17
17
|
export declare class StripePaymentService<SchemaValidator extends AnySchemaValidator, Entities extends BasePaymentEntities, Dto extends BasePaymentDtos = BasePaymentDtos> implements PaymentService {
|
|
18
18
|
basePaymentService: BasePaymentService<SchemaValidator, Entities, Dto>;
|
|
19
|
+
private readonly validateResume?;
|
|
19
20
|
protected readonly stripeClient: Stripe;
|
|
20
21
|
protected readonly em: EntityManager;
|
|
21
22
|
protected readonly openTelemetryCollector: OpenTelemetryCollector<MetricsDefinition>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"payment.service.d.ts","sourceRoot":"","sources":["../../services/payment.service.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,gBAAgB,EACjB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,kBAAkB,EAAE,MAAM,oDAAoD,CAAC;AACxF,OAAO,EACL,eAAe,EACf,mBAAmB,EACpB,MAAM,iDAAiD,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,6CAA6C,CAAC;AAC7E,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,EACf,MAAM,wCAAwC,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAE5E;;;;;;GAMG;AACH,qBAAa,oBAAoB,CAC/B,eAAe,SAAS,kBAAkB,EAC1C,QAAQ,SAAS,mBAAmB,EACpC,GAAG,SAAS,eAAe,GAAG,eAAe,CAC7C,YAAW,cAAc;IACzB,kBAAkB,EAAE,kBAAkB,CAAC,eAAe,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;IACvE,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IACxC,SAAS,CAAC,QAAQ,CAAC,EAAE,EAAE,aAAa,CAAC;IACrC,SAAS,CAAC,QAAQ,CAAC,sBAAsB,EAAE,sBAAsB,CAAC,iBAAiB,CAAC,CAAC;IACrF,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;QAC3B,kBAAkB,EAAE,MAAM,CAAC;QAC3B,cAAc,EAAE,MAAM,CAAC;KACxB,CAAC;IAEF,YACE,YAAY,EAAE,MAAM,EACpB,EAAE,EAAE,aAAa,EACjB,sBAAsB,EAAE,sBAAsB,CAAC,iBAAiB,CAAC,EACjE,eAAe,EAAE,eAAe,EAChC,OAAO,EAAE,oBAAoB,CAAC,QAAQ,EAAE,GAAG,CAAC,EAC5C,OAAO,CAAC,EAAE;QACR,SAAS,CAAC,EAAE,gBAAgB,CAAC;QAC7B;;;;;;;;;;WAUG;QACH,OAAO,CAAC,EAAE;YACR,kBAAkB,EAAE,MAAM,CAAC;YAC3B,cAAc,CAAC,EAAE,MAAM,CAAC;SACzB,CAAC;KACH,
|
|
1
|
+
{"version":3,"file":"payment.service.d.ts","sourceRoot":"","sources":["../../services/payment.service.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@forklaunch/implementation-ecommerce-stripe",
|
|
3
|
-
"version": "1.0
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"description": "Stripe implementation for forklaunch ecommerce",
|
|
5
5
|
"homepage": "https://github.com/forklaunch/forklaunch-js#readme",
|
|
6
6
|
"bugs": {
|
|
@@ -30,17 +30,17 @@
|
|
|
30
30
|
"lib/**"
|
|
31
31
|
],
|
|
32
32
|
"dependencies": {
|
|
33
|
-
"@forklaunch/common": "^1.2.
|
|
34
|
-
"@forklaunch/core": "^3.
|
|
35
|
-
"@forklaunch/
|
|
36
|
-
"@forklaunch/
|
|
33
|
+
"@forklaunch/common": "^1.2.32",
|
|
34
|
+
"@forklaunch/core": "^3.3.0",
|
|
35
|
+
"@forklaunch/implementation-ecommerce-base": "^1.0.16",
|
|
36
|
+
"@forklaunch/interfaces-ecommerce": "^1.0.14",
|
|
37
|
+
"@forklaunch/internal": "^1.2.35",
|
|
38
|
+
"@forklaunch/validator": "^1.3.0",
|
|
37
39
|
"@mikro-orm/core": "7.2.5",
|
|
38
40
|
"@sinclair/typebox": "^0.34.52",
|
|
39
41
|
"ajv": "^8.20.0",
|
|
40
42
|
"stripe": "^22.6.2",
|
|
41
|
-
"zod": "^4.6.7"
|
|
42
|
-
"@forklaunch/interfaces-ecommerce": "^1.0.13",
|
|
43
|
-
"@forklaunch/implementation-ecommerce-base": "^1.0.14"
|
|
43
|
+
"zod": "^4.6.7"
|
|
44
44
|
},
|
|
45
45
|
"devDependencies": {
|
|
46
46
|
"depcheck": "^1.4.7",
|