@unchainedshop/core-payment 1.1.3
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/.npm/package/README +7 -0
- package/.npm/package/npm-shrinkwrap.json +205 -0
- package/.versions +54 -0
- package/README.md +3 -0
- package/lib/db/PaymentCredentialsCollection.d.ts +3 -0
- package/lib/db/PaymentCredentialsCollection.js +10 -0
- package/lib/db/PaymentCredentialsCollection.js.map +1 -0
- package/lib/db/PaymentCredentialsSchema.d.ts +1 -0
- package/lib/db/PaymentCredentialsSchema.js +11 -0
- package/lib/db/PaymentCredentialsSchema.js.map +1 -0
- package/lib/db/PaymentProvidersCollection.d.ts +3 -0
- package/lib/db/PaymentProvidersCollection.js +7 -0
- package/lib/db/PaymentProvidersCollection.js.map +1 -0
- package/lib/db/PaymentProvidersSchema.d.ts +1 -0
- package/lib/db/PaymentProvidersSchema.js +13 -0
- package/lib/db/PaymentProvidersSchema.js.map +1 -0
- package/lib/director/PaymentAdapter.d.ts +2 -0
- package/lib/director/PaymentAdapter.js +49 -0
- package/lib/director/PaymentAdapter.js.map +1 -0
- package/lib/director/PaymentDirector.d.ts +2 -0
- package/lib/director/PaymentDirector.js +84 -0
- package/lib/director/PaymentDirector.js.map +1 -0
- package/lib/director/PaymentError.d.ts +6 -0
- package/lib/director/PaymentError.js +8 -0
- package/lib/director/PaymentError.js.map +1 -0
- package/lib/director/PaymentPricingAdapter.d.ts +3 -0
- package/lib/director/PaymentPricingAdapter.js +25 -0
- package/lib/director/PaymentPricingAdapter.js.map +1 -0
- package/lib/director/PaymentPricingDirector.d.ts +2 -0
- package/lib/director/PaymentPricingDirector.js +49 -0
- package/lib/director/PaymentPricingDirector.js.map +1 -0
- package/lib/director/PaymentPricingSheet.d.ts +3 -0
- package/lib/director/PaymentPricingSheet.js +92 -0
- package/lib/director/PaymentPricingSheet.js.map +1 -0
- package/lib/director/PaymentProviderType.d.ts +5 -0
- package/lib/director/PaymentProviderType.js +7 -0
- package/lib/director/PaymentProviderType.js.map +1 -0
- package/lib/module/configurePaymentCredentialsModule.d.ts +3 -0
- package/lib/module/configurePaymentCredentialsModule.js +80 -0
- package/lib/module/configurePaymentCredentialsModule.js.map +1 -0
- package/lib/module/configurePaymentModule.d.ts +3 -0
- package/lib/module/configurePaymentModule.js +15 -0
- package/lib/module/configurePaymentModule.js.map +1 -0
- package/lib/module/configurePaymentProvidersModule.d.ts +3 -0
- package/lib/module/configurePaymentProvidersModule.js +161 -0
- package/lib/module/configurePaymentProvidersModule.js.map +1 -0
- package/lib/payment-index.d.ts +9 -0
- package/lib/payment-index.js +10 -0
- package/lib/payment-index.js.map +1 -0
- package/lib/payment-settings.d.ts +2 -0
- package/lib/payment-settings.js +36 -0
- package/lib/payment-settings.js.map +1 -0
- package/lib/service/cancelService.d.ts +2 -0
- package/lib/service/cancelService.js +13 -0
- package/lib/service/cancelService.js.map +1 -0
- package/lib/service/chargeService.d.ts +2 -0
- package/lib/service/chargeService.js +33 -0
- package/lib/service/chargeService.js.map +1 -0
- package/lib/service/confirmService.d.ts +2 -0
- package/lib/service/confirmService.js +13 -0
- package/lib/service/confirmService.js.map +1 -0
- package/lib/service/paymentServices.d.ts +2 -0
- package/lib/service/paymentServices.js +11 -0
- package/lib/service/paymentServices.js.map +1 -0
- package/lib/service/registerPaymentCredentialsService.d.ts +2 -0
- package/lib/service/registerPaymentCredentialsService.js +17 -0
- package/lib/service/registerPaymentCredentialsService.js.map +1 -0
- package/package.js +33 -0
- package/package.json +43 -0
- package/src/db/PaymentCredentialsCollection.ts +14 -0
- package/src/db/PaymentCredentialsSchema.js +14 -0
- package/src/db/PaymentProvidersCollection.ts +11 -0
- package/src/db/PaymentProvidersSchema.js +16 -0
- package/src/director/PaymentAdapter.ts +63 -0
- package/src/director/PaymentDirector.ts +99 -0
- package/src/director/PaymentError.ts +6 -0
- package/src/director/PaymentPricingAdapter.ts +41 -0
- package/src/director/PaymentPricingDirector.ts +66 -0
- package/src/director/PaymentPricingSheet.ts +112 -0
- package/src/director/PaymentProviderType.ts +5 -0
- package/src/module/configurePaymentCredentialsModule.ts +110 -0
- package/src/module/configurePaymentModule.ts +22 -0
- package/src/module/configurePaymentProvidersModule.ts +230 -0
- package/src/payment-index.ts +12 -0
- package/src/payment-settings.ts +52 -0
- package/src/service/cancelService.ts +24 -0
- package/src/service/chargeService.ts +47 -0
- package/src/service/confirmService.ts +24 -0
- package/src/service/paymentServices.ts +12 -0
- package/src/service/registerPaymentCredentialsService.ts +28 -0
- package/tests/payment-index.test.ts +47 -0
- package/tsconfig.build.json +26 -0
- package/tsconfig.json +8 -0
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { BasePricingSheet } from '@unchainedshop/utils';
|
|
2
|
+
import { PaymentPricingRowCategory, } from '@unchainedshop/types/payments.pricing';
|
|
3
|
+
export const PaymentPricingSheet = (params) => {
|
|
4
|
+
const basePricingSheet = BasePricingSheet(params);
|
|
5
|
+
const pricingSheet = {
|
|
6
|
+
...basePricingSheet,
|
|
7
|
+
addDiscount({ amount, isTaxable, isNetPrice, discountId, meta }) {
|
|
8
|
+
basePricingSheet.calculation.push({
|
|
9
|
+
category: PaymentPricingRowCategory.Discount,
|
|
10
|
+
amount,
|
|
11
|
+
isTaxable,
|
|
12
|
+
isNetPrice,
|
|
13
|
+
discountId,
|
|
14
|
+
meta,
|
|
15
|
+
});
|
|
16
|
+
},
|
|
17
|
+
addFee({ amount, isTaxable, isNetPrice, meta }) {
|
|
18
|
+
basePricingSheet.calculation.push({
|
|
19
|
+
category: PaymentPricingRowCategory.Payment,
|
|
20
|
+
amount,
|
|
21
|
+
isTaxable,
|
|
22
|
+
isNetPrice,
|
|
23
|
+
meta,
|
|
24
|
+
});
|
|
25
|
+
},
|
|
26
|
+
addTax({ amount, rate, meta }) {
|
|
27
|
+
basePricingSheet.calculation.push({
|
|
28
|
+
category: PaymentPricingRowCategory.Tax,
|
|
29
|
+
amount,
|
|
30
|
+
isTaxable: false,
|
|
31
|
+
isNetPrice: false,
|
|
32
|
+
rate,
|
|
33
|
+
meta,
|
|
34
|
+
});
|
|
35
|
+
},
|
|
36
|
+
taxSum() {
|
|
37
|
+
return basePricingSheet.sum({
|
|
38
|
+
category: PaymentPricingRowCategory.Tax,
|
|
39
|
+
});
|
|
40
|
+
},
|
|
41
|
+
feeSum() {
|
|
42
|
+
return basePricingSheet.sum({
|
|
43
|
+
category: PaymentPricingRowCategory.Payment,
|
|
44
|
+
});
|
|
45
|
+
},
|
|
46
|
+
discountSum(discountId) {
|
|
47
|
+
return basePricingSheet.sum({
|
|
48
|
+
category: PaymentPricingRowCategory.Discount,
|
|
49
|
+
discountId,
|
|
50
|
+
});
|
|
51
|
+
},
|
|
52
|
+
discountPrices(explicitDiscountId) {
|
|
53
|
+
const discountIds = pricingSheet
|
|
54
|
+
.getDiscountRows(explicitDiscountId)
|
|
55
|
+
.map(({ discountId }) => discountId);
|
|
56
|
+
return [...new Set(discountIds)]
|
|
57
|
+
.map((discountId) => {
|
|
58
|
+
const amount = basePricingSheet.sum({
|
|
59
|
+
category: PaymentPricingRowCategory.Discount,
|
|
60
|
+
discountId,
|
|
61
|
+
});
|
|
62
|
+
if (!amount) {
|
|
63
|
+
return null;
|
|
64
|
+
}
|
|
65
|
+
return {
|
|
66
|
+
discountId,
|
|
67
|
+
amount: Math.round(amount),
|
|
68
|
+
currency: basePricingSheet.currency,
|
|
69
|
+
};
|
|
70
|
+
})
|
|
71
|
+
.filter(Boolean);
|
|
72
|
+
},
|
|
73
|
+
getFeeRows() {
|
|
74
|
+
return basePricingSheet.filterBy({
|
|
75
|
+
category: PaymentPricingRowCategory.Item,
|
|
76
|
+
});
|
|
77
|
+
},
|
|
78
|
+
getDiscountRows(discountId) {
|
|
79
|
+
return basePricingSheet.filterBy({
|
|
80
|
+
category: PaymentPricingRowCategory.Discount,
|
|
81
|
+
discountId,
|
|
82
|
+
});
|
|
83
|
+
},
|
|
84
|
+
getTaxRows() {
|
|
85
|
+
return basePricingSheet.filterBy({
|
|
86
|
+
category: PaymentPricingRowCategory.Tax,
|
|
87
|
+
});
|
|
88
|
+
},
|
|
89
|
+
};
|
|
90
|
+
return pricingSheet;
|
|
91
|
+
};
|
|
92
|
+
//# sourceMappingURL=PaymentPricingSheet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PaymentPricingSheet.js","sourceRoot":"","sources":["../../src/director/PaymentPricingSheet.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export var PaymentProviderType;
|
|
2
|
+
(function (PaymentProviderType) {
|
|
3
|
+
PaymentProviderType["CARD"] = "CARD";
|
|
4
|
+
PaymentProviderType["INVOICE"] = "INVOICE";
|
|
5
|
+
PaymentProviderType["GENERIC"] = "GENERIC";
|
|
6
|
+
})(PaymentProviderType || (PaymentProviderType = {}));
|
|
7
|
+
//# sourceMappingURL=PaymentProviderType.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PaymentProviderType.js","sourceRoot":"","sources":["../../src/director/PaymentProviderType.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,mBAIX;AAJD,WAAY,mBAAmB;IAC7B,oCAAa,CAAA;IACb,0CAAmB,CAAA;IACnB,0CAAmB,CAAA;AACrB,CAAC,EAJW,mBAAmB,KAAnB,mBAAmB,QAI9B"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { PaymentCredentials as PaymentCredentialsType, PaymentModule } from '@unchainedshop/types/payments';
|
|
2
|
+
import { Collection } from '@unchainedshop/types/common';
|
|
3
|
+
export declare const configurePaymentCredentialsModule: (PaymentCredentials: Collection<PaymentCredentialsType>) => PaymentModule['paymentCredentials'];
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { generateDbFilterById, generateDbObjectId } from '@unchainedshop/utils';
|
|
2
|
+
export const configurePaymentCredentialsModule = (PaymentCredentials) => {
|
|
3
|
+
const markPreferred = async ({ userId, paymentCredentialsId }) => {
|
|
4
|
+
await PaymentCredentials.updateOne({
|
|
5
|
+
_id: paymentCredentialsId,
|
|
6
|
+
}, {
|
|
7
|
+
$set: {
|
|
8
|
+
isPreferred: true,
|
|
9
|
+
},
|
|
10
|
+
});
|
|
11
|
+
await PaymentCredentials.updateMany({
|
|
12
|
+
_id: { $ne: paymentCredentialsId },
|
|
13
|
+
userId,
|
|
14
|
+
}, {
|
|
15
|
+
$set: {
|
|
16
|
+
isPreferred: false,
|
|
17
|
+
},
|
|
18
|
+
});
|
|
19
|
+
};
|
|
20
|
+
return {
|
|
21
|
+
markPreferred,
|
|
22
|
+
credentialsExists: async ({ paymentCredentialsId }) => {
|
|
23
|
+
const credentialsCount = await PaymentCredentials.countDocuments(generateDbFilterById(paymentCredentialsId), { limit: 1 });
|
|
24
|
+
return !!credentialsCount;
|
|
25
|
+
},
|
|
26
|
+
findPaymentCredential: async ({ paymentCredentialsId, userId, paymentProviderId }, options) => {
|
|
27
|
+
return PaymentCredentials.findOne(paymentCredentialsId
|
|
28
|
+
? generateDbFilterById(paymentCredentialsId)
|
|
29
|
+
: { userId, paymentProviderId }, options);
|
|
30
|
+
},
|
|
31
|
+
findPaymentCredentials: async (query, options) => {
|
|
32
|
+
const credentials = await PaymentCredentials.find(query, options).toArray();
|
|
33
|
+
return credentials;
|
|
34
|
+
},
|
|
35
|
+
upsertCredentials: async ({ userId, paymentProviderId, _id, token, ...meta }) => {
|
|
36
|
+
const insertedId = _id || generateDbObjectId();
|
|
37
|
+
const result = await PaymentCredentials.updateOne(_id
|
|
38
|
+
? generateDbFilterById(_id, {
|
|
39
|
+
userId,
|
|
40
|
+
paymentProviderId,
|
|
41
|
+
})
|
|
42
|
+
: {
|
|
43
|
+
userId,
|
|
44
|
+
paymentProviderId,
|
|
45
|
+
}, {
|
|
46
|
+
$setOnInsert: {
|
|
47
|
+
_id: insertedId,
|
|
48
|
+
userId,
|
|
49
|
+
paymentProviderId,
|
|
50
|
+
isPreferred: false,
|
|
51
|
+
created: new Date(),
|
|
52
|
+
createdBy: userId,
|
|
53
|
+
},
|
|
54
|
+
$set: {
|
|
55
|
+
updated: new Date(),
|
|
56
|
+
updatedBy: userId,
|
|
57
|
+
token,
|
|
58
|
+
meta,
|
|
59
|
+
},
|
|
60
|
+
}, {
|
|
61
|
+
upsert: true,
|
|
62
|
+
});
|
|
63
|
+
if (result.upsertedCount > 0) {
|
|
64
|
+
await markPreferred({
|
|
65
|
+
userId,
|
|
66
|
+
paymentCredentialsId: insertedId,
|
|
67
|
+
});
|
|
68
|
+
return insertedId;
|
|
69
|
+
}
|
|
70
|
+
return null;
|
|
71
|
+
},
|
|
72
|
+
removeCredentials: async (paymentCredentialsId) => {
|
|
73
|
+
const selector = generateDbFilterById(paymentCredentialsId);
|
|
74
|
+
const paymentCredentials = await PaymentCredentials.findOne(selector, {});
|
|
75
|
+
await PaymentCredentials.deleteOne(selector);
|
|
76
|
+
return paymentCredentials;
|
|
77
|
+
},
|
|
78
|
+
};
|
|
79
|
+
};
|
|
80
|
+
//# sourceMappingURL=configurePaymentCredentialsModule.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"configurePaymentCredentialsModule.js","sourceRoot":"","sources":["../../src/module/configurePaymentCredentialsModule.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { ModuleInput } from '@unchainedshop/types/common';
|
|
2
|
+
import { PaymentModule, PaymentSettingsOptions } from '@unchainedshop/types/payments';
|
|
3
|
+
export declare const configurePaymentModule: ({ db, options: paymentOptions, }: ModuleInput<PaymentSettingsOptions>) => Promise<PaymentModule>;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { PaymentCredentialsCollection } from '../db/PaymentCredentialsCollection';
|
|
2
|
+
import { PaymentProvidersCollection } from '../db/PaymentProvidersCollection';
|
|
3
|
+
import { configurePaymentCredentialsModule } from './configurePaymentCredentialsModule';
|
|
4
|
+
import { configurePaymentProvidersModule } from './configurePaymentProvidersModule';
|
|
5
|
+
import { paymentSettings } from '../payment-settings';
|
|
6
|
+
export const configurePaymentModule = async ({ db, options: paymentOptions = {}, }) => {
|
|
7
|
+
const PaymentProviders = await PaymentProvidersCollection(db);
|
|
8
|
+
const PaymentCredentials = await PaymentCredentialsCollection(db);
|
|
9
|
+
paymentSettings.configureSettings(paymentOptions);
|
|
10
|
+
return {
|
|
11
|
+
paymentProviders: configurePaymentProvidersModule(PaymentProviders),
|
|
12
|
+
paymentCredentials: configurePaymentCredentialsModule(PaymentCredentials),
|
|
13
|
+
};
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=configurePaymentModule.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"configurePaymentModule.js","sourceRoot":"","sources":["../../src/module/configurePaymentModule.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,4BAA4B,EAAE,MAAM,oCAAoC,CAAC;AAClF,OAAO,EAAE,0BAA0B,EAAE,MAAM,kCAAkC,CAAC;AAC9E,OAAO,EAAE,iCAAiC,EAAE,MAAM,qCAAqC,CAAC;AACxF,OAAO,EAAE,+BAA+B,EAAE,MAAM,mCAAmC,CAAC;AACpF,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,MAAM,CAAC,MAAM,sBAAsB,GAAG,KAAK,EAAE,EAC3C,EAAE,EACF,OAAO,EAAE,cAAc,GAAG,EAAE,GACQ,EAA0B,EAAE;IAChE,MAAM,gBAAgB,GAAG,MAAM,0BAA0B,CAAC,EAAE,CAAC,CAAC;IAC9D,MAAM,kBAAkB,GAAG,MAAM,4BAA4B,CAAC,EAAE,CAAC,CAAC;IAElE,eAAe,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;IAElD,OAAO;QACL,gBAAgB,EAAE,+BAA+B,CAAC,gBAAgB,CAAC;QACnE,kBAAkB,EAAE,iCAAiC,CAAC,kBAAkB,CAAC;KAC1E,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { Collection } from '@unchainedshop/types/common';
|
|
2
|
+
import { PaymentModule, PaymentProvider } from '@unchainedshop/types/payments';
|
|
3
|
+
export declare const configurePaymentProvidersModule: (PaymentProviders: Collection<PaymentProvider>) => PaymentModule['paymentProviders'];
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
import { emit, registerEvents } from '@unchainedshop/events';
|
|
2
|
+
import { generateDbFilterById, generateDbMutations } from '@unchainedshop/utils';
|
|
3
|
+
import { PaymentPricingDirector } from '../director/PaymentPricingDirector';
|
|
4
|
+
import { PaymentPricingSheet } from '../director/PaymentPricingSheet';
|
|
5
|
+
import { PaymentProvidersSchema } from '../db/PaymentProvidersSchema';
|
|
6
|
+
import { PaymentDirector } from '../director/PaymentDirector';
|
|
7
|
+
import { paymentSettings } from '../payment-settings';
|
|
8
|
+
const PAYMENT_PROVIDER_EVENTS = [
|
|
9
|
+
'PAYMENT_PROVIDER_CREATE',
|
|
10
|
+
'PAYMENT_PROVIDER_UPDATE',
|
|
11
|
+
'PAYMENT_PROVIDER_REMOVE',
|
|
12
|
+
];
|
|
13
|
+
const buildFindSelector = ({ type } = {}) => {
|
|
14
|
+
return { ...(type ? { type } : {}), deleted: null };
|
|
15
|
+
};
|
|
16
|
+
const asyncFilter = async (arr, predicate) => {
|
|
17
|
+
const results = await Promise.all(arr.map(predicate));
|
|
18
|
+
return arr.filter((_v, index) => results[index]);
|
|
19
|
+
};
|
|
20
|
+
export const configurePaymentProvidersModule = (PaymentProviders) => {
|
|
21
|
+
registerEvents(PAYMENT_PROVIDER_EVENTS);
|
|
22
|
+
const mutations = generateDbMutations(PaymentProviders, PaymentProvidersSchema);
|
|
23
|
+
const getPaymentAdapter = async (paymentProviderId, paymentContext, requestContext) => {
|
|
24
|
+
const provider = await PaymentProviders.findOne(generateDbFilterById(paymentProviderId), {});
|
|
25
|
+
return PaymentDirector.actions(provider, paymentContext, requestContext);
|
|
26
|
+
};
|
|
27
|
+
return {
|
|
28
|
+
// Queries
|
|
29
|
+
count: async (query) => {
|
|
30
|
+
const providerCount = await PaymentProviders.countDocuments(buildFindSelector(query));
|
|
31
|
+
return providerCount;
|
|
32
|
+
},
|
|
33
|
+
findProvider: async ({ paymentProviderId, ...query }, options) => {
|
|
34
|
+
return PaymentProviders.findOne(paymentProviderId ? generateDbFilterById(paymentProviderId) : query, options);
|
|
35
|
+
},
|
|
36
|
+
findProviders: async (query, options) => {
|
|
37
|
+
const providers = PaymentProviders.find(buildFindSelector(query), options);
|
|
38
|
+
return providers.toArray();
|
|
39
|
+
},
|
|
40
|
+
providerExists: async ({ paymentProviderId }) => {
|
|
41
|
+
const providerCount = await PaymentProviders.countDocuments(generateDbFilterById(paymentProviderId, { deleted: null }), { limit: 1 });
|
|
42
|
+
return !!providerCount;
|
|
43
|
+
},
|
|
44
|
+
findInterface: (paymentProvider) => {
|
|
45
|
+
const Adapter = PaymentDirector.getAdapter(paymentProvider.adapterKey);
|
|
46
|
+
if (!Adapter)
|
|
47
|
+
return null;
|
|
48
|
+
return {
|
|
49
|
+
_id: Adapter.key,
|
|
50
|
+
label: Adapter.label,
|
|
51
|
+
version: Adapter.version,
|
|
52
|
+
};
|
|
53
|
+
},
|
|
54
|
+
pricingSheet: (params) => {
|
|
55
|
+
return PaymentPricingSheet(params);
|
|
56
|
+
},
|
|
57
|
+
findInterfaces: ({ type }) => {
|
|
58
|
+
return PaymentDirector.getAdapters()
|
|
59
|
+
.filter((Adapter) => Adapter.typeSupported(type))
|
|
60
|
+
.map((Adapter) => ({
|
|
61
|
+
_id: Adapter.key,
|
|
62
|
+
label: Adapter.label,
|
|
63
|
+
version: Adapter.version,
|
|
64
|
+
}));
|
|
65
|
+
},
|
|
66
|
+
findSupported: async (paymentContext, requestContext) => {
|
|
67
|
+
const allProviders = await PaymentProviders.find({ deleted: null }).toArray();
|
|
68
|
+
const providers = await asyncFilter(allProviders, async (provider) => {
|
|
69
|
+
try {
|
|
70
|
+
const director = await PaymentDirector.actions(provider, paymentContext, requestContext);
|
|
71
|
+
return director.isActive();
|
|
72
|
+
}
|
|
73
|
+
catch {
|
|
74
|
+
return false;
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
return paymentSettings.filterSupportedProviders({
|
|
78
|
+
providers,
|
|
79
|
+
order: paymentContext.order,
|
|
80
|
+
}, requestContext);
|
|
81
|
+
},
|
|
82
|
+
determineDefault: async (paymentProviders, deliveryContext, requestContext) => {
|
|
83
|
+
return paymentSettings.determineDefaultProvider({
|
|
84
|
+
providers: paymentProviders,
|
|
85
|
+
...deliveryContext,
|
|
86
|
+
}, requestContext);
|
|
87
|
+
},
|
|
88
|
+
// Payment Adapter
|
|
89
|
+
configurationError: async (paymentProvider, requestContext) => {
|
|
90
|
+
const actions = await PaymentDirector.actions(paymentProvider, {}, requestContext);
|
|
91
|
+
return actions.configurationError();
|
|
92
|
+
},
|
|
93
|
+
calculate: async (pricingContext, requestContext) => {
|
|
94
|
+
const pricing = await PaymentPricingDirector.actions(pricingContext, requestContext);
|
|
95
|
+
return pricing.calculate();
|
|
96
|
+
},
|
|
97
|
+
isActive: async (paymentProvider, requestContext) => {
|
|
98
|
+
const actions = await PaymentDirector.actions(paymentProvider, {}, requestContext);
|
|
99
|
+
return actions.isActive();
|
|
100
|
+
},
|
|
101
|
+
isPayLaterAllowed: async (paymentProvider, requestContext) => {
|
|
102
|
+
const actions = await PaymentDirector.actions(paymentProvider, {}, requestContext);
|
|
103
|
+
return actions.isPayLaterAllowed();
|
|
104
|
+
},
|
|
105
|
+
charge: async (paymentProviderId, paymentContext, requestContext) => {
|
|
106
|
+
const adapter = await getPaymentAdapter(paymentProviderId, paymentContext, requestContext);
|
|
107
|
+
return adapter.charge();
|
|
108
|
+
},
|
|
109
|
+
register: async (paymentProviderId, paymentContext, requestContext) => {
|
|
110
|
+
const adapter = await getPaymentAdapter(paymentProviderId, paymentContext, requestContext);
|
|
111
|
+
return adapter.register();
|
|
112
|
+
},
|
|
113
|
+
sign: async (paymentProviderId, paymentContext, requestContext) => {
|
|
114
|
+
const adapter = await getPaymentAdapter(paymentProviderId, paymentContext, requestContext);
|
|
115
|
+
return adapter.sign();
|
|
116
|
+
},
|
|
117
|
+
validate: async (paymentProviderId, paymentContext, requestContext) => {
|
|
118
|
+
const adapter = await getPaymentAdapter(paymentProviderId, paymentContext, requestContext);
|
|
119
|
+
return adapter.validate();
|
|
120
|
+
},
|
|
121
|
+
cancel: async (paymentProviderId, paymentContext, requestContext) => {
|
|
122
|
+
const adapter = await getPaymentAdapter(paymentProviderId, paymentContext, requestContext);
|
|
123
|
+
return adapter.cancel();
|
|
124
|
+
},
|
|
125
|
+
confirm: async (paymentProviderId, paymentContext, requestContext) => {
|
|
126
|
+
const adapter = await getPaymentAdapter(paymentProviderId, paymentContext, requestContext);
|
|
127
|
+
return adapter.confirm();
|
|
128
|
+
},
|
|
129
|
+
// Mutations
|
|
130
|
+
create: async (doc, userId) => {
|
|
131
|
+
const Adapter = PaymentDirector.getAdapter(doc.adapterKey);
|
|
132
|
+
if (!Adapter)
|
|
133
|
+
return null;
|
|
134
|
+
const paymentProviderId = await mutations.create({
|
|
135
|
+
configuration: Adapter.initialConfiguration,
|
|
136
|
+
...doc,
|
|
137
|
+
}, userId);
|
|
138
|
+
const paymentProvider = await PaymentProviders.findOne(generateDbFilterById(paymentProviderId), {});
|
|
139
|
+
emit('PAYMENT_PROVIDER_CREATE', { paymentProvider });
|
|
140
|
+
return paymentProvider;
|
|
141
|
+
},
|
|
142
|
+
update: async (_id, doc, userId) => {
|
|
143
|
+
await mutations.update(_id, doc, userId);
|
|
144
|
+
const paymentProvider = await PaymentProviders.findOne(generateDbFilterById(_id), {});
|
|
145
|
+
emit('PAYMENT_PROVIDER_UPDATE', { paymentProvider });
|
|
146
|
+
return paymentProvider;
|
|
147
|
+
},
|
|
148
|
+
delete: async (_id, userId) => {
|
|
149
|
+
await mutations.delete(_id, userId);
|
|
150
|
+
const paymentProvider = await PaymentProviders.findOne(generateDbFilterById(_id), {});
|
|
151
|
+
emit('PAYMENT_PROVIDER_REMOVE', { paymentProvider });
|
|
152
|
+
return paymentProvider;
|
|
153
|
+
},
|
|
154
|
+
deletePermanently: async (_id, userId) => {
|
|
155
|
+
const deliveryProvider = await PaymentProviders.findOne(generateDbFilterById(_id), {});
|
|
156
|
+
await mutations.deletePermanently(_id, userId);
|
|
157
|
+
return deliveryProvider;
|
|
158
|
+
},
|
|
159
|
+
};
|
|
160
|
+
};
|
|
161
|
+
//# sourceMappingURL=configurePaymentProvidersModule.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"configurePaymentProvidersModule.js","sourceRoot":"","sources":["../../src/module/configurePaymentProvidersModule.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export { configurePaymentModule } from './module/configurePaymentModule';
|
|
2
|
+
export { paymentServices } from './service/paymentServices';
|
|
3
|
+
export { paymentSettings } from './payment-settings';
|
|
4
|
+
export { PaymentDirector } from './director/PaymentDirector';
|
|
5
|
+
export { PaymentAdapter } from './director/PaymentAdapter';
|
|
6
|
+
export { PaymentError } from './director/PaymentError';
|
|
7
|
+
export { PaymentProviderType } from './director/PaymentProviderType';
|
|
8
|
+
export { PaymentPricingAdapter } from './director/PaymentPricingAdapter';
|
|
9
|
+
export { PaymentPricingDirector } from './director/PaymentPricingDirector';
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export { configurePaymentModule } from './module/configurePaymentModule';
|
|
2
|
+
export { paymentServices } from './service/paymentServices';
|
|
3
|
+
export { paymentSettings } from './payment-settings';
|
|
4
|
+
export { PaymentDirector } from './director/PaymentDirector';
|
|
5
|
+
export { PaymentAdapter } from './director/PaymentAdapter';
|
|
6
|
+
export { PaymentError } from './director/PaymentError';
|
|
7
|
+
export { PaymentProviderType } from './director/PaymentProviderType';
|
|
8
|
+
export { PaymentPricingAdapter } from './director/PaymentPricingAdapter';
|
|
9
|
+
export { PaymentPricingDirector } from './director/PaymentPricingDirector';
|
|
10
|
+
//# sourceMappingURL=payment-index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"payment-index.js","sourceRoot":"","sources":["../src/payment-index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAEzE,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAErE,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { createLogger } from '@unchainedshop/logger';
|
|
2
|
+
const logger = createLogger('unchained:core-payment');
|
|
3
|
+
const sortByCreationDate = (left, right) => {
|
|
4
|
+
return new Date(left.created).getTime() - new Date(right.created).getTime();
|
|
5
|
+
};
|
|
6
|
+
const allProviders = async ({ providers }) => {
|
|
7
|
+
return providers.sort(sortByCreationDate);
|
|
8
|
+
};
|
|
9
|
+
const firstProviderIsDefault = async ({ providers, paymentCredentials }) => {
|
|
10
|
+
const foundSupportedPreferredProvider = providers.find((supportedPaymentProvider) => {
|
|
11
|
+
return paymentCredentials.some((paymentCredential) => {
|
|
12
|
+
return supportedPaymentProvider._id === paymentCredential.paymentProviderId;
|
|
13
|
+
});
|
|
14
|
+
});
|
|
15
|
+
if (foundSupportedPreferredProvider)
|
|
16
|
+
return foundSupportedPreferredProvider;
|
|
17
|
+
return providers?.length > 0 && providers[0];
|
|
18
|
+
};
|
|
19
|
+
const defaultFilterSupportedProviders = (sortProviders) => async ({ providers }) => {
|
|
20
|
+
return providers.sort(sortProviders);
|
|
21
|
+
};
|
|
22
|
+
export const paymentSettings = {
|
|
23
|
+
filterSupportedProviders: null,
|
|
24
|
+
determineDefaultProvider: null,
|
|
25
|
+
configureSettings({ sortProviders = undefined, filterSupportedProviders = allProviders, determineDefaultProvider = firstProviderIsDefault, } = {}) {
|
|
26
|
+
if (sortProviders) {
|
|
27
|
+
logger.warn('sortProviders is deprecated, please specifc filterSupportedProviders instead');
|
|
28
|
+
paymentSettings.filterSupportedProviders = defaultFilterSupportedProviders(sortProviders);
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
paymentSettings.filterSupportedProviders = filterSupportedProviders;
|
|
32
|
+
}
|
|
33
|
+
paymentSettings.determineDefaultProvider = determineDefaultProvider;
|
|
34
|
+
},
|
|
35
|
+
};
|
|
36
|
+
//# sourceMappingURL=payment-settings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"payment-settings.js","sourceRoot":"","sources":["../src/payment-settings.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,MAAM,MAAM,GAAG,YAAY,CAAC,wBAAwB,CAAC,CAAC;AAEtD,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,+BAA+B,GACnC,CAAC,aAAa,EAAE,EAAE,CAClB,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE;IACtB,OAAO,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AACvC,CAAC,CAAC;AAEJ,MAAM,CAAC,MAAM,eAAe,GAAoB;IAC9C,wBAAwB,EAAE,IAAI;IAC9B,wBAAwB,EAAE,IAAI;IAE9B,iBAAiB,CAAC,EAChB,aAAa,GAAG,SAAS,EACzB,wBAAwB,GAAG,YAAY,EACvC,wBAAwB,GAAG,sBAAsB,GAClD,GAAG,EAAE;QACJ,IAAI,aAAa,EAAE;YACjB,MAAM,CAAC,IAAI,CAAC,8EAA8E,CAAC,CAAC;YAC5F,eAAe,CAAC,wBAAwB,GAAG,+BAA+B,CAAC,aAAa,CAAC,CAAC;SAC3F;aAAM;YACL,eAAe,CAAC,wBAAwB,GAAG,wBAAwB,CAAC;SACrE;QACD,eAAe,CAAC,wBAAwB,GAAG,wBAAwB,CAAC;IACtE,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export const cancelService = async ({ paymentContext, paymentProviderId }, requestContext) => {
|
|
2
|
+
const { modules, userId } = requestContext;
|
|
3
|
+
const normalizedContext = {
|
|
4
|
+
...paymentContext,
|
|
5
|
+
userId,
|
|
6
|
+
paymentProviderId,
|
|
7
|
+
};
|
|
8
|
+
const result = await modules.payment.paymentProviders.cancel(paymentProviderId, normalizedContext, requestContext);
|
|
9
|
+
if (!result)
|
|
10
|
+
return false;
|
|
11
|
+
return result;
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=cancelService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cancelService.js","sourceRoot":"","sources":["../../src/service/cancelService.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,aAAa,GAAkB,KAAK,EAC/C,EAAE,cAAc,EAAE,iBAAiB,EAAE,EACrC,cAAc,EACd,EAAE;IACF,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,cAAc,CAAC;IAE3C,MAAM,iBAAiB,GAAG;QACxB,GAAG,cAAc;QACjB,MAAM;QACN,iBAAiB;KAClB,CAAC;IAEF,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAC1D,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,CACf,CAAC;IAEF,IAAI,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAE1B,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
export const chargeService = async ({ paymentContext, paymentProviderId }, requestContext) => {
|
|
2
|
+
const { modules, userId } = requestContext;
|
|
3
|
+
const paymentCredentials = paymentContext.transactionContext?.paymentCredentials ||
|
|
4
|
+
(await modules.payment.paymentCredentials.findPaymentCredential({
|
|
5
|
+
userId,
|
|
6
|
+
paymentProviderId,
|
|
7
|
+
isPreferred: true,
|
|
8
|
+
}));
|
|
9
|
+
const normalizedContext = {
|
|
10
|
+
...paymentContext,
|
|
11
|
+
userId,
|
|
12
|
+
paymentProviderId,
|
|
13
|
+
transactionContext: {
|
|
14
|
+
...paymentContext.transactionContext,
|
|
15
|
+
paymentCredentials,
|
|
16
|
+
},
|
|
17
|
+
};
|
|
18
|
+
const result = await modules.payment.paymentProviders.charge(paymentProviderId, normalizedContext, requestContext);
|
|
19
|
+
if (!result)
|
|
20
|
+
return false;
|
|
21
|
+
const { credentials, ...strippedResult } = result;
|
|
22
|
+
if (credentials) {
|
|
23
|
+
const { token, ...meta } = credentials;
|
|
24
|
+
await modules.payment.paymentCredentials.upsertCredentials({
|
|
25
|
+
userId,
|
|
26
|
+
paymentProviderId,
|
|
27
|
+
token,
|
|
28
|
+
...meta,
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
return strippedResult;
|
|
32
|
+
};
|
|
33
|
+
//# sourceMappingURL=chargeService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chargeService.js","sourceRoot":"","sources":["../../src/service/chargeService.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,aAAa,GAAkB,KAAK,EAC/C,EAAE,cAAc,EAAE,iBAAiB,EAAE,EACrC,cAAc,EACd,EAAE;IACF,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,cAAc,CAAC;IAE3C,MAAM,kBAAkB,GACtB,cAAc,CAAC,kBAAkB,EAAE,kBAAkB;QACrD,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,qBAAqB,CAAC;YAC9D,MAAM;YACN,iBAAiB;YACjB,WAAW,EAAE,IAAI;SAClB,CAAC,CAAC,CAAC;IAEN,MAAM,iBAAiB,GAAG;QACxB,GAAG,cAAc;QACjB,MAAM;QACN,iBAAiB;QACjB,kBAAkB,EAAE;YAClB,GAAG,cAAc,CAAC,kBAAkB;YACpC,kBAAkB;SACnB;KACF,CAAC;IAEF,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAC1D,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,CACf,CAAC;IAEF,IAAI,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAE1B,MAAM,EAAE,WAAW,EAAE,GAAG,cAAc,EAAE,GAAG,MAAM,CAAC;IAElD,IAAI,WAAW,EAAE;QACf,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,GAAG,WAAW,CAAC;QACvC,MAAM,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,iBAAiB,CAAC;YACzD,MAAM;YACN,iBAAiB;YACjB,KAAK;YACL,GAAG,IAAI;SACR,CAAC,CAAC;KACJ;IACD,OAAO,cAAc,CAAC;AACxB,CAAC,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export const confirmService = async ({ paymentContext, paymentProviderId }, requestContext) => {
|
|
2
|
+
const { modules, userId } = requestContext;
|
|
3
|
+
const normalizedContext = {
|
|
4
|
+
...paymentContext,
|
|
5
|
+
userId,
|
|
6
|
+
paymentProviderId,
|
|
7
|
+
};
|
|
8
|
+
const result = await modules.payment.paymentProviders.confirm(paymentProviderId, normalizedContext, requestContext);
|
|
9
|
+
if (!result)
|
|
10
|
+
return false;
|
|
11
|
+
return result;
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=confirmService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"confirmService.js","sourceRoot":"","sources":["../../src/service/confirmService.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,cAAc,GAAmB,KAAK,EACjD,EAAE,cAAc,EAAE,iBAAiB,EAAE,EACrC,cAAc,EACd,EAAE;IACF,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,cAAc,CAAC;IAE3C,MAAM,iBAAiB,GAAG;QACxB,GAAG,cAAc;QACjB,MAAM;QACN,iBAAiB;KAClB,CAAC;IAEF,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC,OAAO,CAC3D,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,CACf,CAAC;IAEF,IAAI,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAE1B,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { chargeService } from './chargeService';
|
|
2
|
+
import { cancelService } from './cancelService';
|
|
3
|
+
import { confirmService } from './confirmService';
|
|
4
|
+
import { registerPaymentCredentialsService } from './registerPaymentCredentialsService';
|
|
5
|
+
export const paymentServices = {
|
|
6
|
+
charge: chargeService,
|
|
7
|
+
registerPaymentCredentials: registerPaymentCredentialsService,
|
|
8
|
+
cancel: cancelService,
|
|
9
|
+
confirm: confirmService,
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=paymentServices.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paymentServices.js","sourceRoot":"","sources":["../../src/service/paymentServices.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,iCAAiC,EAAE,MAAM,qCAAqC,CAAC;AAExF,MAAM,CAAC,MAAM,eAAe,GAAoB;IAC9C,MAAM,EAAE,aAAa;IACrB,0BAA0B,EAAE,iCAAiC;IAC7D,MAAM,EAAE,aAAa;IACrB,OAAO,EAAE,cAAc;CACxB,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export const registerPaymentCredentialsService = async (paymentProviderId, paymentContext, requestContext) => {
|
|
2
|
+
const { modules, userId } = requestContext;
|
|
3
|
+
const registration = await modules.payment.paymentProviders.register(paymentProviderId, paymentContext, requestContext);
|
|
4
|
+
if (!registration)
|
|
5
|
+
return null;
|
|
6
|
+
const paymentCredentialsId = await modules.payment.paymentCredentials.upsertCredentials({
|
|
7
|
+
userId,
|
|
8
|
+
paymentProviderId,
|
|
9
|
+
...registration,
|
|
10
|
+
});
|
|
11
|
+
return modules.payment.paymentCredentials.findPaymentCredential({
|
|
12
|
+
paymentCredentialsId,
|
|
13
|
+
userId,
|
|
14
|
+
paymentProviderId,
|
|
15
|
+
});
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=registerPaymentCredentialsService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registerPaymentCredentialsService.js","sourceRoot":"","sources":["../../src/service/registerPaymentCredentialsService.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,iCAAiC,GAAsC,KAAK,EACvF,iBAAiB,EACjB,cAAc,EACd,cAAc,EACd,EAAE;IACF,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,cAAc,CAAC;IAC3C,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC,QAAQ,CAClE,iBAAiB,EACjB,cAAc,EACd,cAAc,CACf,CAAC;IAEF,IAAI,CAAC,YAAY;QAAE,OAAO,IAAI,CAAC;IAE/B,MAAM,oBAAoB,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,iBAAiB,CAAC;QACtF,MAAM;QACN,iBAAiB;QACjB,GAAG,YAAY;KAChB,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,qBAAqB,CAAC;QAC9D,oBAAoB;QACpB,MAAM;QACN,iBAAiB;KAClB,CAAC,CAAC;AACL,CAAC,CAAC"}
|