@unchainedshop/plugins 2.0.0-beta6 → 2.0.0-beta8

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 (116) hide show
  1. package/lib/delivery/pick-mup.d.ts +1 -0
  2. package/lib/delivery/pick-mup.js +1 -1
  3. package/lib/delivery/pick-mup.js.map +1 -1
  4. package/lib/files/gridfs/gridfs-adapter.d.ts +1 -0
  5. package/lib/files/gridfs/gridfs-adapter.js +0 -1
  6. package/lib/files/gridfs/gridfs-adapter.js.map +1 -1
  7. package/lib/files/gridfs/gridfs-webhook.d.ts +1 -2
  8. package/lib/files/gridfs/gridfs-webhook.js +2 -6
  9. package/lib/files/gridfs/gridfs-webhook.js.map +1 -1
  10. package/lib/files/minio/minio-adapter.d.ts +2 -1
  11. package/lib/files/minio/minio-adapter.js +13 -7
  12. package/lib/files/minio/minio-adapter.js.map +1 -1
  13. package/lib/files/minio/minio-webhook.d.ts +1 -2
  14. package/lib/files/minio/minio-webhook.js +24 -37
  15. package/lib/files/minio/minio-webhook.js.map +1 -1
  16. package/lib/payment/apple-iap/adapter.d.ts +2 -2
  17. package/lib/payment/apple-iap/adapter.js +89 -97
  18. package/lib/payment/apple-iap/adapter.js.map +1 -1
  19. package/lib/payment/apple-iap/db/AppleTransactionsCollection.d.ts +1 -1
  20. package/lib/payment/apple-iap/index.d.ts +2 -3
  21. package/lib/payment/apple-iap/index.js +2 -3
  22. package/lib/payment/apple-iap/index.js.map +1 -1
  23. package/lib/payment/braintree.js +14 -12
  24. package/lib/payment/braintree.js.map +1 -1
  25. package/lib/payment/cryptopay/db/CryptopayTransactions.d.ts +1 -1
  26. package/lib/payment/cryptopay/index.d.ts +2 -3
  27. package/lib/payment/cryptopay/index.js +2 -3
  28. package/lib/payment/cryptopay/index.js.map +1 -1
  29. package/lib/payment/cryptopay/middleware.d.ts +1 -2
  30. package/lib/payment/cryptopay/middleware.js +64 -69
  31. package/lib/payment/cryptopay/middleware.js.map +1 -1
  32. package/lib/payment/datatrans-v2/api/makeFetcher.d.ts +1 -1
  33. package/lib/payment/datatrans-v2/api/makeFetcher.js +1 -1
  34. package/lib/payment/datatrans-v2/api/makeFetcher.js.map +1 -1
  35. package/lib/payment/datatrans-v2/getPaths.d.ts +2 -2
  36. package/lib/payment/datatrans-v2/getPaths.js +7 -7
  37. package/lib/payment/datatrans-v2/getPaths.js.map +1 -1
  38. package/lib/payment/datatrans-v2/index.d.ts +1 -2
  39. package/lib/payment/datatrans-v2/index.js +1 -2
  40. package/lib/payment/datatrans-v2/index.js.map +1 -1
  41. package/lib/payment/datatrans-v2/middleware.d.ts +1 -2
  42. package/lib/payment/datatrans-v2/middleware.js +54 -102
  43. package/lib/payment/datatrans-v2/middleware.js.map +1 -1
  44. package/lib/payment/postfinance-checkout/index.d.ts +1 -2
  45. package/lib/payment/postfinance-checkout/index.js +1 -2
  46. package/lib/payment/postfinance-checkout/index.js.map +1 -1
  47. package/lib/payment/postfinance-checkout/middleware.d.ts +1 -2
  48. package/lib/payment/postfinance-checkout/middleware.js +31 -37
  49. package/lib/payment/postfinance-checkout/middleware.js.map +1 -1
  50. package/lib/payment/postfinance-checkout/types.d.ts +3 -3
  51. package/lib/payment/stripe.d.ts +1 -2
  52. package/lib/payment/stripe.js +55 -60
  53. package/lib/payment/stripe.js.map +1 -1
  54. package/lib/payment/worldline-saferpay/worldline-saferpay-client/api/SaferpayConnection.d.ts +1 -0
  55. package/lib/payment/worldline-saferpay/worldline-saferpay-client/api/SaferpayConnection.js +4 -3
  56. package/lib/payment/worldline-saferpay/worldline-saferpay-client/api/SaferpayConnection.js.map +1 -1
  57. package/lib/payment/worldline-saferpay/worldline-saferpay-client/models/PaymentMethods.d.ts +1 -1
  58. package/lib/payment/worldline-saferpay/worldline-saferpay-client/models/Transaction.d.ts +2 -2
  59. package/lib/plugins-index.d.ts +64 -0
  60. package/lib/plugins-index.js +100 -0
  61. package/lib/plugins-index.js.map +1 -1
  62. package/lib/warehousing/eth-minter.js +27 -40
  63. package/lib/warehousing/eth-minter.js.map +1 -1
  64. package/lib/worker/http-request.d.ts +1 -0
  65. package/lib/worker/http-request.js +0 -1
  66. package/lib/worker/http-request.js.map +1 -1
  67. package/lib/worker/update-coinbase-rates.d.ts +1 -0
  68. package/lib/worker/update-coinbase-rates.js +0 -1
  69. package/lib/worker/update-coinbase-rates.js.map +1 -1
  70. package/lib/worker/update-ecb-rates.d.ts +1 -0
  71. package/lib/worker/update-ecb-rates.js +0 -1
  72. package/lib/worker/update-ecb-rates.js.map +1 -1
  73. package/lib/worker/zombie-killer.js +13 -28
  74. package/lib/worker/zombie-killer.js.map +1 -1
  75. package/package.json +27 -26
  76. package/src/delivery/pick-mup.ts +1 -1
  77. package/src/files/gridfs/gridfs-adapter.ts +3 -2
  78. package/src/files/gridfs/gridfs-webhook.ts +40 -46
  79. package/src/files/minio/minio-adapter.ts +13 -8
  80. package/src/files/minio/minio-webhook.ts +35 -0
  81. package/src/payment/apple-iap/adapter.ts +104 -120
  82. package/src/payment/apple-iap/index.ts +2 -4
  83. package/src/payment/braintree.ts +14 -12
  84. package/src/payment/cryptopay/index.ts +2 -4
  85. package/src/payment/cryptopay/middleware.ts +65 -74
  86. package/src/payment/datatrans-v2/api/makeFetcher.ts +1 -1
  87. package/src/payment/datatrans-v2/getPaths.ts +12 -11
  88. package/src/payment/datatrans-v2/index.ts +2 -3
  89. package/src/payment/datatrans-v2/middleware.ts +66 -133
  90. package/src/payment/postfinance-checkout/index.ts +2 -3
  91. package/src/payment/postfinance-checkout/middleware.ts +37 -45
  92. package/src/payment/stripe.ts +68 -83
  93. package/src/payment/worldline-saferpay/worldline-saferpay-client/api/SaferpayConnection.ts +4 -4
  94. package/src/plugins-index.ts +151 -0
  95. package/src/warehousing/eth-minter.ts +32 -48
  96. package/src/worker/http-request.ts +1 -1
  97. package/src/worker/update-coinbase-rates.ts +1 -1
  98. package/src/worker/update-ecb-rates.ts +1 -1
  99. package/src/worker/zombie-killer.ts +33 -30
  100. package/lib/payment/bity/adapter.d.ts +0 -2
  101. package/lib/payment/bity/adapter.js +0 -320
  102. package/lib/payment/bity/adapter.js.map +0 -1
  103. package/lib/payment/bity/db/BityCredentialsCollection.d.ts +0 -11
  104. package/lib/payment/bity/db/BityCredentialsCollection.js +0 -5
  105. package/lib/payment/bity/db/BityCredentialsCollection.js.map +0 -1
  106. package/lib/payment/bity/index.d.ts +0 -3
  107. package/lib/payment/bity/index.js +0 -4
  108. package/lib/payment/bity/index.js.map +0 -1
  109. package/lib/payment/bity/module/configureBityModule.d.ts +0 -11
  110. package/lib/payment/bity/module/configureBityModule.js +0 -33
  111. package/lib/payment/bity/module/configureBityModule.js.map +0 -1
  112. package/src/files/minio/minio-webhook.js +0 -54
  113. package/src/payment/bity/adapter.ts +0 -421
  114. package/src/payment/bity/db/BityCredentialsCollection.ts +0 -17
  115. package/src/payment/bity/index.ts +0 -4
  116. package/src/payment/bity/module/configureBityModule.ts +0 -46
