@cloudcommerce/app-woovi 2.56.1 → 2.56.2

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.
@@ -1,5 +1,6 @@
1
1
  import { randomUUID } from 'node:crypto';
2
- import { logger } from '@cloudcommerce/firebase/lib/config';
2
+ import { getFirestore } from 'firebase-admin/firestore';
3
+ import config, { logger } from '@cloudcommerce/firebase/lib/config';
3
4
  import { fullName as getFullname, phone as getPhone } from '@ecomplus/utils';
4
5
  import { getWooviAxios } from './util/woovi-api.js';
5
6
 
@@ -20,6 +21,7 @@ export default async (modBody) => {
20
21
  message: 'AppID não configurado (lojista deve configurar o aplicativo)',
21
22
  };
22
23
  }
24
+ const wooviKeyId = `${WOOVI_APP_ID}`.substring(0, 6) + `${WOOVI_APP_ID}`.slice(-3);
23
25
  const {
24
26
  order_id: orderId, order_number: orderNumber, payment_method: paymentMethod, amount, buyer,
25
27
  } = params;
@@ -85,6 +87,58 @@ export default async (modBody) => {
85
87
  valid_thru: new Date(charge.expiresDate).toISOString(),
86
88
  };
87
89
  }
90
+ const { storeId, httpsFunctionOptions } = config.get();
91
+ const locationId = httpsFunctionOptions.region;
92
+ const appBaseUri = `https://${locationId}-${process.env.GCLOUD_PROJECT}.cloudfunctions.net`;
93
+ const webhookUrl = `${appBaseUri}/woovi-webhook`;
94
+ const docRef = getFirestore().doc('wooviSetup/webhook');
95
+ const docSnap = await docRef.get();
96
+ const webhookSetupData = docSnap.data();
97
+ if (webhookSetupData?.wooviKeyId !== wooviKeyId) {
98
+ const oldWebhookIds = webhookSetupData?.webhookIds;
99
+ if (oldWebhookIds?.length) {
100
+ await Promise.all(oldWebhookIds.map(async (id) => {
101
+ return wooviAxios.delete(`/webhook/${id}`).catch(logger.warn);
102
+ }));
103
+ }
104
+ const webhookEvents = [
105
+ 'OPENPIX:CHARGE_CREATED',
106
+ 'OPENPIX:CHARGE_COMPLETED',
107
+ 'OPENPIX:CHARGE_COMPLETED_NOT_SAME_CUSTOMER_PAYER',
108
+ 'PIX_AUTOMATIC_COBR_COMPLETED',
109
+ 'OPENPIX:CHARGE_EXPIRED',
110
+ 'OPENPIX:TRANSACTION_REFUND_RECEIVED',
111
+ 'PIX_TRANSACTION_REFUND_SENT_CONFIRMED',
112
+ ];
113
+ const webhookIds = [];
114
+ try {
115
+ await Promise.all(webhookEvents.map(async (event) => {
116
+ const { data } = await wooviAxios.post('/webhook', {
117
+ webhook: {
118
+ name: `ecom.plus #${storeId} ${event.replace('OPENPIX:', '').replace('PIX_', '')}`,
119
+ event,
120
+ url: webhookUrl,
121
+ authorization: `${storeId}_${wooviKeyId}`,
122
+ isActive: true,
123
+ },
124
+ });
125
+ if (data.webhook?.id) {
126
+ webhookIds.push(data.webhook.id);
127
+ }
128
+ }));
129
+ await docRef.set({ wooviKeyId, webhookIds })
130
+ .catch(logger.warn);
131
+ } catch (_err) {
132
+ const err = _err;
133
+ logger.warn('Failed saving Woovi webhook', {
134
+ url: err.config?.url,
135
+ request: err.config?.data,
136
+ response: err.response?.data,
137
+ status: err.response?.status,
138
+ });
139
+ logger.error(err);
140
+ }
141
+ }
88
142
  return { transaction };
