@cloudcommerce/app-galaxpay 0.8.7 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build.log +1 -1
- package/lib/functions-lib/ecom/events-to-galaxpay.js +1 -1
- package/lib/functions-lib/ecom/events-to-galaxpay.js.map +1 -1
- package/lib/functions-lib/galaxpay/webhook.js +101 -37
- package/lib/functions-lib/galaxpay/webhook.js.map +1 -1
- package/package.json +6 -6
- package/src/functions-lib/ecom/events-to-galaxpay.ts +1 -1
- package/src/functions-lib/galaxpay/webhook.ts +123 -39
package/.turbo/turbo-build.log
CHANGED
|
@@ -3,7 +3,7 @@ import { getFirestore } from 'firebase-admin/firestore';
|
|
|
3
3
|
import config from '@cloudcommerce/firebase/lib/config';
|
|
4
4
|
import GalaxpayAxios from '../galaxpay/auth/create-access.js';
|
|
5
5
|
|
|
6
|
-
const collectionSubscription = getFirestore().collection('
|
|
6
|
+
const collectionSubscription = getFirestore().collection('galaxpaySubscriptions');
|
|
7
7
|
const handleApiEvent = async ({
|
|
8
8
|
evName, apiEvent, apiDoc, app,
|
|
9
9
|
}) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events-to-galaxpay.js","sourceRoot":"","sources":["../../../src/functions-lib/ecom/events-to-galaxpay.ts"],"names":[],"mappings":"AAEA,OAAO,MAAM,MAAM,2BAA2B,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,MAAM,MAAM,oCAAoC,CAAC;AACxD,OAAO,aAAa,MAAM,gCAAgC,CAAC;AAE3D,MAAM,sBAAsB,GAAG,YAAY,EAAE,CAAC,UAAU,CAAC,
|
|
1
|
+
{"version":3,"file":"events-to-galaxpay.js","sourceRoot":"","sources":["../../../src/functions-lib/ecom/events-to-galaxpay.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,7 @@ import { getFirestore } from 'firebase-admin/firestore';
|
|
|
3
3
|
import logger from 'firebase-functions/logger';
|
|
4
4
|
import config from '@cloudcommerce/firebase/lib/config';
|
|
5
5
|
import { parseStatus, parsePeriodicityToEcom, gerateId } from '../all-parses.js';
|
|
6
|
+
import GalaxpayAxios from './auth/create-access.js';
|
|
6
7
|
import { updateValueSubscription, checkAmountItemsOrder } from './update-subscription.js';
|
|
7
8
|
|
|
8
9
|
const collectionSubscription = getFirestore().collection('galaxpaySubscriptions');
|
|
@@ -17,20 +18,16 @@ const getApp = async () => {
|
|
|
17
18
|
});
|
|
18
19
|
});
|
|
19
20
|
};
|
|
20
|
-
const
|
|
21
|
-
if (financialStatus.current === parseStatus(
|
|
22
|
-
return true;
|
|
23
|
-
}
|
|
24
|
-
if ((financialStatus.current === 'paid' || financialStatus.current === 'authorized')
|
|
25
|
-
&& parseStatus(GalaxPayTransaction.status) !== 'refunded') {
|
|
21
|
+
const checkStatusIsEqual = (financialStatus, galaxPayTransactionStatus) => {
|
|
22
|
+
if (financialStatus.current === parseStatus(galaxPayTransactionStatus)) {
|
|
26
23
|
return true;
|
|
27
24
|
}
|
|
28
25
|
return false;
|
|
29
26
|
};
|
|
30
|
-
const
|
|
27
|
+
const checkStatusPaid = (status) => {
|
|
31
28
|
const parsedStatus = parseStatus(status);
|
|
32
|
-
|
|
33
|
-
if (parsedStatus === '
|
|
29
|
+
logger.log(`>> Status is ${status} => ${parsedStatus}`);
|
|
30
|
+
if (parsedStatus === 'paid') {
|
|
34
31
|
return true;
|
|
35
32
|
}
|
|
36
33
|
return false;
|
|
@@ -55,9 +52,10 @@ const findOrderByTransactionId = (transactionId) => {
|
|
|
55
52
|
});
|
|
56
53
|
};
|
|
57
54
|
const findOrderById = async (orderId) => new Promise((resolve) => {
|
|
58
|
-
api.get(`orders/${orderId}
|
|
59
|
-
|
|
60
|
-
|
|
55
|
+
api.get(`orders/${orderId}`)
|
|
56
|
+
.then(({ data: order }) => {
|
|
57
|
+
resolve(order);
|
|
58
|
+
});
|
|
61
59
|
});
|
|
62
60
|
const createTransaction = async (res, subscriptionLabel, plan, orderNumber, galaxpayFristTransactionId, GalaxPayTransaction, GalaxPaySubscription, GalaxPayTransactionValue, originalOrderId) => {
|
|
63
61
|
if (galaxpayFristTransactionId !== GalaxPayTransaction.galaxPayId) {
|
|
@@ -153,9 +151,6 @@ const handleWehook = async (req, res) => {
|
|
|
153
151
|
const GalaxPayTransactionValue = GalaxPayTransaction.value / 100;
|
|
154
152
|
logger.log(`> (App GalaxPay) WebHook ${type}, Body ${JSON.stringify(galaxpayHook)}, quantity:
|
|
155
153
|
${GalaxPaySubscriptionQuantity}, status: ${GalaxPayTransaction.status} <`);
|
|
156
|
-
// if (galaxpayHook.confirmHash) {
|
|
157
|
-
// logger.log('> ', galaxpayHook.confirmHash);
|
|
158
|
-
// }
|
|
159
154
|
try {
|
|
160
155
|
if (type === 'transaction.updateStatus') {
|
|
161
156
|
const documentSnapshot = await collectionSubscription.doc(originalOrderId).get();
|
|
@@ -165,30 +160,69 @@ const handleWehook = async (req, res) => {
|
|
|
165
160
|
const {
|
|
166
161
|
galaxpayFristTransactionId, plan, orderNumber, subscriptionLabel,
|
|
167
162
|
} = docSubscription.data();
|
|
163
|
+
let galaxPayTransactionStatus;
|
|
164
|
+
let galaxpaySubscriptionStatus;
|
|
165
|
+
let transactionCreatedAt;
|
|
166
|
+
const app = await getApp();
|
|
167
|
+
try {
|
|
168
|
+
// check subscription and transaction status before in galaxpay
|
|
169
|
+
const galaxpayAxios = new GalaxpayAxios({
|
|
170
|
+
galaxpayId: app.hidden_data?.galaxpay_id,
|
|
171
|
+
galaxpayHash: app.hidden_data?.galaxpay_hash,
|
|
172
|
+
});
|
|
173
|
+
await galaxpayAxios.preparing;
|
|
174
|
+
if (galaxpayAxios.axios) {
|
|
175
|
+
let { data } = await galaxpayAxios.axios
|
|
176
|
+
.get(`/transactions?galaxPayIds=${GalaxPayTransaction.galaxPayId}&startAt=0&limit=1`);
|
|
177
|
+
galaxPayTransactionStatus = data.Transactions[0]?.status;
|
|
178
|
+
const dateTimeTransaction = data.Transactions[0]?.createdAt;
|
|
179
|
+
transactionCreatedAt = dateTimeTransaction && new Date(`${dateTimeTransaction} UTC-3`);
|
|
180
|
+
logger.log(`>> Transaction status: ${galaxPayTransactionStatus}`);
|
|
181
|
+
data = (await galaxpayAxios.axios
|
|
182
|
+
.get(`/subscriptions?myIds=${originalOrderId}&startAt=0&limit=1`)).data;
|
|
183
|
+
galaxpaySubscriptionStatus = data.Subscriptions[0]?.status;
|
|
184
|
+
logger.log(`>> Subscription status: ${galaxpaySubscriptionStatus}`);
|
|
185
|
+
}
|
|
186
|
+
} catch (err) {
|
|
187
|
+
logger.warn(`galaxpay webhook Error: get Transaction/Subscription in Galaxpay => ${err?.message}`);
|
|
188
|
+
}
|
|
168
189
|
if (galaxpayFristTransactionId === GalaxPayTransaction.galaxPayId) {
|
|
169
190
|
// update frist payment
|
|
170
191
|
const order = await findOrderById(originalOrderId);
|
|
171
192
|
// Update value Subscription in GalaxPay
|
|
172
193
|
// logger.log('plan-> ', JSON.stringify(plan));
|
|
173
|
-
//
|
|
174
|
-
if (
|
|
175
|
-
const
|
|
176
|
-
|
|
194
|
+
// subscripton is paid
|
|
195
|
+
if (checkStatusPaid(galaxPayTransactionStatus) && order.items) {
|
|
196
|
+
const oldSubscriptionValue = docSubscription.data()?.value
|
|
197
|
+
|| ({ ...order.amount }.total * 100);
|
|
198
|
+
const newValue = checkAmountItemsOrder({ ...order.amount }, [...order.items], { ...plan });
|
|
199
|
+
if (newValue && newValue !== oldSubscriptionValue) {
|
|
200
|
+
await updateValueSubscription(app, originalOrderId, order.amount, order.items, plan);
|
|
201
|
+
collectionSubscription.doc(originalOrderId)
|
|
202
|
+
.set({
|
|
203
|
+
updatedAt: new Date().toISOString(),
|
|
204
|
+
value: newValue,
|
|
205
|
+
}, { merge: true })
|
|
206
|
+
.catch(logger.error);
|
|
207
|
+
}
|
|
177
208
|
}
|
|
178
209
|
// logger.log('ORDER: ', JSON.stringify(order.amount), ' **');
|
|
179
210
|
// logger.log('> order ', order)
|
|
180
211
|
if (order.financial_status
|
|
181
|
-
&&
|
|
212
|
+
&& checkStatusIsEqual(order.financial_status, galaxPayTransactionStatus)) {
|
|
213
|
+
// check status is equal
|
|
182
214
|
return res.sendStatus(200);
|
|
183
215
|
}
|
|
184
216
|
if (order.transactions) {
|
|
185
217
|
// update payment
|
|
186
218
|
const transactionId = order.transactions[0]._id;
|
|
219
|
+
let notificationCode = `;${GalaxPayTransaction.tid || ''};`;
|
|
220
|
+
notificationCode += `${GalaxPayTransaction.authorizationCode || ''}`;
|
|
187
221
|
const bodyPaymentHistory = {
|
|
188
|
-
date_time: new Date().toISOString(),
|
|
189
|
-
status: parseStatus(
|
|
222
|
+
date_time: transactionCreatedAt || new Date().toISOString(),
|
|
223
|
+
status: parseStatus(galaxPayTransactionStatus),
|
|
190
224
|
transaction_id: transactionId,
|
|
191
|
-
notification_code: `${type};${galaxpayHook.webhookId}`,
|
|
225
|
+
notification_code: `${type};${galaxpayHook.webhookId}${notificationCode}`,
|
|
192
226
|
flags: ['GalaxPay'],
|
|
193
227
|
}; // TODO: incompatible type=> amount and status;;
|
|
194
228
|
await api.post(`orders/${order._id}/payments_history`, bodyPaymentHistory);
|
|
@@ -202,36 +236,66 @@ const handleWehook = async (req, res) => {
|
|
|
202
236
|
}
|
|
203
237
|
} else {
|
|
204
238
|
/*
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
239
|
+
add order, because recurrence creates all transactions in the
|
|
240
|
+
first transaction when quantity is non-zero,search for the order by ID,
|
|
241
|
+
if not found, create the transaction, and if found, check if it will be
|
|
242
|
+
necessary to update the transaction status
|
|
243
|
+
*/
|
|
210
244
|
const transactionId = String(gerateId(GalaxPayTransaction.galaxPayId));
|
|
211
245
|
const { result } = await findOrderByTransactionId(transactionId);
|
|
212
246
|
if (!result || !result.length) {
|
|
213
247
|
// logger.log('> Not found Transaction in API')
|
|
214
|
-
if (
|
|
248
|
+
if (checkStatusPaid(galaxPayTransactionStatus)
|
|
215
249
|
&& checkPayDay(GalaxPayTransaction.payday)) {
|
|
216
250
|
// necessary to create order
|
|
217
251
|
return createTransaction(res, subscriptionLabel, plan, orderNumber, galaxpayFristTransactionId, GalaxPayTransaction, GalaxPaySubscription, GalaxPayTransactionValue, originalOrderId);
|
|
218
252
|
}
|
|
219
|
-
//
|
|
220
|
-
|
|
253
|
+
// fetches the original order again to avoid delay from other webhooks
|
|
254
|
+
let originalOrder;
|
|
255
|
+
try {
|
|
256
|
+
originalOrder = await findOrderById(originalOrderId);
|
|
257
|
+
} catch (err) {
|
|
258
|
+
logger.warn(`Original Order not found (${originalOrderId}) `);
|
|
259
|
+
res.status(404).send({ message: 'Original Order not found' });
|
|
260
|
+
}
|
|
261
|
+
logger.log(`>> Status Original Order: ${originalOrder?.status} `);
|
|
262
|
+
if (originalOrder && galaxpaySubscriptionStatus === 'canceled'
|
|
263
|
+
&& originalOrder?.status !== 'cancelled') {
|
|
264
|
+
// console.log('>> galaxpay webhook: Subscription canceled at galapay');
|
|
265
|
+
try {
|
|
266
|
+
await api.patch(`orders/${originalOrderId}`, { status: 'cancelled' });
|
|
267
|
+
collectionSubscription.doc(originalOrderId)
|
|
268
|
+
.set({
|
|
269
|
+
status: 'cancelled',
|
|
270
|
+
updatedAt: new Date().toISOString(),
|
|
271
|
+
}, { merge: true })
|
|
272
|
+
.catch(logger.error);
|
|
273
|
+
return res.sendStatus(200);
|
|
274
|
+
} catch (err) {
|
|
275
|
+
logger.error(err);
|
|
276
|
+
return res.sendStatus(400);
|
|
277
|
+
}
|
|
278
|
+
} else {
|
|
279
|
+
logger.log(`>> galaxpay webhook: Status or checkPayDay invalid => Payday: ${GalaxPayTransaction.payday} now: ${new Date().toISOString()}`);
|
|
280
|
+
return res.status(404).send('Status or checkPayDay invalid');
|
|
281
|
+
}
|
|
221
282
|
}
|
|
222
283
|
const order = result[0];
|
|
223
284
|
if (order.financial_status
|
|
224
|
-
&&
|
|
285
|
+
&& checkStatusIsEqual(order.financial_status, galaxPayTransactionStatus)) {
|
|
286
|
+
// check status is equal
|
|
225
287
|
// logger.log('> Equals Status')
|
|
226
288
|
return res.sendStatus(200);
|
|
227
289
|
}
|
|
228
290
|
// logger.log('> Order id ')
|
|
229
291
|
// update payment
|
|
292
|
+
let notificationCode = `;${GalaxPayTransaction.tid || ''};`;
|
|
293
|
+
notificationCode += `${GalaxPayTransaction.authorizationCode || ''}`;
|
|
230
294
|
const bodyPaymentHistory = {
|
|
231
|
-
date_time: new Date().toISOString(),
|
|
232
|
-
status: parseStatus(
|
|
295
|
+
date_time: transactionCreatedAt || new Date().toISOString(),
|
|
296
|
+
status: parseStatus(galaxPayTransactionStatus),
|
|
233
297
|
transaction_id: transactionId,
|
|
234
|
-
notification_code: `${type};${galaxpayHook.webhookId}`,
|
|
298
|
+
notification_code: `${type};${galaxpayHook.webhookId}${notificationCode}`,
|
|
235
299
|
flags: ['GalaxPay'],
|
|
236
300
|
}; // TODO: incompatible type=> amount and status;
|
|
237
301
|
await api.post(`orders/${order._id}/payments_history`, bodyPaymentHistory);
|
|
@@ -242,8 +306,8 @@ const handleWehook = async (req, res) => {
|
|
|
242
306
|
transaction_code: GalaxPayTransaction.authorizationCode || '',
|
|
243
307
|
},
|
|
244
308
|
});
|
|
245
|
-
if (parseStatus(
|
|
246
|
-
|| parseStatus(
|
|
309
|
+
if (parseStatus(galaxPayTransactionStatus) === 'voided'
|
|
310
|
+
|| parseStatus(galaxPayTransactionStatus) === 'refunded') {
|
|
247
311
|
await api.patch(`orders/${order._id}`, { status: 'cancelled' });
|
|
248
312
|
// logger.log('> UPDATE ORDER OK')
|
|
249
313
|
return res.sendStatus(200);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webhook.js","sourceRoot":"","sources":["../../../src/functions-lib/galaxpay/webhook.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"webhook.js","sourceRoot":"","sources":["../../../src/functions-lib/galaxpay/webhook.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cloudcommerce/app-galaxpay",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.9.0",
|
|
5
5
|
"description": "E-Com Plus Cloud Commerce app to integrate Galax Pay for recurring payments",
|
|
6
6
|
"main": "lib/galaxpay.js",
|
|
7
7
|
"exports": {
|
|
@@ -20,15 +20,15 @@
|
|
|
20
20
|
},
|
|
21
21
|
"homepage": "https://github.com/ecomplus/cloud-commerce/tree/main/packages/apps/galaxpay#readme",
|
|
22
22
|
"dependencies": {
|
|
23
|
-
"axios": "^1.3.
|
|
24
|
-
"firebase-admin": "^11.
|
|
23
|
+
"axios": "^1.3.5",
|
|
24
|
+
"firebase-admin": "^11.6.0",
|
|
25
25
|
"firebase-functions": "^4.2.1",
|
|
26
|
-
"@cloudcommerce/api": "0.
|
|
27
|
-
"@cloudcommerce/firebase": "0.
|
|
26
|
+
"@cloudcommerce/api": "0.9.0",
|
|
27
|
+
"@cloudcommerce/firebase": "0.9.0"
|
|
28
28
|
},
|
|
29
29
|
"devDependencies": {
|
|
30
30
|
"@firebase/app-types": "^0.9.0",
|
|
31
|
-
"@cloudcommerce/types": "0.
|
|
31
|
+
"@cloudcommerce/types": "0.9.0"
|
|
32
32
|
},
|
|
33
33
|
"scripts": {
|
|
34
34
|
"build": "bash scripts/build.sh"
|
|
@@ -5,7 +5,7 @@ import { getFirestore } from 'firebase-admin/firestore';
|
|
|
5
5
|
import config from '@cloudcommerce/firebase/lib/config';
|
|
6
6
|
import GalaxpayAxios from '../galaxpay/auth/create-access';
|
|
7
7
|
|
|
8
|
-
const collectionSubscription = getFirestore().collection('
|
|
8
|
+
const collectionSubscription = getFirestore().collection('galaxpaySubscriptions');
|
|
9
9
|
|
|
10
10
|
const handleApiEvent: ApiEventHandler = async ({
|
|
11
11
|
evName,
|
|
@@ -9,6 +9,7 @@ import { getFirestore } from 'firebase-admin/firestore';
|
|
|
9
9
|
import logger from 'firebase-functions/logger';
|
|
10
10
|
import config from '@cloudcommerce/firebase/lib/config';
|
|
11
11
|
import { parseStatus, parsePeriodicityToEcom, gerateId } from '../all-parses';
|
|
12
|
+
import GalaxpayAxios from './auth/create-access';
|
|
12
13
|
import { updateValueSubscription, checkAmountItemsOrder } from './update-subscription';
|
|
13
14
|
|
|
14
15
|
type FinancialStatusCurrent = Exclude<Orders['financial_status'], undefined>['current']
|
|
@@ -29,23 +30,20 @@ const getApp = async (): Promise<Applications> => {
|
|
|
29
30
|
});
|
|
30
31
|
};
|
|
31
32
|
|
|
32
|
-
const
|
|
33
|
+
const checkStatusIsEqual = (
|
|
33
34
|
financialStatus: Exclude<Orders['financial_status'], undefined>,
|
|
34
|
-
|
|
35
|
+
galaxPayTransactionStatus?: string,
|
|
35
36
|
) => {
|
|
36
|
-
if (financialStatus.current === parseStatus(
|
|
37
|
-
return true;
|
|
38
|
-
} if ((financialStatus.current === 'paid' || financialStatus.current === 'authorized')
|
|
39
|
-
&& parseStatus(GalaxPayTransaction.status) !== 'refunded') {
|
|
37
|
+
if (financialStatus.current === parseStatus(galaxPayTransactionStatus)) {
|
|
40
38
|
return true;
|
|
41
39
|
}
|
|
42
40
|
return false;
|
|
43
41
|
};
|
|
44
42
|
|
|
45
|
-
const
|
|
43
|
+
const checkStatusPaid = (status?: string) => {
|
|
46
44
|
const parsedStatus = parseStatus(status);
|
|
47
|
-
|
|
48
|
-
if (parsedStatus === '
|
|
45
|
+
logger.log(`>> Status is ${status} => ${parsedStatus}`);
|
|
46
|
+
if (parsedStatus === 'paid') {
|
|
49
47
|
return true;
|
|
50
48
|
}
|
|
51
49
|
return false;
|
|
@@ -73,11 +71,10 @@ const findOrderByTransactionId = (transactionId: string): Promise<ResourceListRe
|
|
|
73
71
|
};
|
|
74
72
|
|
|
75
73
|
const findOrderById = async (orderId: string): Promise<Orders> => new Promise((resolve) => {
|
|
76
|
-
api.get(
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
});
|
|
74
|
+
api.get(`orders/${orderId}`)
|
|
75
|
+
.then(({ data: order }) => {
|
|
76
|
+
resolve(order);
|
|
77
|
+
});
|
|
81
78
|
});
|
|
82
79
|
|
|
83
80
|
const createTransaction = async (
|
|
@@ -199,9 +196,6 @@ const handleWehook = async (req: Request, res: Response) => {
|
|
|
199
196
|
${GalaxPaySubscriptionQuantity}, status: ${GalaxPayTransaction.status} <`,
|
|
200
197
|
);
|
|
201
198
|
|
|
202
|
-
// if (galaxpayHook.confirmHash) {
|
|
203
|
-
// logger.log('> ', galaxpayHook.confirmHash);
|
|
204
|
-
// }
|
|
205
199
|
try {
|
|
206
200
|
if (type === 'transaction.updateStatus') {
|
|
207
201
|
const documentSnapshot = await collectionSubscription.doc(originalOrderId).get();
|
|
@@ -215,31 +209,89 @@ const handleWehook = async (req: Request, res: Response) => {
|
|
|
215
209
|
subscriptionLabel,
|
|
216
210
|
} = docSubscription.data();
|
|
217
211
|
|
|
212
|
+
let galaxPayTransactionStatus: string | undefined;
|
|
213
|
+
let galaxpaySubscriptionStatus: string | undefined;
|
|
214
|
+
let transactionCreatedAt: string | undefined;
|
|
215
|
+
const app = await getApp();
|
|
216
|
+
|
|
217
|
+
try {
|
|
218
|
+
// check subscription and transaction status before in galaxpay
|
|
219
|
+
|
|
220
|
+
const galaxpayAxios = new GalaxpayAxios({
|
|
221
|
+
galaxpayId: app.hidden_data?.galaxpay_id,
|
|
222
|
+
galaxpayHash: app.hidden_data?.galaxpay_hash,
|
|
223
|
+
});
|
|
224
|
+
await galaxpayAxios.preparing;
|
|
225
|
+
|
|
226
|
+
if (galaxpayAxios.axios) {
|
|
227
|
+
let { data } = await galaxpayAxios.axios
|
|
228
|
+
.get(`/transactions?galaxPayIds=${GalaxPayTransaction.galaxPayId}&startAt=0&limit=1`);
|
|
229
|
+
|
|
230
|
+
galaxPayTransactionStatus = data.Transactions[0]?.status;
|
|
231
|
+
const dateTimeTransaction = data.Transactions[0]?.createdAt;
|
|
232
|
+
transactionCreatedAt = dateTimeTransaction && new Date(`${dateTimeTransaction} UTC-3`);
|
|
233
|
+
logger.log(`>> Transaction status: ${galaxPayTransactionStatus}`);
|
|
234
|
+
|
|
235
|
+
data = (await galaxpayAxios.axios
|
|
236
|
+
.get(`/subscriptions?myIds=${originalOrderId}&startAt=0&limit=1`)).data;
|
|
237
|
+
|
|
238
|
+
galaxpaySubscriptionStatus = data.Subscriptions[0]?.status;
|
|
239
|
+
logger.log(`>> Subscription status: ${galaxpaySubscriptionStatus}`);
|
|
240
|
+
}
|
|
241
|
+
} catch (err: any) {
|
|
242
|
+
logger.warn(`galaxpay webhook Error: get Transaction/Subscription in Galaxpay => ${err?.message}`);
|
|
243
|
+
}
|
|
244
|
+
|
|
218
245
|
if (galaxpayFristTransactionId === GalaxPayTransaction.galaxPayId) {
|
|
219
246
|
// update frist payment
|
|
220
247
|
const order = await findOrderById(originalOrderId);
|
|
221
248
|
// Update value Subscription in GalaxPay
|
|
222
249
|
|
|
223
250
|
// logger.log('plan-> ', JSON.stringify(plan));
|
|
224
|
-
//
|
|
225
|
-
if (
|
|
226
|
-
const
|
|
227
|
-
|
|
251
|
+
// subscripton is paid
|
|
252
|
+
if (checkStatusPaid(galaxPayTransactionStatus) && order.items) {
|
|
253
|
+
const oldSubscriptionValue = docSubscription.data()?.value
|
|
254
|
+
|| ({ ...order.amount }.total * 100);
|
|
255
|
+
|
|
256
|
+
const newValue = checkAmountItemsOrder(
|
|
257
|
+
{ ...order.amount },
|
|
258
|
+
[...order.items],
|
|
259
|
+
{ ...plan },
|
|
260
|
+
);
|
|
261
|
+
if (newValue && newValue !== oldSubscriptionValue) {
|
|
262
|
+
await updateValueSubscription(
|
|
263
|
+
app,
|
|
264
|
+
originalOrderId,
|
|
265
|
+
order.amount,
|
|
266
|
+
order.items,
|
|
267
|
+
plan,
|
|
268
|
+
);
|
|
269
|
+
|
|
270
|
+
collectionSubscription.doc(originalOrderId)
|
|
271
|
+
.set({
|
|
272
|
+
updatedAt: new Date().toISOString(),
|
|
273
|
+
value: newValue,
|
|
274
|
+
}, { merge: true })
|
|
275
|
+
.catch(logger.error);
|
|
276
|
+
}
|
|
228
277
|
}
|
|
229
278
|
// logger.log('ORDER: ', JSON.stringify(order.amount), ' **');
|
|
230
279
|
// logger.log('> order ', order)
|
|
231
280
|
|
|
232
281
|
if (order.financial_status
|
|
233
|
-
&&
|
|
282
|
+
&& checkStatusIsEqual(order.financial_status, galaxPayTransactionStatus)) {
|
|
283
|
+
// check status is equal
|
|
234
284
|
return res.sendStatus(200);
|
|
235
285
|
} if (order.transactions) {
|
|
236
286
|
// update payment
|
|
237
287
|
const transactionId = order.transactions[0]._id;
|
|
288
|
+
let notificationCode = `;${GalaxPayTransaction.tid || ''};`;
|
|
289
|
+
notificationCode += `${GalaxPayTransaction.authorizationCode || ''}`;
|
|
238
290
|
const bodyPaymentHistory = {
|
|
239
|
-
date_time: new Date().toISOString(),
|
|
240
|
-
status: parseStatus(
|
|
291
|
+
date_time: transactionCreatedAt || new Date().toISOString(),
|
|
292
|
+
status: parseStatus(galaxPayTransactionStatus),
|
|
241
293
|
transaction_id: transactionId,
|
|
242
|
-
notification_code: `${type};${galaxpayHook.webhookId}`,
|
|
294
|
+
notification_code: `${type};${galaxpayHook.webhookId}${notificationCode}`,
|
|
243
295
|
flags: ['GalaxPay'],
|
|
244
296
|
} as any; // TODO: incompatible type=> amount and status;;
|
|
245
297
|
|
|
@@ -259,18 +311,18 @@ const handleWehook = async (req: Request, res: Response) => {
|
|
|
259
311
|
}
|
|
260
312
|
} else {
|
|
261
313
|
/*
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
314
|
+
add order, because recurrence creates all transactions in the
|
|
315
|
+
first transaction when quantity is non-zero,search for the order by ID,
|
|
316
|
+
if not found, create the transaction, and if found, check if it will be
|
|
317
|
+
necessary to update the transaction status
|
|
318
|
+
*/
|
|
267
319
|
const transactionId = String(gerateId(GalaxPayTransaction.galaxPayId));
|
|
268
320
|
|
|
269
321
|
const { result } = await findOrderByTransactionId(transactionId);
|
|
270
322
|
|
|
271
323
|
if (!result || !result.length) {
|
|
272
324
|
// logger.log('> Not found Transaction in API')
|
|
273
|
-
if (
|
|
325
|
+
if (checkStatusPaid(galaxPayTransactionStatus)
|
|
274
326
|
&& checkPayDay(GalaxPayTransaction.payday)) {
|
|
275
327
|
// necessary to create order
|
|
276
328
|
return createTransaction(
|
|
@@ -285,22 +337,54 @@ const handleWehook = async (req: Request, res: Response) => {
|
|
|
285
337
|
originalOrderId,
|
|
286
338
|
);
|
|
287
339
|
}
|
|
288
|
-
//
|
|
289
|
-
|
|
340
|
+
// fetches the original order again to avoid delay from other webhooks
|
|
341
|
+
let originalOrder: Orders | undefined;
|
|
342
|
+
try {
|
|
343
|
+
originalOrder = await findOrderById(originalOrderId);
|
|
344
|
+
} catch (err) {
|
|
345
|
+
logger.warn(`Original Order not found (${originalOrderId}) `);
|
|
346
|
+
res.status(404).send({ message: 'Original Order not found' });
|
|
347
|
+
}
|
|
348
|
+
logger.log(`>> Status Original Order: ${originalOrder?.status} `);
|
|
349
|
+
|
|
350
|
+
if (originalOrder && galaxpaySubscriptionStatus === 'canceled'
|
|
351
|
+
&& originalOrder?.status !== 'cancelled') {
|
|
352
|
+
// console.log('>> galaxpay webhook: Subscription canceled at galapay');
|
|
353
|
+
try {
|
|
354
|
+
await api.patch(`orders/${originalOrderId}`, { status: 'cancelled' });
|
|
355
|
+
collectionSubscription.doc(originalOrderId)
|
|
356
|
+
.set({
|
|
357
|
+
status: 'cancelled',
|
|
358
|
+
updatedAt: new Date().toISOString(),
|
|
359
|
+
}, { merge: true })
|
|
360
|
+
.catch(logger.error);
|
|
361
|
+
|
|
362
|
+
return res.sendStatus(200);
|
|
363
|
+
} catch (err) {
|
|
364
|
+
logger.error(err);
|
|
365
|
+
return res.sendStatus(400);
|
|
366
|
+
}
|
|
367
|
+
} else {
|
|
368
|
+
logger.log(`>> galaxpay webhook: Status or checkPayDay invalid => Payday: ${GalaxPayTransaction.payday} now: ${new Date().toISOString()}`);
|
|
369
|
+
return res.status(404).send('Status or checkPayDay invalid');
|
|
370
|
+
}
|
|
290
371
|
}
|
|
291
372
|
const order = result[0];
|
|
292
373
|
if (order.financial_status
|
|
293
|
-
&&
|
|
374
|
+
&& checkStatusIsEqual(order.financial_status, galaxPayTransactionStatus)) {
|
|
375
|
+
// check status is equal
|
|
294
376
|
// logger.log('> Equals Status')
|
|
295
377
|
return res.sendStatus(200);
|
|
296
378
|
}
|
|
297
379
|
// logger.log('> Order id ')
|
|
298
380
|
// update payment
|
|
381
|
+
let notificationCode = `;${GalaxPayTransaction.tid || ''};`;
|
|
382
|
+
notificationCode += `${GalaxPayTransaction.authorizationCode || ''}`;
|
|
299
383
|
const bodyPaymentHistory = {
|
|
300
|
-
date_time: new Date().toISOString(),
|
|
301
|
-
status: parseStatus(
|
|
384
|
+
date_time: transactionCreatedAt || new Date().toISOString(),
|
|
385
|
+
status: parseStatus(galaxPayTransactionStatus),
|
|
302
386
|
transaction_id: transactionId,
|
|
303
|
-
notification_code: `${type};${galaxpayHook.webhookId}`,
|
|
387
|
+
notification_code: `${type};${galaxpayHook.webhookId}${notificationCode}`,
|
|
304
388
|
flags: ['GalaxPay'],
|
|
305
389
|
} as any; // TODO: incompatible type=> amount and status;
|
|
306
390
|
|
|
@@ -318,8 +402,8 @@ const handleWehook = async (req: Request, res: Response) => {
|
|
|
318
402
|
},
|
|
319
403
|
);
|
|
320
404
|
|
|
321
|
-
if (parseStatus(
|
|
322
|
-
|| parseStatus(
|
|
405
|
+
if (parseStatus(galaxPayTransactionStatus) === 'voided'
|
|
406
|
+
|| parseStatus(galaxPayTransactionStatus) === 'refunded') {
|
|
323
407
|
await api.patch(`orders/${order._id}`, { status: 'cancelled' });
|
|
324
408
|
|
|
325
409
|
// logger.log('> UPDATE ORDER OK')
|