@unchainedshop/core-payment 3.0.0-alpha7 → 3.0.0-rc1
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/db/PaymentCredentialsCollection.d.ts +10 -3
- package/lib/db/PaymentCredentialsCollection.d.ts.map +1 -1
- package/lib/db/PaymentCredentialsCollection.js +3 -3
- package/lib/db/PaymentCredentialsCollection.js.map +1 -1
- package/lib/db/PaymentProvidersCollection.d.ts +16 -2
- package/lib/db/PaymentProvidersCollection.d.ts.map +1 -1
- package/lib/db/PaymentProvidersCollection.js +6 -0
- package/lib/db/PaymentProvidersCollection.js.map +1 -1
- package/lib/director/PaymentAdapter.d.ts +1 -1
- package/lib/director/PaymentAdapter.d.ts.map +1 -1
- package/lib/director/PaymentAdapter.js.map +1 -1
- package/lib/director/PaymentDirector.d.ts +1 -1
- package/lib/director/PaymentDirector.d.ts.map +1 -1
- package/lib/director/PaymentDirector.js +5 -8
- package/lib/director/PaymentDirector.js.map +1 -1
- package/lib/director/PaymentPricingAdapter.d.ts +2 -4
- package/lib/director/PaymentPricingAdapter.d.ts.map +1 -1
- package/lib/director/PaymentPricingAdapter.js.map +1 -1
- package/lib/director/PaymentPricingDirector.d.ts +3 -4
- package/lib/director/PaymentPricingDirector.d.ts.map +1 -1
- package/lib/director/PaymentPricingDirector.js.map +1 -1
- package/lib/module/configurePaymentCredentialsModule.d.ts +11 -12
- package/lib/module/configurePaymentCredentialsModule.d.ts.map +1 -1
- package/lib/module/configurePaymentCredentialsModule.js +3 -3
- package/lib/module/configurePaymentCredentialsModule.js.map +1 -1
- package/lib/module/configurePaymentModule.d.ts +35 -10
- package/lib/module/configurePaymentModule.d.ts.map +1 -1
- package/lib/module/configurePaymentModule.js +2 -18
- package/lib/module/configurePaymentModule.js.map +1 -1
- package/lib/module/configurePaymentProvidersModule.d.ts +17 -41
- package/lib/module/configurePaymentProvidersModule.d.ts.map +1 -1
- package/lib/module/configurePaymentProvidersModule.js +0 -101
- package/lib/module/configurePaymentProvidersModule.js.map +1 -1
- package/lib/payment-index.d.ts +2 -8
- package/lib/payment-index.d.ts.map +1 -1
- package/lib/payment-index.js +2 -8
- package/lib/payment-index.js.map +1 -1
- package/lib/payment-settings.d.ts +6 -7
- package/lib/payment-settings.d.ts.map +1 -1
- package/lib/payment-settings.js.map +1 -1
- package/lib/types.d.ts +8 -22
- package/lib/types.d.ts.map +1 -1
- package/lib/types.js.map +1 -1
- package/package.json +9 -12
- package/src/db/PaymentCredentialsCollection.ts +13 -5
- package/src/db/PaymentProvidersCollection.ts +19 -2
- package/src/module/configurePaymentCredentialsModule.ts +42 -40
- package/src/module/configurePaymentModule.ts +5 -57
- package/src/module/configurePaymentProvidersModule.ts +27 -239
- package/src/module/payment-index.test.ts +1 -1
- package/src/payment-index.ts +2 -10
- package/src/payment-settings.ts +6 -7
- package/tsconfig.json +5 -7
- package/src/director/PaymentAdapter.ts +0 -63
- package/src/director/PaymentDirector.ts +0 -99
- package/src/director/PaymentError.ts +0 -6
- package/src/director/PaymentPricingAdapter.ts +0 -87
- package/src/director/PaymentPricingDirector.ts +0 -101
- package/src/director/PaymentPricingSheet.ts +0 -87
- package/src/director/PaymentProviderType.ts +0 -5
- package/src/types.ts +0 -108
|
@@ -1,9 +1,5 @@
|
|
|
1
1
|
import { emit, registerEvents } from '@unchainedshop/events';
|
|
2
2
|
import { generateDbFilterById, generateDbObjectId } from '@unchainedshop/mongodb';
|
|
3
|
-
import { PaymentPricingDirector } from '../director/PaymentPricingDirector.js';
|
|
4
|
-
import { PaymentPricingSheet } from '../director/PaymentPricingSheet.js';
|
|
5
|
-
import { PaymentDirector } from '../director/PaymentDirector.js';
|
|
6
|
-
import { paymentSettings } from '../payment-settings.js';
|
|
7
3
|
const PAYMENT_PROVIDER_EVENTS = [
|
|
8
4
|
'PAYMENT_PROVIDER_CREATE',
|
|
9
5
|
'PAYMENT_PROVIDER_UPDATE',
|
|
@@ -12,16 +8,8 @@ const PAYMENT_PROVIDER_EVENTS = [
|
|
|
12
8
|
export const buildFindSelector = ({ type } = {}) => {
|
|
13
9
|
return { ...(type ? { type } : {}), deleted: null };
|
|
14
10
|
};
|
|
15
|
-
const asyncFilter = async (arr, predicate) => {
|
|
16
|
-
const results = await Promise.all(arr.map(predicate));
|
|
17
|
-
return arr.filter((_v, index) => results[index]);
|
|
18
|
-
};
|
|
19
11
|
export const configurePaymentProvidersModule = (PaymentProviders) => {
|
|
20
12
|
registerEvents(PAYMENT_PROVIDER_EVENTS);
|
|
21
|
-
const getPaymentAdapter = async (paymentProviderId, paymentContext, unchainedAPI) => {
|
|
22
|
-
const provider = await PaymentProviders.findOne(generateDbFilterById(paymentProviderId), {});
|
|
23
|
-
return PaymentDirector.actions(provider, paymentContext, unchainedAPI);
|
|
24
|
-
};
|
|
25
13
|
return {
|
|
26
14
|
// Queries
|
|
27
15
|
count: async (query) => {
|
|
@@ -39,100 +27,11 @@ export const configurePaymentProvidersModule = (PaymentProviders) => {
|
|
|
39
27
|
const providerCount = await PaymentProviders.countDocuments(generateDbFilterById(paymentProviderId, { deleted: null }), { limit: 1 });
|
|
40
28
|
return !!providerCount;
|
|
41
29
|
},
|
|
42
|
-
findInterface: (paymentProvider) => {
|
|
43
|
-
const Adapter = PaymentDirector.getAdapter(paymentProvider.adapterKey);
|
|
44
|
-
if (!Adapter)
|
|
45
|
-
return null;
|
|
46
|
-
return {
|
|
47
|
-
_id: Adapter.key,
|
|
48
|
-
label: Adapter.label,
|
|
49
|
-
version: Adapter.version,
|
|
50
|
-
};
|
|
51
|
-
},
|
|
52
|
-
pricingSheet: (params) => {
|
|
53
|
-
return PaymentPricingSheet(params);
|
|
54
|
-
},
|
|
55
|
-
findInterfaces: ({ type }) => {
|
|
56
|
-
return PaymentDirector.getAdapters()
|
|
57
|
-
.filter((Adapter) => Adapter.typeSupported(type))
|
|
58
|
-
.map((Adapter) => ({
|
|
59
|
-
_id: Adapter.key,
|
|
60
|
-
label: Adapter.label,
|
|
61
|
-
version: Adapter.version,
|
|
62
|
-
}));
|
|
63
|
-
},
|
|
64
|
-
findSupported: async (paymentContext, unchainedAPI) => {
|
|
65
|
-
const allProviders = await PaymentProviders.find({ deleted: null }).toArray();
|
|
66
|
-
const providers = await asyncFilter(allProviders, async (provider) => {
|
|
67
|
-
try {
|
|
68
|
-
const director = await PaymentDirector.actions(provider, paymentContext, unchainedAPI);
|
|
69
|
-
return director.isActive();
|
|
70
|
-
}
|
|
71
|
-
catch {
|
|
72
|
-
return false;
|
|
73
|
-
}
|
|
74
|
-
});
|
|
75
|
-
return paymentSettings.filterSupportedProviders({
|
|
76
|
-
providers,
|
|
77
|
-
order: paymentContext.order,
|
|
78
|
-
}, unchainedAPI);
|
|
79
|
-
},
|
|
80
|
-
determineDefault: async (paymentProviders, deliveryContext, unchainedAPI) => {
|
|
81
|
-
return paymentSettings.determineDefaultProvider({
|
|
82
|
-
providers: paymentProviders,
|
|
83
|
-
...deliveryContext,
|
|
84
|
-
}, unchainedAPI);
|
|
85
|
-
},
|
|
86
|
-
// Payment Adapter
|
|
87
|
-
configurationError: async (paymentProvider, unchainedAPI) => {
|
|
88
|
-
const actions = await PaymentDirector.actions(paymentProvider, {}, unchainedAPI);
|
|
89
|
-
return actions.configurationError();
|
|
90
|
-
},
|
|
91
|
-
calculate: async (pricingContext, unchainedAPI) => {
|
|
92
|
-
const pricing = await PaymentPricingDirector.actions(pricingContext, unchainedAPI);
|
|
93
|
-
return pricing.calculate();
|
|
94
|
-
},
|
|
95
|
-
isActive: async (paymentProvider, unchainedAPI) => {
|
|
96
|
-
const actions = await PaymentDirector.actions(paymentProvider, {}, unchainedAPI);
|
|
97
|
-
return actions.isActive();
|
|
98
|
-
},
|
|
99
|
-
isPayLaterAllowed: async (paymentProvider, unchainedAPI) => {
|
|
100
|
-
const actions = await PaymentDirector.actions(paymentProvider, {}, unchainedAPI);
|
|
101
|
-
return actions.isPayLaterAllowed();
|
|
102
|
-
},
|
|
103
|
-
charge: async (paymentProviderId, paymentContext, unchainedAPI) => {
|
|
104
|
-
const adapter = await getPaymentAdapter(paymentProviderId, paymentContext, unchainedAPI);
|
|
105
|
-
return adapter.charge();
|
|
106
|
-
},
|
|
107
|
-
register: async (paymentProviderId, paymentContext, unchainedAPI) => {
|
|
108
|
-
const adapter = await getPaymentAdapter(paymentProviderId, paymentContext, unchainedAPI);
|
|
109
|
-
return adapter.register();
|
|
110
|
-
},
|
|
111
|
-
sign: async (paymentProviderId, paymentContext, unchainedAPI) => {
|
|
112
|
-
const adapter = await getPaymentAdapter(paymentProviderId, paymentContext, unchainedAPI);
|
|
113
|
-
return adapter.sign();
|
|
114
|
-
},
|
|
115
|
-
validate: async (paymentProviderId, paymentContext, unchainedAPI) => {
|
|
116
|
-
const adapter = await getPaymentAdapter(paymentProviderId, paymentContext, unchainedAPI);
|
|
117
|
-
return adapter.validate();
|
|
118
|
-
},
|
|
119
|
-
cancel: async (paymentProviderId, paymentContext, unchainedAPI) => {
|
|
120
|
-
const adapter = await getPaymentAdapter(paymentProviderId, paymentContext, unchainedAPI);
|
|
121
|
-
return adapter.cancel();
|
|
122
|
-
},
|
|
123
|
-
confirm: async (paymentProviderId, paymentContext, unchainedAPI) => {
|
|
124
|
-
const adapter = await getPaymentAdapter(paymentProviderId, paymentContext, unchainedAPI);
|
|
125
|
-
return adapter.confirm();
|
|
126
|
-
},
|
|
127
30
|
// Mutations
|
|
128
31
|
create: async (doc) => {
|
|
129
|
-
const Adapter = PaymentDirector.getAdapter(doc.adapterKey);
|
|
130
|
-
if (!Adapter)
|
|
131
|
-
return null;
|
|
132
32
|
const { insertedId: paymentProviderId } = await PaymentProviders.insertOne({
|
|
133
33
|
_id: generateDbObjectId(),
|
|
134
34
|
created: new Date(),
|
|
135
|
-
configuration: Adapter.initialConfiguration,
|
|
136
35
|
...doc,
|
|
137
36
|
});
|
|
138
37
|
const paymentProvider = await PaymentProviders.findOne(generateDbFilterById(paymentProviderId), {});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configurePaymentProvidersModule.js","sourceRoot":"","sources":["../../src/module/configurePaymentProvidersModule.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"configurePaymentProvidersModule.js","sourceRoot":"","sources":["../../src/module/configurePaymentProvidersModule.ts"],"names":[],"mappings":"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"}
|
package/lib/payment-index.d.ts
CHANGED
|
@@ -1,11 +1,5 @@
|
|
|
1
|
-
export * from './types.js';
|
|
2
1
|
export * from './module/configurePaymentModule.js';
|
|
3
2
|
export * from './payment-settings.js';
|
|
4
|
-
export * from './
|
|
5
|
-
export * from './
|
|
6
|
-
export * from './director/PaymentPricingAdapter.js';
|
|
7
|
-
export * from './director/PaymentPricingDirector.js';
|
|
8
|
-
export * from './director/PaymentPricingSheet.js';
|
|
9
|
-
export { PaymentError } from './director/PaymentError.js';
|
|
10
|
-
export { PaymentProviderType } from './director/PaymentProviderType.js';
|
|
3
|
+
export * from './db/PaymentCredentialsCollection.js';
|
|
4
|
+
export * from './db/PaymentProvidersCollection.js';
|
|
11
5
|
//# sourceMappingURL=payment-index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"payment-index.d.ts","sourceRoot":"","sources":["../src/payment-index.ts"],"names":[],"mappings":"AAAA,cAAc,
|
|
1
|
+
{"version":3,"file":"payment-index.d.ts","sourceRoot":"","sources":["../src/payment-index.ts"],"names":[],"mappings":"AAAA,cAAc,oCAAoC,CAAC;AACnD,cAAc,uBAAuB,CAAC;AACtC,cAAc,sCAAsC,CAAC;AACrD,cAAc,oCAAoC,CAAC"}
|
package/lib/payment-index.js
CHANGED
|
@@ -1,11 +1,5 @@
|
|
|
1
|
-
export * from './types.js';
|
|
2
1
|
export * from './module/configurePaymentModule.js';
|
|
3
2
|
export * from './payment-settings.js';
|
|
4
|
-
export * from './
|
|
5
|
-
export * from './
|
|
6
|
-
export * from './director/PaymentPricingAdapter.js';
|
|
7
|
-
export * from './director/PaymentPricingDirector.js';
|
|
8
|
-
export * from './director/PaymentPricingSheet.js';
|
|
9
|
-
export { PaymentError } from './director/PaymentError.js';
|
|
10
|
-
export { PaymentProviderType } from './director/PaymentProviderType.js';
|
|
3
|
+
export * from './db/PaymentCredentialsCollection.js';
|
|
4
|
+
export * from './db/PaymentProvidersCollection.js';
|
|
11
5
|
//# sourceMappingURL=payment-index.js.map
|
package/lib/payment-index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"payment-index.js","sourceRoot":"","sources":["../src/payment-index.ts"],"names":[],"mappings":"AAAA,cAAc,
|
|
1
|
+
{"version":3,"file":"payment-index.js","sourceRoot":"","sources":["../src/payment-index.ts"],"names":[],"mappings":"AAAA,cAAc,oCAAoC,CAAC;AACnD,cAAc,uBAAuB,CAAC;AACtC,cAAc,sCAAsC,CAAC;AACrD,cAAc,oCAAoC,CAAC"}
|
|
@@ -1,15 +1,14 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
export type FilterProviders = (params: {
|
|
1
|
+
import { PaymentCredentials } from './db/PaymentCredentialsCollection.js';
|
|
2
|
+
import { PaymentProvider } from './db/PaymentProvidersCollection.js';
|
|
3
|
+
export type FilterProviders<Order = unknown, UnchainedAPI = unknown> = (params: {
|
|
5
4
|
providers: Array<PaymentProvider>;
|
|
6
5
|
order: Order;
|
|
7
|
-
},
|
|
8
|
-
export type DetermineDefaultProvider = (params: {
|
|
6
|
+
}, unchainedAPI: UnchainedAPI) => Promise<Array<PaymentProvider>>;
|
|
7
|
+
export type DetermineDefaultProvider<Order = unknown, UnchainedAPI = unknown> = (params: {
|
|
9
8
|
providers: Array<PaymentProvider>;
|
|
10
9
|
order: Order;
|
|
11
10
|
paymentCredentials?: Array<PaymentCredentials>;
|
|
12
|
-
},
|
|
11
|
+
}, unchainedAPI: UnchainedAPI) => Promise<PaymentProvider>;
|
|
13
12
|
export interface PaymentSettingsOptions {
|
|
14
13
|
sortProviders?: (a: PaymentProvider, b: PaymentProvider) => number;
|
|
15
14
|
filterSupportedProviders?: FilterProviders;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"payment-settings.d.ts","sourceRoot":"","sources":["../src/payment-settings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"payment-settings.d.ts","sourceRoot":"","sources":["../src/payment-settings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAErE,MAAM,MAAM,eAAe,CAAC,KAAK,GAAG,OAAO,EAAE,YAAY,GAAG,OAAO,IAAI,CACrE,MAAM,EAAE;IACN,SAAS,EAAE,KAAK,CAAC,eAAe,CAAC,CAAC;IAClC,KAAK,EAAE,KAAK,CAAC;CACd,EACD,YAAY,EAAE,YAAY,KACvB,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC;AAErC,MAAM,MAAM,wBAAwB,CAAC,KAAK,GAAG,OAAO,EAAE,YAAY,GAAG,OAAO,IAAI,CAC9E,MAAM,EAAE;IACN,SAAS,EAAE,KAAK,CAAC,eAAe,CAAC,CAAC;IAClC,KAAK,EAAE,KAAK,CAAC;IACb,kBAAkB,CAAC,EAAE,KAAK,CAAC,kBAAkB,CAAC,CAAC;CAChD,EACD,YAAY,EAAE,YAAY,KACvB,OAAO,CAAC,eAAe,CAAC,CAAC;AAC9B,MAAM,WAAW,sBAAsB;IACrC,aAAa,CAAC,EAAE,CAAC,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE,eAAe,KAAK,MAAM,CAAC;IACnE,wBAAwB,CAAC,EAAE,eAAe,CAAC;IAC3C,wBAAwB,CAAC,EAAE,wBAAwB,CAAC;CACrD;AAED,MAAM,WAAW,eAAe;IAC9B,wBAAwB,EAAE,eAAe,CAAC;IAC1C,wBAAwB,EAAE,wBAAwB,CAAC;IACnD,iBAAiB,EAAE,CAAC,OAAO,CAAC,EAAE,sBAAsB,KAAK,IAAI,CAAC;CAC/D;AAoBD,eAAO,MAAM,eAAe,EAAE,eAW7B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"payment-settings.js","sourceRoot":"","sources":["../src/payment-settings.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"payment-settings.js","sourceRoot":"","sources":["../src/payment-settings.ts"],"names":[],"mappings":"AA+BA,MAAM,kBAAkB,GAAG,CAAC,IAAqB,EAAE,KAAsB,EAAE,EAAE;IAC3E,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC;AAC9E,CAAC,CAAC;AAEF,MAAM,YAAY,GAAoB,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE;IAC5D,OAAO,SAAS,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;AAC5C,CAAC,CAAC;AAEF,MAAM,sBAAsB,GAA6B,KAAK,EAAE,EAAE,SAAS,EAAE,kBAAkB,EAAE,EAAE,EAAE;IACnG,MAAM,+BAA+B,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,wBAAwB,EAAE,EAAE;QAClF,OAAO,kBAAkB,CAAC,IAAI,CAAC,CAAC,iBAAiB,EAAE,EAAE;YACnD,OAAO,wBAAwB,CAAC,GAAG,KAAK,iBAAiB,CAAC,iBAAiB,CAAC;QAC9E,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IACH,IAAI,+BAA+B;QAAE,OAAO,+BAA+B,CAAC;IAC5E,OAAO,SAAS,EAAE,MAAM,GAAG,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC;AAC/C,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAoB;IAC9C,wBAAwB,EAAE,IAAI;IAC9B,wBAAwB,EAAE,IAAI;IAE9B,iBAAiB,CAAC,EAChB,wBAAwB,GAAG,YAAY,EACvC,wBAAwB,GAAG,sBAAsB,GAClD,GAAG,EAAE;QACJ,eAAe,CAAC,wBAAwB,GAAG,wBAAwB,CAAC;QACpE,eAAe,CAAC,wBAAwB,GAAG,wBAAwB,CAAC;IACtE,CAAC;CACF,CAAC"}
|
package/lib/types.d.ts
CHANGED
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import { IBaseAdapter, IBaseDirector } from '@unchainedshop/utils';
|
|
2
|
-
import
|
|
3
|
-
import { Order } from '@unchainedshop/core-orders';
|
|
4
|
-
import { OrderPayment } from '@unchainedshop/core-orders';
|
|
5
|
-
import { UnchainedCore } from '@unchainedshop/core';
|
|
2
|
+
import { TimestampFields } from '@unchainedshop/mongodb';
|
|
3
|
+
import type { Order, OrderPayment } from '@unchainedshop/core-orders';
|
|
6
4
|
export declare enum PaymentProviderType {
|
|
7
5
|
CARD = "CARD",
|
|
8
6
|
INVOICE = "INVOICE",
|
|
@@ -18,14 +16,6 @@ export type PaymentProvider = {
|
|
|
18
16
|
adapterKey: string;
|
|
19
17
|
configuration: PaymentConfiguration;
|
|
20
18
|
} & TimestampFields;
|
|
21
|
-
export type PaymentCredentials = {
|
|
22
|
-
_id?: string;
|
|
23
|
-
paymentProviderId: string;
|
|
24
|
-
userId: string;
|
|
25
|
-
token?: string;
|
|
26
|
-
isPreferred?: boolean;
|
|
27
|
-
meta: any;
|
|
28
|
-
} & TimestampFields;
|
|
29
19
|
export declare enum PaymentError {
|
|
30
20
|
ADAPTER_NOT_FOUND = "ADAPTER_NOT_FOUND",
|
|
31
21
|
NOT_IMPLEMENTED = "NOT_IMPLEMENTED",
|
|
@@ -61,20 +51,16 @@ export interface IPaymentActions {
|
|
|
61
51
|
cancel: (transactionContext?: any) => Promise<boolean>;
|
|
62
52
|
confirm: (transactionContext?: any) => Promise<boolean>;
|
|
63
53
|
}
|
|
64
|
-
export type IPaymentAdapter = IBaseAdapter & {
|
|
54
|
+
export type IPaymentAdapter<UnchainedAPI = any> = IBaseAdapter & {
|
|
65
55
|
initialConfiguration: PaymentConfiguration;
|
|
66
56
|
typeSupported: (type: PaymentProviderType) => boolean;
|
|
67
|
-
actions: (
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
paymentProvider: PaymentProvider;
|
|
72
|
-
};
|
|
73
|
-
context: UnchainedCore;
|
|
74
|
-
}) => IPaymentActions;
|
|
57
|
+
actions: (config: PaymentConfiguration, context: PaymentContext & {
|
|
58
|
+
paymentProviderId: string;
|
|
59
|
+
paymentProvider: PaymentProvider;
|
|
60
|
+
} & UnchainedAPI) => IPaymentActions;
|
|
75
61
|
};
|
|
76
62
|
export type IPaymentDirector = IBaseDirector<IPaymentAdapter> & {
|
|
77
|
-
actions: (paymentProvider: PaymentProvider, paymentContext: PaymentContext, unchainedAPI:
|
|
63
|
+
actions: (paymentProvider: PaymentProvider, paymentContext: PaymentContext, unchainedAPI: any) => Promise<IPaymentActions>;
|
|
78
64
|
};
|
|
79
65
|
export interface PaymentInterface {
|
|
80
66
|
_id: string;
|
package/lib/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/lib/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAIA,MAAM,CAAN,IAAY,mBAIX;AAJD,WAAY,mBAAmB;IAC7B,oCAAa,CAAA;IACb,0CAAmB,CAAA;IACnB,0CAAmB,CAAA;AACrB,CAAC,EAJW,mBAAmB,KAAnB,mBAAmB,QAI9B;AAcD,MAAM,CAAN,IAAY,YAKX;AALD,WAAY,YAAY;IACtB,uDAAuC,CAAA;IACvC,mDAAmC,CAAA;IACnC,qEAAqD,CAAA;IACrD,uDAAuC,CAAA;AACzC,CAAC,EALW,YAAY,KAAZ,YAAY,QAKvB;AAkED;;GAEG"}
|
package/package.json
CHANGED
|
@@ -1,16 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@unchainedshop/core-payment",
|
|
3
|
-
"version": "3.0.0-
|
|
3
|
+
"version": "3.0.0-rc1",
|
|
4
4
|
"main": "lib/payment-index.js",
|
|
5
|
-
"exports": {
|
|
6
|
-
".": "./lib/payment-index.js",
|
|
7
|
-
"./*": "./lib/*"
|
|
8
|
-
},
|
|
9
5
|
"types": "lib/payment-index.d.ts",
|
|
10
6
|
"type": "module",
|
|
11
7
|
"scripts": {
|
|
12
|
-
"clean": "
|
|
13
|
-
"
|
|
8
|
+
"clean": "tsc -b --clean",
|
|
9
|
+
"build": "tsc -b",
|
|
10
|
+
"prepublishOnly": "npm run clean && npm run build",
|
|
14
11
|
"watch": "tsc -w",
|
|
15
12
|
"test": "NODE_OPTIONS=--experimental-vm-modules jest --detectOpenHandles --forceExit",
|
|
16
13
|
"test:watch": "NODE_OPTIONS=--experimental-vm-modules jest --watch --detectOpenHandles --forceExit"
|
|
@@ -31,14 +28,14 @@
|
|
|
31
28
|
},
|
|
32
29
|
"homepage": "https://github.com/unchainedshop/unchained#readme",
|
|
33
30
|
"dependencies": {
|
|
34
|
-
"@unchainedshop/events": "^3.0.0-
|
|
35
|
-
"@unchainedshop/logger": "^3.0.0-
|
|
36
|
-
"@unchainedshop/utils": "^3.0.0-
|
|
31
|
+
"@unchainedshop/events": "^3.0.0-rc1",
|
|
32
|
+
"@unchainedshop/logger": "^3.0.0-rc1",
|
|
33
|
+
"@unchainedshop/utils": "^3.0.0-rc1"
|
|
37
34
|
},
|
|
38
35
|
"devDependencies": {
|
|
39
|
-
"@types/node": "^22.
|
|
36
|
+
"@types/node": "^22.10.2",
|
|
40
37
|
"jest": "^29.7.0",
|
|
41
38
|
"ts-jest": "^29.2.5",
|
|
42
|
-
"typescript": "^5.
|
|
39
|
+
"typescript": "^5.7.2"
|
|
43
40
|
}
|
|
44
41
|
}
|
|
@@ -1,13 +1,21 @@
|
|
|
1
|
-
import { mongodb, buildDbIndexes } from '@unchainedshop/mongodb';
|
|
2
|
-
|
|
1
|
+
import { mongodb, buildDbIndexes, TimestampFields } from '@unchainedshop/mongodb';
|
|
2
|
+
|
|
3
|
+
export type PaymentCredentials = {
|
|
4
|
+
_id?: string;
|
|
5
|
+
paymentProviderId: string;
|
|
6
|
+
userId: string;
|
|
7
|
+
token?: string;
|
|
8
|
+
isPreferred?: boolean;
|
|
9
|
+
meta: any;
|
|
10
|
+
} & TimestampFields;
|
|
3
11
|
|
|
4
12
|
export const PaymentCredentialsCollection = async (db: mongodb.Db) => {
|
|
5
|
-
const
|
|
13
|
+
const PaymentCredentialsCol = db.collection<PaymentCredentials>('payment_credentials');
|
|
6
14
|
|
|
7
|
-
await buildDbIndexes<
|
|
15
|
+
await buildDbIndexes<PaymentCredentials>(PaymentCredentialsCol, [
|
|
8
16
|
{ index: { paymentProviderId: 1 } },
|
|
9
17
|
{ index: { userId: 1 } },
|
|
10
18
|
]);
|
|
11
19
|
|
|
12
|
-
return
|
|
20
|
+
return PaymentCredentialsCol;
|
|
13
21
|
};
|
|
@@ -1,5 +1,22 @@
|
|
|
1
|
-
import { mongodb, buildDbIndexes } from '@unchainedshop/mongodb';
|
|
2
|
-
|
|
1
|
+
import { mongodb, buildDbIndexes, TimestampFields } from '@unchainedshop/mongodb';
|
|
2
|
+
|
|
3
|
+
export enum PaymentProviderType {
|
|
4
|
+
CARD = 'CARD',
|
|
5
|
+
INVOICE = 'INVOICE',
|
|
6
|
+
GENERIC = 'GENERIC',
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export type PaymentConfiguration = Array<{
|
|
10
|
+
key: string;
|
|
11
|
+
value: string | null;
|
|
12
|
+
}>;
|
|
13
|
+
|
|
14
|
+
export type PaymentProvider = {
|
|
15
|
+
_id?: string;
|
|
16
|
+
type: PaymentProviderType;
|
|
17
|
+
adapterKey: string;
|
|
18
|
+
configuration: PaymentConfiguration;
|
|
19
|
+
} & TimestampFields;
|
|
3
20
|
|
|
4
21
|
export const PaymentProvidersCollection = async (db: mongodb.Db) => {
|
|
5
22
|
const PaymentProviders = db.collection<PaymentProvider>('payment-providers');
|
|
@@ -1,42 +1,16 @@
|
|
|
1
1
|
import { mongodb, generateDbFilterById, generateDbObjectId } from '@unchainedshop/mongodb';
|
|
2
|
-
import { PaymentCredentials as PaymentCredentialsType } from '../
|
|
3
|
-
|
|
4
|
-
export type PaymentCredentialsModules = {
|
|
5
|
-
// Queries
|
|
6
|
-
|
|
7
|
-
credentialsExists: (query: { paymentCredentialsId: string }) => Promise<boolean>;
|
|
8
|
-
|
|
9
|
-
findPaymentCredential: (
|
|
10
|
-
query: {
|
|
11
|
-
paymentCredentialsId?: string;
|
|
12
|
-
userId?: string;
|
|
13
|
-
paymentProviderId?: string;
|
|
14
|
-
isPreferred?: boolean;
|
|
15
|
-
},
|
|
16
|
-
options?: mongodb.FindOptions,
|
|
17
|
-
) => Promise<PaymentCredentialsType>;
|
|
18
|
-
|
|
19
|
-
findPaymentCredentials: (
|
|
20
|
-
query: mongodb.Filter<PaymentCredentialsType>,
|
|
21
|
-
options?: mongodb.FindOptions,
|
|
22
|
-
) => Promise<Array<PaymentCredentialsType>>;
|
|
23
|
-
|
|
24
|
-
// Mutations
|
|
25
|
-
markPreferred: (query: { userId: string; paymentCredentialsId: string }) => Promise<void>;
|
|
26
|
-
|
|
27
|
-
upsertCredentials: (
|
|
28
|
-
doc: Pick<PaymentCredentialsType, 'userId' | 'paymentProviderId' | '_id' | 'token'> & {
|
|
29
|
-
[x: string]: any;
|
|
30
|
-
},
|
|
31
|
-
) => Promise<string | null>;
|
|
32
|
-
|
|
33
|
-
removeCredentials: (paymentCredentialsId: string) => Promise<PaymentCredentialsType>;
|
|
34
|
-
};
|
|
2
|
+
import { PaymentCredentials as PaymentCredentialsType } from '../db/PaymentCredentialsCollection.js';
|
|
35
3
|
|
|
36
4
|
export const configurePaymentCredentialsModule = (
|
|
37
5
|
PaymentCredentials: mongodb.Collection<PaymentCredentialsType>,
|
|
38
|
-
)
|
|
39
|
-
const markPreferred = async ({
|
|
6
|
+
) => {
|
|
7
|
+
const markPreferred = async ({
|
|
8
|
+
userId,
|
|
9
|
+
paymentCredentialsId,
|
|
10
|
+
}: {
|
|
11
|
+
userId: string;
|
|
12
|
+
paymentCredentialsId: string;
|
|
13
|
+
}): Promise<void> => {
|
|
40
14
|
await PaymentCredentials.updateOne(
|
|
41
15
|
{
|
|
42
16
|
_id: paymentCredentialsId,
|
|
@@ -63,7 +37,11 @@ export const configurePaymentCredentialsModule = (
|
|
|
63
37
|
return {
|
|
64
38
|
markPreferred,
|
|
65
39
|
|
|
66
|
-
credentialsExists: async ({
|
|
40
|
+
credentialsExists: async ({
|
|
41
|
+
paymentCredentialsId,
|
|
42
|
+
}: {
|
|
43
|
+
paymentCredentialsId: string;
|
|
44
|
+
}): Promise<boolean> => {
|
|
67
45
|
const credentialsCount = await PaymentCredentials.countDocuments(
|
|
68
46
|
generateDbFilterById(paymentCredentialsId),
|
|
69
47
|
{ limit: 1 },
|
|
@@ -71,7 +49,18 @@ export const configurePaymentCredentialsModule = (
|
|
|
71
49
|
return !!credentialsCount;
|
|
72
50
|
},
|
|
73
51
|
|
|
74
|
-
findPaymentCredential: async (
|
|
52
|
+
findPaymentCredential: async (
|
|
53
|
+
{
|
|
54
|
+
paymentCredentialsId,
|
|
55
|
+
userId,
|
|
56
|
+
paymentProviderId,
|
|
57
|
+
}: {
|
|
58
|
+
paymentCredentialsId?: string;
|
|
59
|
+
userId?: string;
|
|
60
|
+
paymentProviderId?: string;
|
|
61
|
+
},
|
|
62
|
+
options?: mongodb.FindOptions,
|
|
63
|
+
): Promise<PaymentCredentialsType> => {
|
|
75
64
|
return PaymentCredentials.findOne(
|
|
76
65
|
paymentCredentialsId
|
|
77
66
|
? generateDbFilterById(paymentCredentialsId)
|
|
@@ -80,12 +69,23 @@ export const configurePaymentCredentialsModule = (
|
|
|
80
69
|
);
|
|
81
70
|
},
|
|
82
71
|
|
|
83
|
-
findPaymentCredentials: async (
|
|
72
|
+
findPaymentCredentials: async (
|
|
73
|
+
query: mongodb.Filter<PaymentCredentialsType>,
|
|
74
|
+
options?: mongodb.FindOptions,
|
|
75
|
+
): Promise<Array<PaymentCredentialsType>> => {
|
|
84
76
|
const credentials = await PaymentCredentials.find(query, options).toArray();
|
|
85
77
|
return credentials;
|
|
86
78
|
},
|
|
87
79
|
|
|
88
|
-
upsertCredentials: async ({
|
|
80
|
+
upsertCredentials: async ({
|
|
81
|
+
userId,
|
|
82
|
+
paymentProviderId,
|
|
83
|
+
_id,
|
|
84
|
+
token,
|
|
85
|
+
...meta
|
|
86
|
+
}: Pick<PaymentCredentialsType, 'userId' | 'paymentProviderId' | '_id' | 'token'> & {
|
|
87
|
+
[x: string]: any;
|
|
88
|
+
}): Promise<string> => {
|
|
89
89
|
const insertedId = _id || generateDbObjectId();
|
|
90
90
|
const result = await PaymentCredentials.updateOne(
|
|
91
91
|
_id
|
|
@@ -123,10 +123,12 @@ export const configurePaymentCredentialsModule = (
|
|
|
123
123
|
return null;
|
|
124
124
|
},
|
|
125
125
|
|
|
126
|
-
removeCredentials: async (paymentCredentialsId) => {
|
|
126
|
+
removeCredentials: async (paymentCredentialsId: string): Promise<PaymentCredentialsType> => {
|
|
127
127
|
const selector = generateDbFilterById(paymentCredentialsId);
|
|
128
128
|
const paymentCredentials = await PaymentCredentials.findOneAndDelete(selector, {});
|
|
129
129
|
return paymentCredentials;
|
|
130
130
|
},
|
|
131
131
|
};
|
|
132
132
|
};
|
|
133
|
+
|
|
134
|
+
export type PaymentCredentialsModule = ReturnType<typeof configurePaymentCredentialsModule>;
|
|
@@ -1,41 +1,14 @@
|
|
|
1
|
-
import { UnchainedCore } from '@unchainedshop/core';
|
|
2
1
|
import { PaymentCredentialsCollection } from '../db/PaymentCredentialsCollection.js';
|
|
3
2
|
import { PaymentProvidersCollection } from '../db/PaymentProvidersCollection.js';
|
|
4
|
-
import {
|
|
5
|
-
|
|
6
|
-
PaymentCredentialsModules,
|
|
7
|
-
} from './configurePaymentCredentialsModule.js';
|
|
8
|
-
import {
|
|
9
|
-
configurePaymentProvidersModule,
|
|
10
|
-
PaymentProvidersModules,
|
|
11
|
-
} from './configurePaymentProvidersModule.js';
|
|
3
|
+
import { configurePaymentCredentialsModule } from './configurePaymentCredentialsModule.js';
|
|
4
|
+
import { configurePaymentProvidersModule } from './configurePaymentProvidersModule.js';
|
|
12
5
|
import { paymentSettings, PaymentSettingsOptions } from '../payment-settings.js';
|
|
13
|
-
import { PaymentContext, PaymentCredentials as PaymentCredentialsType } from '../types.js';
|
|
14
6
|
import { ModuleInput } from '@unchainedshop/mongodb';
|
|
15
|
-
export type PaymentModule = {
|
|
16
|
-
/*
|
|
17
|
-
* Payment Providers Module
|
|
18
|
-
*/
|
|
19
|
-
|
|
20
|
-
registerCredentials: (
|
|
21
|
-
paymentProviderId: string,
|
|
22
|
-
paymentContext: PaymentContext,
|
|
23
|
-
unchainedAPI: UnchainedCore,
|
|
24
|
-
) => Promise<PaymentCredentialsType>;
|
|
25
|
-
|
|
26
|
-
paymentProviders: PaymentProvidersModules;
|
|
27
|
-
|
|
28
|
-
/*
|
|
29
|
-
* Payment Credentials Module
|
|
30
|
-
*/
|
|
31
|
-
|
|
32
|
-
paymentCredentials: PaymentCredentialsModules;
|
|
33
|
-
};
|
|
34
7
|
|
|
35
8
|
export const configurePaymentModule = async ({
|
|
36
9
|
db,
|
|
37
10
|
options: paymentOptions = {},
|
|
38
|
-
}: ModuleInput<PaymentSettingsOptions>)
|
|
11
|
+
}: ModuleInput<PaymentSettingsOptions>) => {
|
|
39
12
|
const PaymentProviders = await PaymentProvidersCollection(db);
|
|
40
13
|
const PaymentCredentials = await PaymentCredentialsCollection(db);
|
|
41
14
|
|
|
@@ -44,35 +17,10 @@ export const configurePaymentModule = async ({
|
|
|
44
17
|
const paymentProviders = configurePaymentProvidersModule(PaymentProviders);
|
|
45
18
|
const paymentCredentials = configurePaymentCredentialsModule(PaymentCredentials);
|
|
46
19
|
|
|
47
|
-
const registerCredentials: PaymentModule['registerCredentials'] = async (
|
|
48
|
-
paymentProviderId,
|
|
49
|
-
paymentContext,
|
|
50
|
-
unchainedAPI,
|
|
51
|
-
) => {
|
|
52
|
-
const registration = await paymentProviders.register(
|
|
53
|
-
paymentProviderId,
|
|
54
|
-
paymentContext,
|
|
55
|
-
unchainedAPI,
|
|
56
|
-
);
|
|
57
|
-
|
|
58
|
-
if (!registration) return null;
|
|
59
|
-
|
|
60
|
-
const paymentCredentialsId = await paymentCredentials.upsertCredentials({
|
|
61
|
-
userId: paymentContext.userId,
|
|
62
|
-
paymentProviderId,
|
|
63
|
-
...registration,
|
|
64
|
-
});
|
|
65
|
-
|
|
66
|
-
return paymentCredentials.findPaymentCredential({
|
|
67
|
-
paymentCredentialsId,
|
|
68
|
-
userId: paymentContext.userId,
|
|
69
|
-
paymentProviderId,
|
|
70
|
-
});
|
|
71
|
-
};
|
|
72
|
-
|
|
73
20
|
return {
|
|
74
21
|
paymentProviders,
|
|
75
22
|
paymentCredentials,
|
|
76
|
-
registerCredentials,
|
|
77
23
|
};
|
|
78
24
|
};
|
|
25
|
+
|
|
26
|
+
export type PaymentModule = Awaited<ReturnType<typeof configurePaymentModule>>;
|