89
143
  } catch (_err) {
90
144
  const err = _err;
@@ -1 +1 @@
1
- {"version":3,"file":"woovi-create-transaction.js","sourceRoot":"","sources":["../src/woovi-create-transaction.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"woovi-create-transaction.js","sourceRoot":"","sources":["../src/woovi-create-transaction.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,9 @@
1
1
  /* eslint-disable import/prefer-default-export */
2
2
  import '@cloudcommerce/firebase/lib/init';
3
3
  import * as functions from 'firebase-functions/v1';
4
+ import { getFirestore } from 'firebase-admin/firestore';
4
5
  import api from '@cloudcommerce/api';
5
6
  import config, { logger } from '@cloudcommerce/firebase/lib/config';
6
- import getAppData from '@cloudcommerce/firebase/lib/helpers/get-app-data';
7
7
 
8
8
  const parseWooviStatus = (event) => {
9
9
  switch (event) {
@@ -31,7 +31,7 @@ const listOrdersByTransaction = async (correlationID) => {
31
31
  const handleWebhook = async (req, res) => {
32
32
  const { body } = req;
33
33
  const event = body?.event;
34
- const charge = body?.charge || body?.pix;
34
+ const charge = body?.charge || body?.pix?.charge;
35
35
  if (!event || !charge) {
36
36
  logger.warn('Woovi webhook missing event or charge', { body });
37
37
  return res.sendStatus(400);
@@ -42,27 +42,32 @@ const handleWebhook = async (req, res) => {
42
42
  return res.sendStatus(400);
43
43
  }
44
44
  logger.info(`> Woovi notification: ${event}`, { correlationID });
45
- if (!process.env.WOOVI_APP_ID) {
46
- const appData = await getAppData('woovi');
47
- if (appData.woovi_app_id) {
48
- process.env.WOOVI_APP_ID = appData.woovi_app_id;
49
- }
45
+ const status = parseWooviStatus(event);
46
+ if (!status) {
47
+ logger.info(`Ignoring Woovi event: ${event}`);
48
+ return res.sendStatus(204);
49
+ }
50
+ const authorization = req.headers.authorization;
51
+ if (!authorization) {
52
+ logger.warn('Woovi webhook missing Authorization header');
53
+ return res.sendStatus(401);
50
54
  }
51
- const { WOOVI_APP_ID } = process.env;
52
- if (!WOOVI_APP_ID) {
53
- logger.warn('Missing Woovi AppID');
55
+ const docRef = getFirestore().doc('wooviSetup/webhook');
56
+ const docSnap = await docRef.get();
57
+ const webhookSetupData = docSnap.data();
58
+ const { storeId } = config.get();
59
+ const expectedAuth = webhookSetupData?.wooviKeyId
60
+ ? `${storeId}_${webhookSetupData.wooviKeyId}`
61
+ : null;
62
+ if (!expectedAuth || authorization !== expectedAuth) {
63
+ logger.warn('Woovi webhook authorization mismatch', {
64
+ authorization,
65
+ expectedAuth,
66
+ });
54
67
  return res.sendStatus(403);
55
68
  }
56
69
  try {
57
- const status = parseWooviStatus(event);
58
- if (!status) {
59
- logger.info(`Ignoring Woovi event: ${event}`);
60
- return res.sendStatus(204);
61
- }
62
- let orders = [];
63
- if (correlationID) {
64
- orders = await listOrdersByTransaction(correlationID);
65
- }
70
+ const orders = await listOrdersByTransaction(correlationID);
66
71
  if (!orders.length) {
67
72
  logger.warn('Order not found for Woovi charge', { correlationID });
68
73
  return res.sendStatus(404);
@@ -1 +1 @@
1
- {"version":3,"file":"woovi-events.js","sourceRoot":"","sources":["../src/woovi-events.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"woovi-events.js","sourceRoot":"","sources":["../src/woovi-events.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@cloudcommerce/app-woovi",
3
3
  "type": "module",
4
- "version": "2.56.1",
4
+ "version": "2.56.2",
5
5
  "description": "e-com.plus Cloud Commerce app to integrate Woovi (OpenPix) Pix payments",
6
6
  "main": "lib/woovi.js",
7
7
  "exports": {
@@ -31,11 +31,11 @@
31
31
  "axios": "^1.13.2",
32
32
  "firebase-admin": "^13.6.0",
33
33
  "firebase-functions": "^6.6.0",
34
- "@cloudcommerce/api": "2.56.1",
35
- "@cloudcommerce/firebase": "2.56.1"
34
+ "@cloudcommerce/api": "2.56.2",
35
+ "@cloudcommerce/firebase": "2.56.2"
36
36
  },
37
37
  "devDependencies": {
38
- "@cloudcommerce/types": "2.56.1"
38
+ "@cloudcommerce/types": "2.56.2"
39
39
  },
40
40
  "scripts": {
41
41
  "build": "bash ../../../scripts/build-lib.sh"