@@ -25,6 +25,22 @@ const ETHMinter: IWarehousingAdapter = {
25
25
 
26
26
  actions: (configuration, context) => {
27
27
  const { product, orderPosition, token, modules, localeContext } = context;
28
+
29
+ const getTokensCreated = async () => {
30
+ const existingTokens = await modules.warehousing.findTokens(
31
+ product.tokenization.contractStandard === ProductContractStandard.ERC721
32
+ ? { contractAddress: product.tokenization.contractAddress }
33
+ : {
34
+ contractAddress: product.tokenization.contractAddress,
35
+ chainTokenId: product.tokenization.tokenId,
36
+ },
37
+ );
38
+ const tokensCreated = existingTokens.reduce((acc, curToken) => {
39
+ return acc + curToken.quantity;
40
+ }, 0);
41
+ return tokensCreated;
42
+ };
43
+
28
44
  return {
29
45
  ...WarehousingAdapter.actions(configuration, context),
30
46
 
@@ -37,18 +53,7 @@ const ETHMinter: IWarehousingAdapter = {
37
53
  },
38
54
 
39
55
  stock: async () => {
40
- const existingTokens = await modules.warehousing.findTokens(
41
- product.tokenization.contractStandard === 'ERC721'
42
- ? { contractAddress: product.tokenization.contractAddress }
43
- : {
44
- contractAddress: product.tokenization.contractAddress,
45
- chainTokenId: product.tokenization.tokenId,
46
- },
47
- );
48
- const tokensCreated = existingTokens.reduce((acc, curToken) => {
49
- return acc + curToken.quantity;
50
- }, 0);
51
-
56
+ const tokensCreated = await getTokensCreated();
52
57
  return product?.tokenization?.supply ? product.tokenization.supply - tokensCreated : 0;
53
58
  },
54
59
 
@@ -61,18 +66,7 @@ const ETHMinter: IWarehousingAdapter = {
61
66
  const { contractAddress, contractStandard, tokenId } = product?.tokenization || {};
62
67
  const _id = generateDbObjectId();
63
68
  const meta = { contractStandard };
64
-
65
- const existingTokens = await modules.warehousing.findTokens(
66
- product.tokenization.contractStandard === 'ERC721'
67
- ? { contractAddress: product.tokenization.contractAddress }
68
- : {
69
- contractAddress: product.tokenization.contractAddress,
70
- chainTokenId: product.tokenization.tokenId,
71
- },
72
- );
73
- const tokensCreated = existingTokens.reduce((acc, curToken) => {
74
- return acc + curToken.quantity;
75
- }, 0);
69
+ const tokensCreated = await getTokensCreated();
76
70
 
77
71
  if (contractStandard === 'ERC721') {
78
72
  // ERC721 is non-fungible, thus every _id unique!
@@ -99,12 +93,8 @@ const ETHMinter: IWarehousingAdapter = {
99
93
  },
100
94
 
101
95
  tokenMetadata: async (chainTokenId) => {
102
- // if ERC721 -> tokenUri
103
- // if ERC1155 -> uri
104
- // -> use the contract to get the correct metadata uri from tokenId
105
-
106
- // depending on the ERC, build the correct metadata json schema
107
- // https://eips.ethereum.org/EIPS/eip-1155
96
+ // Metadata standards supported
97
+ // https://eips.ethereum.org/EIPS/eip-1155 (backward compatible with 721)
108
98
  // https://eips.ethereum.org/EIPS/eip-721
109
99
 
110
100
  const allLanguages = await modules.languages.findLanguages({
@@ -124,28 +114,22 @@ const ETHMinter: IWarehousingAdapter = {
124
114
 
125
115
  const name = `${text.title} #${chainTokenId}`;
126
116
 
127
- if (product.tokenization.contractStandard === ProductContractStandard.ERC1155) {
128
- const isDefaultLanguageActive = localeContext.language === systemLocale.language;
129
- const localization = isDefaultLanguageActive
130
- ? {
131
- uri: `${process.env.ROOT_URL}/erc-metadata/${product._id}/{locale}/${product.tokenization.tokenId}.json`,
132
- default: systemLocale.language,
133
- locales: allLanguages.map((lang) => lang.isoCode),
134
- }
135
- : undefined;
136
-
137
- return {
138
- name,
139
- description: text.description,
140
- image: url,
141
- properties: product.meta,
142
- localization,
143
- };
144
- }
117
+ const isDefaultLanguageActive = localeContext.language === systemLocale.language;
118
+ const localization = isDefaultLanguageActive
119
+ ? {
120
+ uri: `${process.env.ROOT_URL}/erc-metadata/${product._id}/{locale}/${product.tokenization.tokenId}.json`,
121
+ default: systemLocale.language,
122
+ locales: allLanguages.map((lang) => lang.isoCode),
123
+ }
124
+ : undefined;
125
+
145
126
  return {
146
127
  name,
147
128
  description: text.description,
148
129
  image: url,
130
+ properties: product.tokenization.ercMetadataProperties,
131
+ localization,
132
+ ...(token?.meta || {}),
149
133
  };
150
134
  },
151
135
  };
@@ -1,5 +1,5 @@
1
+ /// <reference lib="dom" />
1
2
  import { IWorkerAdapter } from '@unchainedshop/types/worker';
2
- import fetch from 'node-fetch';
3
3
  import { WorkerDirector, WorkerAdapter } from '@unchainedshop/core-worker';
4
4
  import { log, LogLevel } from '@unchainedshop/logger';
5
5
 
@@ -1,7 +1,7 @@
1
+ /// <reference lib="dom" />
1
2
  import { IWorkerAdapter } from '@unchainedshop/types/worker';
2
3
  import { WorkerAdapter, WorkerDirector } from '@unchainedshop/core-worker';
3
4
  import later from '@breejs/later';
4
- import fetch from 'node-fetch';
5
5
  import { ProductPriceRate } from '@unchainedshop/types/products.pricing';
6
6
  import { systemLocale } from '@unchainedshop/utils';
7
7
 
@@ -1,8 +1,8 @@
1
+ /// <reference lib="dom" />
1
2
  import { IWorkerAdapter } from '@unchainedshop/types/worker';
2
3
  import { WorkerAdapter, WorkerDirector } from '@unchainedshop/core-worker';
3
4
  import later from '@breejs/later';
4
5
  import xmlJs from 'xml-js';
5
- import fetch from 'node-fetch';
6
6
  import { ProductPriceRate } from '@unchainedshop/types/products.pricing';
7
7
 
8
8
  const getExchangeRates = async () => {
@@ -4,8 +4,6 @@ import { createLogger } from '@unchainedshop/logger';
4
4
 
5
5
  const logger = createLogger('unchained:platform:zombie-killer');
6
6
 
7
- const findId = { projection: { _id: 1 } };
8
- const findFileId = { projection: { mediaId: 1 } };
9
7
  const mapId = (a: any) => a._id;
10
8
 
11
9
  export const ZombieKillerWorker: IWorkerAdapter<
@@ -29,42 +27,47 @@ export const ZombieKillerWorker: IWorkerAdapter<
29
27
  try {
30
28
  const error = false;
31
29
 
32
- // Remove unreferenced product media objects
33
- const products = await modules.products.findProducts({}, findId);
34
- const deletedProductMediaCount = await modules.products.media.deleteMediaFiles({
35
- excludedProdcutIds: products.map(mapId),
36
- });
37
-
38
30
  // Remove unreferenced assortment media objects
39
- const assortments = await modules.assortments.findAssortments({}, findId);
31
+ const assortments = await modules.assortments.findAssortments(
32
+ { includeInactive: true, includeLeaves: true },
33
+ { projection: { _id: 1 } },
34
+ );
40
35
  const deletedAssortmentMediaCount = await modules.assortments.media.deleteMediaFiles({
41
36
  excludedAssortmentIds: assortments.map(mapId),
42
37
  });
43
38
 
44
- // Remove unreferenced files
45
- const fileIdsToRemove = [];
46
- const productMedia = await modules.products.media.findProductMedias({}, findFileId);
47
- const assortmentMedia = await modules.assortments.media.findAssortmentMedias({}, findFileId);
48
-
49
- const filesWithProductId = await modules.files.findFilesByMetaData({
50
- meta: {
51
- productId: { $exists: true },
52
- },
39
+ // Remove unreferenced product media objects
40
+ const products = await modules.products.findProducts(
41
+ { includeDrafts: true },
42
+ { projection: { _id: 1 } },
43
+ );
44
+ const deletedProductMediaCount = await modules.products.media.deleteMediaFiles({
45
+ excludedProductIds: products.map(mapId),
53
46
  });
54
- const filesWithAssortmentId = await modules.files.findFilesByMetaData({
55
- meta: {
56
- assortmentId: { $exists: true },
57
- },
47
+
48
+ // Remove unreferenced files
49
+ const productMedia = await modules.products.media.findProductMedias(
50
+ {},
51
+ { projection: { mediaId: 1 } },
52
+ );
53
+ const assortmentMedia = await modules.assortments.media.findAssortmentMedias(
54
+ {},
55
+ { projection: { mediaId: 1 } },
56
+ );
57
+
58
+ const allFileIdsLinked = [...productMedia, ...assortmentMedia].map((l) => l?.mediaId);
59
+ const allFileIdsRelevant = (
60
+ await modules.files.findFiles(
61
+ { path: { $in: ['product-media', 'assortment-media'] } },
62
+ { projection: { _id: 1 } },
63
+ )
64
+ ).map(mapId);
65
+
66
+ const fileIdsToRemove = allFileIdsRelevant.filter((fileId) => {
67
+ return !allFileIdsLinked.includes(fileId);
58
68
  });
59
69
 
60
- filesWithProductId
61
- .concat(filesWithAssortmentId)
62
- .filter((file) => {
63
- const fileInProductMedia = productMedia.some((media) => media.mediaId === file._id);
64
- const fileInAssortmentMedia = assortmentMedia.some((media) => media.mediaId === file._id);
65
- return !fileInProductMedia && !fileInAssortmentMedia;
66
- })
67
- .forEach((m) => fileIdsToRemove.push(m._id));
70
+ logger.verbose(`File Id's to remove: ${fileIdsToRemove.join(', ')}`);
68
71
 
69
72
  const deletedFilesCount =
70
73
  fileIdsToRemove.length > 0
@@ -1,2 +0,0 @@
1
- declare const _default: (app: any) => void;
2
- export default _default;
@@ -1,320 +0,0 @@
1
- import { PaymentDirector, PaymentAdapter, PaymentError } from '@unchainedshop/core-payment';
2
- import { createLogger } from '@unchainedshop/logger';
3
- import { OrderPricingSheet } from '@unchainedshop/core-orders';
4
- import bodyParser from 'body-parser';
5
- import { acl, roles, useMiddlewareWithCurrentContext } from '@unchainedshop/api';
6
- import crypto from 'crypto';
7
- import fetch from 'node-fetch';
8
- import ClientOAuth2 from '@unchainedshop/client-oauth2';
9
- const logger = createLogger('unchained:core-payment:bity');
10
- const { checkAction } = acl;
11
- const { actions } = roles;
12
- let currentToken;
13
- const { BITY_CLIENT_ID, BITY_CLIENT_SECRET, BITY_BANK_ACCOUNT_IBAN, BITY_BANK_ACCOUNT_ADDRESS, BITY_BANK_ACCOUNT_CITY, BITY_BANK_ACCOUNT_COUNTRY, BITY_BANK_ACCOUNT_NAME, BITY_BANK_ACCOUNT_ZIP, BITY_API_ENDPOINT = 'https://exchange.api.bity.com', BITY_OAUTH_INIT_PATH = '/payment/bity-auth', BITY_OAUTH_REDIRECT_URI = 'http://localhost:4010/payment/bity', BITY_OAUTH_STATE = 'unchained', BITY_OAUTH_PATH = '/payment/bity', } = process.env;
14
- const createBityAuth = () => {
15
- if (!BITY_CLIENT_ID)
16
- throw new Error('Bity plugin is not setup');
17
- return new ClientOAuth2({
18
- clientId: BITY_CLIENT_ID,
19
- clientSecret: BITY_CLIENT_SECRET,
20
- accessTokenUri: 'https://connect.bity.com/oauth2/token',
21
- authorizationUri: 'https://connect.bity.com/oauth2/auth',
22
- redirectUri: BITY_OAUTH_REDIRECT_URI,
23
- state: BITY_OAUTH_STATE,
24
- scopes: [
25
- 'https://auth.bity.com/scopes/exchange.place',
26
- 'https://auth.bity.com/scopes/exchange.history',
27
- 'offline_access',
28
- ],
29
- // eslint-disable-next-line
30
- // @ts-ignore
31
- sendClientCredentialsInBody: true,
32
- });
33
- };
34
- const upsertBityCredentials = async (user, context) => {
35
- currentToken = user;
36
- const iv = crypto.randomBytes(16);
37
- const key = crypto
38
- .createHash('sha256')
39
- .update(String(BITY_CLIENT_SECRET))
40
- .digest('base64')
41
- .substring(0, 32);
42
- const cipher = crypto.createCipheriv('aes-256-cbc', key, iv);
43
- let encrypted = cipher.update(JSON.stringify(user.data));
44
- encrypted = Buffer.concat([encrypted, cipher.final()]);
45
- const externalId = `${BITY_CLIENT_ID}-${BITY_OAUTH_REDIRECT_URI}-${BITY_OAUTH_STATE}`;
46
- const doc = {
47
- externalId,
48
- data: {
49
- iv: iv.toString('hex'),
50
- encryptedData: encrypted.toString('hex'),
51
- },
52
- expires: user.expires,
53
- };
54
- const bityModule = context.modules.bity;
55
- await bityModule.upsertCredentials(doc, context.userId);
56
- };
57
- const getTokenFromDb = async (bityAuth, context) => {
58
- const bityModule = context.modules.bity;
59
- const credentials = await bityModule.findBityCredentials({
60
- externalId: `${BITY_CLIENT_ID}-${BITY_OAUTH_REDIRECT_URI}-${BITY_OAUTH_STATE}`,
61
- });
62
- if (!credentials?.data)
63
- return null;
64
- const iv = Buffer.from(credentials.data.iv, 'hex');
65
- const encryptedText = Buffer.from(credentials.data.encryptedData, 'hex');
66
- const key = crypto
67
- .createHash('sha256')
68
- .update(String(BITY_CLIENT_SECRET))
69
- .digest('base64')
70
- .substr(0, 32);
71
- const decipher = crypto.createDecipheriv('aes-256-cbc', key, iv);
72
- let decrypted = decipher.update(encryptedText);
73
- decrypted = Buffer.concat([decrypted, decipher.final()]);
74
- const data = JSON.parse(decrypted.toString());
75
- const token = bityAuth.createToken(data.access_token, data.refresh_token, data.token_type, { data });
76
- return token;
77
- };
78
- const refreshBityUser = async (context) => {
79
- if (currentToken) {
80
- const newToken = await currentToken.refresh();
81
- if (newToken) {
82
- await upsertBityCredentials(newToken, context);
83
- }
84
- }
85
- };
86
- const signPayload = (...args) => {
87
- const resultString = args.filter(Boolean).join('');
88
- const signKeyInBytes = Buffer.from(BITY_CLIENT_ID, 'hex');
89
- const signedString = crypto.createHmac('sha256', signKeyInBytes).update(resultString).digest('hex');
90
- return signedString;
91
- };
92
- const bityExchangeFetch = async (params, context) => {
93
- const body = params.data && JSON.stringify(params.data);
94
- const doFetch = async () => {
95
- const response = await fetch(`${BITY_API_ENDPOINT}${params.path}`, {
96
- method: body ? 'POST' : 'GET',
97
- body: body || undefined,
98
- headers: {
99
- Authorization: `Bearer ${currentToken.accessToken}`,
100
- 'Content-Type': 'application/json',
101
- },
102
- });
103
- return response;
104
- };
105
- const response = await doFetch();
106
- if (response.status === 401) {
107
- await refreshBityUser(context);
108
- return doFetch();
109
- }
110
- return response;
111
- };
112
- const createBityOrder = async (data, context) => {
113
- const response = await bityExchangeFetch({
114
- path: '/v2/orders',
115
- data,
116
- }, context);
117
- if (response?.status !== 201) {
118
- logger.error('Bity Plugin: Response invalid', {
119
- data,
120
- route: '/orders',
121
- response,
122
- });
123
- throw new Error('Could not create Bity Order');
124
- }
125
- return response.headers.get('Location');
126
- };
127
- // eslint-disable-next-line
128
- const estimateBityOrder = async (data, context) => {
129
- const response = await bityExchangeFetch({
130
- path: '/v2/orders/estimate',
131
- data,
132
- }, context);
133
- if (response?.status !== 200) {
134
- logger.error('Bity Plugin: Response invalid', {
135
- data,
136
- route: '/orders/estimate',
137
- response,
138
- });
139
- throw new Error('Could not estimate Bity Currency Conversion');
140
- }
141
- return response.json();
142
- };
143
- export default (app) => {
144
- useMiddlewareWithCurrentContext(app, BITY_OAUTH_INIT_PATH, async (req, res) => {
145
- if (req.method === 'GET') {
146
- try {
147
- const resolvedContext = req.unchainedContext;
148
- await checkAction(resolvedContext, actions.managePaymentProviders);
149
- const bityAuthClient = createBityAuth();
150
- const uri = bityAuthClient.code.getUri();
151
- logger.info(`Bity Webhook: Login ${uri}`);
152
- res.writeHead(302, {
153
- Location: uri,
154
- });
155
- res.end();
156
- return;
157
- }
158
- catch (e) {
159
- logger.warn(`Bity Webhook: Failed with ${e.message}`);
160
- res.writeHead(503);
161
- res.end(JSON.stringify({ name: e.name, code: e.code, message: e.message }));
162
- return;
163
- }
164
- }
165
- res.writeHead(404);
166
- res.end();
167
- });
168
- useMiddlewareWithCurrentContext(app, BITY_OAUTH_PATH, async (req, res, next) => {
169
- bodyParser.urlencoded({ extended: false })(req, res, next);
170
- });
171
- useMiddlewareWithCurrentContext(app, BITY_OAUTH_PATH, async (req, res) => {
172
- if (req.method === 'GET') {
173
- try {
174
- const resolvedContext = req.unchainedContext;
175
- await checkAction(resolvedContext, actions.managePaymentProviders);
176
- const bityAuthClient = createBityAuth();
177
- const user = await bityAuthClient.code.getToken(req.originalUrl);
178
- await upsertBityCredentials(user, resolvedContext);
179
- res.writeHead(200);
180
- res.end('Bity Credentials Setup Complete');
181
- return;
182
- }
183
- catch (e) {
184
- logger.warn(`Bity Webhook: Failed with ${e.message}`);
185
- res.writeHead(503);
186
- res.end(JSON.stringify({ name: e.name, code: e.code, message: e.message }));
187
- return;
188
- }
189
- }
190
- res.writeHead(404);
191
- res.end();
192
- });
193
- };
194
- let bityAuthClient;
195
- const loadToken = async (context) => {
196
- if (currentToken)
197
- return currentToken;
198
- if (!bityAuthClient) {
199
- bityAuthClient = createBityAuth();
200
- }
201
- if (bityAuthClient) {
202
- currentToken = await getTokenFromDb(bityAuthClient, context);
203
- }
204
- return currentToken;
205
- };
206
- let token;
207
- const Bity = {
208
- ...PaymentAdapter,
209
- key: 'shop.unchained.payment.bity',
210
- label: 'Bity',
211
- version: '1.0.0',
212
- initialConfiguration: [],
213
- typeSupported: (type) => {
214
- return type === 'GENERIC';
215
- },
216
- actions: (params) => {
217
- loadToken(params.context).then((t) => {
218
- token = t;
219
- });
220
- const adapter = {
221
- ...PaymentAdapter.actions(params),
222
- configurationError: () => {
223
- if (!token) {
224
- return PaymentError.INCOMPLETE_CONFIGURATION;
225
- }
226
- return null;
227
- },
228
- isActive: () => {
229
- if (adapter.configurationError() === null)
230
- return true;
231
- return false;
232
- },
233
- isPayLaterAllowed() {
234
- return false;
235
- },
236
- sign: async (transactionContext = {}) => {
237
- // Signing the order will estimate a new order in bity and sign it with private data
238
- logger.info(`Bity Plugin: Sign ${JSON.stringify(transactionContext)}`);
239
- const { orderPayment } = params.paymentContext;
240
- const order = await params.context.modules.orders.findOrder({
241
- orderId: orderPayment.orderId,
242
- });
243
- const pricing = OrderPricingSheet({
244
- calculation: order.calculation,
245
- currency: order.currency,
246
- });
247
- if (!pricing) {
248
- throw new Error('Price calculation of order invalid');
249
- }
250
- const totalAmount = Math.round(pricing.total({ useNetPrice: false }).amount / 10 || 0) * 10;
251
- const payload = await estimateBityOrder({
252
- output: {
253
- currency: 'EUR',
254
- amount: `${totalAmount / 100}`,
255
- },
256
- input: {
257
- currency: 'BTC',
258
- },
259
- }, params.context);
260
- const signature = signPayload(JSON.stringify(payload), order._id, totalAmount, BITY_CLIENT_SECRET);
261
- return JSON.stringify({
262
- payload,
263
- signature,
264
- });
265
- },
266
- charge: async () => {
267
- const { order } = params.paymentContext;
268
- const { bityPayload, bitySignature } = order?.context || {};
269
- const pricing = OrderPricingSheet({
270
- calculation: order.calculation,
271
- currency: order.currency,
272
- });
273
- if (!pricing) {
274
- throw new Error('Price calculation of order invalid');
275
- }
276
- const totalAmount = Math.round(pricing.total({
277
- useNetPrice: false,
278
- }).amount / 10 || 0) * 10;
279
- const signature = signPayload(JSON.stringify(bityPayload), order._id, totalAmount, BITY_CLIENT_SECRET);
280
- if (bitySignature !== signature) {
281
- logger.warn(`Bity Plugin: Signature Mismatch ${JSON.stringify(bityPayload)} ${bitySignature}`);
282
- throw new Error('Signature Mismatch');
283
- }
284
- const path = await createBityOrder({
285
- input: {
286
- amount: bityPayload.input.amount,
287
- currency: bityPayload.input.currency,
288
- },
289
- output: {
290
- currency: bityPayload.output.currency,
291
- type: 'bank_account',
292
- iban: BITY_BANK_ACCOUNT_IBAN,
293
- reference: order._id,
294
- owner: {
295
- address: BITY_BANK_ACCOUNT_ADDRESS,
296
- city: BITY_BANK_ACCOUNT_CITY,
297
- country: BITY_BANK_ACCOUNT_COUNTRY,
298
- name: BITY_BANK_ACCOUNT_NAME,
299
- zip: BITY_BANK_ACCOUNT_ZIP,
300
- },
301
- },
302
- }, params.context);
303
- logger.info(`Bity Plugin: Prepared Bity Order`, path);
304
- const response = await bityExchangeFetch({ path }, params.context);
305
- const bityOrder = await response?.json();
306
- if (!bityOrder) {
307
- logger.warn(`Bity Plugin: Bity Order not found ${JSON.stringify(path)} ${bitySignature}`);
308
- throw new Error('Bity Order not Found');
309
- }
310
- await params.context.modules.orders.updateContext(order._id, {
311
- bityOrder,
312
- }, params.context);
313
- return false;
314
- },
315
- };
316
- return adapter;
317
- },
318
- };
319
- PaymentDirector.registerAdapter(Bity);
320
- //# sourceMappingURL=adapter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../src/payment/bity/adapter.ts"],"names":[],"mappings":"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"}
@@ -1,11 +0,0 @@
1
- import { Db, TimestampFields, _ID } from '@unchainedshop/types/common';
2
- export declare type BityCredentialsType = {
3
- _id?: _ID;
4
- externalId: string;
5
- data: {
6
- iv: string;
7
- encryptedData: string;
8
- };
9
- expires: Date;
10
- } & TimestampFields;
11
- export declare const BityCredentialsCollection: (db: Db) => import("mongodb").Collection<BityCredentialsType>;
@@ -1,5 +0,0 @@
1
- export const BityCredentialsCollection = (db) => {
2
- const BityCredentials = db.collection('bity_credentials');
3
- return BityCredentials;
4
- };
5
- //# sourceMappingURL=BityCredentialsCollection.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"BityCredentialsCollection.js","sourceRoot":"","sources":["../../../../src/payment/bity/db/BityCredentialsCollection.ts"],"names":[],"mappings":"AAYA,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,EAAM,EAAE,EAAE;IAClD,MAAM,eAAe,GAAG,EAAE,CAAC,UAAU,CAAsB,kBAAkB,CAAC,CAAC;IAE/E,OAAO,eAAe,CAAC;AACzB,CAAC,CAAC"}
@@ -1,3 +0,0 @@
1
- import setupBity from './adapter';
2
- export default setupBity;
3
- export { configureBityModule } from './module/configureBityModule';
@@ -1,4 +0,0 @@
1
- import setupBity from './adapter';
2
- export default setupBity;
3
- export { configureBityModule } from './module/configureBityModule';
4
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/payment/bity/index.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,WAAW,CAAC;AAElC,eAAe,SAAS,CAAC;AACzB,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC"}
@@ -1,11 +0,0 @@
1
- import { Db } from '@unchainedshop/types/common';
2
- import { BityCredentialsType } from '../db/BityCredentialsCollection';
3
- export interface BityModule {
4
- findBityCredentials: (query: {
5
- externalId: string;
6
- }) => Promise<BityCredentialsType>;
7
- upsertCredentials: (doc: BityCredentialsType, userId: string) => Promise<string | null>;
8
- }
9
- export declare const configureBityModule: ({ db }: {
10
- db: Db;
11
- }) => BityModule;
@@ -1,33 +0,0 @@
1
- import { generateDbObjectId } from '@unchainedshop/utils';
2
- import { BityCredentialsCollection } from '../db/BityCredentialsCollection';
3
- export const configureBityModule = ({ db }) => {
4
- const BityCredentials = BityCredentialsCollection(db);
5
- return {
6
- findBityCredentials: async ({ externalId }) => {
7
- return BityCredentials.findOne({ externalId });
8
- },
9
- upsertCredentials: async (doc, userId) => {
10
- await BityCredentials.updateOne({
11
- externalId: doc.externalId,
12
- }, {
13
- $set: {
14
- data: {
15
- iv: doc.data.iv,
16
- encryptedData: doc.data.encryptedData,
17
- },
18
- expires: doc.expires,
19
- updated: new Date(),
20
- updatedBy: userId,
21
- },
22
- $setOnInsert: {
23
- _id: generateDbObjectId(),
24
- externalId: doc.externalId,
25
- created: new Date(),
26
- createdBy: userId,
27
- },
28
- });
29
- return doc.externalId;
30
- },
31
- };
32
- };
33
- //# sourceMappingURL=configureBityModule.js.map