@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.
Files changed (93) hide show
  1. package/.npm/package/README +7 -0
  2. package/.npm/package/npm-shrinkwrap.json +205 -0
  3. package/.versions +54 -0
  4. package/README.md +3 -0
  5. package/lib/db/PaymentCredentialsCollection.d.ts +3 -0
  6. package/lib/db/PaymentCredentialsCollection.js +10 -0
  7. package/lib/db/PaymentCredentialsCollection.js.map +1 -0
  8. package/lib/db/PaymentCredentialsSchema.d.ts +1 -0
  9. package/lib/db/PaymentCredentialsSchema.js +11 -0
  10. package/lib/db/PaymentCredentialsSchema.js.map +1 -0
  11. package/lib/db/PaymentProvidersCollection.d.ts +3 -0
  12. package/lib/db/PaymentProvidersCollection.js +7 -0
  13. package/lib/db/PaymentProvidersCollection.js.map +1 -0
  14. package/lib/db/PaymentProvidersSchema.d.ts +1 -0
  15. package/lib/db/PaymentProvidersSchema.js +13 -0
  16. package/lib/db/PaymentProvidersSchema.js.map +1 -0
  17. package/lib/director/PaymentAdapter.d.ts +2 -0
  18. package/lib/director/PaymentAdapter.js +49 -0
  19. package/lib/director/PaymentAdapter.js.map +1 -0
  20. package/lib/director/PaymentDirector.d.ts +2 -0
  21. package/lib/director/PaymentDirector.js +84 -0
  22. package/lib/director/PaymentDirector.js.map +1 -0
  23. package/lib/director/PaymentError.d.ts +6 -0
  24. package/lib/director/PaymentError.js +8 -0
  25. package/lib/director/PaymentError.js.map +1 -0
  26. package/lib/director/PaymentPricingAdapter.d.ts +3 -0
  27. package/lib/director/PaymentPricingAdapter.js +25 -0
  28. package/lib/director/PaymentPricingAdapter.js.map +1 -0
  29. package/lib/director/PaymentPricingDirector.d.ts +2 -0
  30. package/lib/director/PaymentPricingDirector.js +49 -0
  31. package/lib/director/PaymentPricingDirector.js.map +1 -0
  32. package/lib/director/PaymentPricingSheet.d.ts +3 -0
  33. package/lib/director/PaymentPricingSheet.js +92 -0
  34. package/lib/director/PaymentPricingSheet.js.map +1 -0
  35. package/lib/director/PaymentProviderType.d.ts +5 -0
  36. package/lib/director/PaymentProviderType.js +7 -0
  37. package/lib/director/PaymentProviderType.js.map +1 -0
  38. package/lib/module/configurePaymentCredentialsModule.d.ts +3 -0
  39. package/lib/module/configurePaymentCredentialsModule.js +80 -0
  40. package/lib/module/configurePaymentCredentialsModule.js.map +1 -0
  41. package/lib/module/configurePaymentModule.d.ts +3 -0
  42. package/lib/module/configurePaymentModule.js +15 -0
  43. package/lib/module/configurePaymentModule.js.map +1 -0
  44. package/lib/module/configurePaymentProvidersModule.d.ts +3 -0
  45. package/lib/module/configurePaymentProvidersModule.js +161 -0
  46. package/lib/module/configurePaymentProvidersModule.js.map +1 -0
  47. package/lib/payment-index.d.ts +9 -0
  48. package/lib/payment-index.js +10 -0
  49. package/lib/payment-index.js.map +1 -0
  50. package/lib/payment-settings.d.ts +2 -0
  51. package/lib/payment-settings.js +36 -0
  52. package/lib/payment-settings.js.map +1 -0
  53. package/lib/service/cancelService.d.ts +2 -0
  54. package/lib/service/cancelService.js +13 -0
  55. package/lib/service/cancelService.js.map +1 -0
  56. package/lib/service/chargeService.d.ts +2 -0
  57. package/lib/service/chargeService.js +33 -0
  58. package/lib/service/chargeService.js.map +1 -0
  59. package/lib/service/confirmService.d.ts +2 -0
  60. package/lib/service/confirmService.js +13 -0
  61. package/lib/service/confirmService.js.map +1 -0
  62. package/lib/service/paymentServices.d.ts +2 -0
  63. package/lib/service/paymentServices.js +11 -0
  64. package/lib/service/paymentServices.js.map +1 -0
  65. package/lib/service/registerPaymentCredentialsService.d.ts +2 -0
  66. package/lib/service/registerPaymentCredentialsService.js +17 -0
  67. package/lib/service/registerPaymentCredentialsService.js.map +1 -0
  68. package/package.js +33 -0
  69. package/package.json +43 -0
  70. package/src/db/PaymentCredentialsCollection.ts +14 -0
  71. package/src/db/PaymentCredentialsSchema.js +14 -0
  72. package/src/db/PaymentProvidersCollection.ts +11 -0
  73. package/src/db/PaymentProvidersSchema.js +16 -0
  74. package/src/director/PaymentAdapter.ts +63 -0
  75. package/src/director/PaymentDirector.ts +99 -0
  76. package/src/director/PaymentError.ts +6 -0
  77. package/src/director/PaymentPricingAdapter.ts +41 -0
  78. package/src/director/PaymentPricingDirector.ts +66 -0
  79. package/src/director/PaymentPricingSheet.ts +112 -0
  80. package/src/director/PaymentProviderType.ts +5 -0
  81. package/src/module/configurePaymentCredentialsModule.ts +110 -0
  82. package/src/module/configurePaymentModule.ts +22 -0
  83. package/src/module/configurePaymentProvidersModule.ts +230 -0
  84. package/src/payment-index.ts +12 -0
  85. package/src/payment-settings.ts +52 -0
  86. package/src/service/cancelService.ts +24 -0
  87. package/src/service/chargeService.ts +47 -0
  88. package/src/service/confirmService.ts +24 -0
  89. package/src/service/paymentServices.ts +12 -0
  90. package/src/service/registerPaymentCredentialsService.ts +28 -0
  91. package/tests/payment-index.test.ts +47 -0
  92. package/tsconfig.build.json +26 -0
  93. 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,5 @@
1
+ export declare enum PaymentProviderType {
2
+ CARD = "CARD",
3
+ INVOICE = "INVOICE",
4
+ GENERIC = "GENERIC"
5
+ }
@@ -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,2 @@
1
+ import { PaymentSettings } from '@unchainedshop/types/payments';
2
+ export declare const paymentSettings: PaymentSettings;
@@ -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,2 @@
1
+ import { CancelService } from '@unchainedshop/types/payments';
2
+ export declare const cancelService: CancelService;
@@ -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,2 @@
1
+ import { ChargeService } from '@unchainedshop/types/payments';
2
+ export declare const chargeService: ChargeService;
@@ -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,2 @@
1
+ import { ConfirmService } from '@unchainedshop/types/payments';
2
+ export declare const confirmService: ConfirmService;
@@ -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,2 @@
1
+ import { PaymentServices } from '@unchainedshop/types/payments';
2
+ export declare const paymentServices: PaymentServices;
@@ -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,2 @@
1
+ import { RegisterPaymentCredentialsService } from '@unchainedshop/types/payments';
2
+ export declare const registerPaymentCredentialsService: RegisterPaymentCredentialsService;
@@ -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"}