Skip to content

Commit 00bdcd9

Browse files
leomp12claude
andcommitted
fix(paghiper): Properly separate API key and token usage
- Use PAGHIPER_API_KEY for API requests and transaction creation - Use PAGHIPER_TOKEN for webhook validation - Improve webhook credential handling with getAppData helper - Add proper validation for both credentials 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
1 parent 13c8d81 commit 00bdcd9

File tree

3 files changed

+20
-18
lines changed

3 files changed

+20
-18
lines changed

packages/apps/paghiper/src/functions-lib/handle-webhook.ts

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import type { Request, Response } from 'firebase-functions/v1';
33
import api from '@cloudcommerce/api';
44
import { Endpoint } from '@cloudcommerce/api/types';
55
import config, { logger } from '@cloudcommerce/firebase/lib/config';
6+
import getAppData from '@cloudcommerce/firebase/lib/helpers/get-app-data';
67
import createAxios from './create-axios';
78

89
const { apps } = config.get();
@@ -39,26 +40,27 @@ export default async (req: Request, res: Response) => {
3940
}
4041

4142
logger.info(`> Paghiper notification for ${transactionCode}`);
42-
// const docRef = (await collectionSubscription.doc(transactionCode).get()).data();
43-
const Apps = (await api.get(
44-
`applications?app_id=${apps.pagHiper.appId}&fields=hidden_data`,
45-
)).data.result;
46-
const configApp = Apps[0].hidden_data;
47-
if (!process.env.PAGHIPER_TOKEN) {
48-
const pagHiperToken = configApp?.paghiper_api_key;
49-
if (typeof pagHiperToken === 'string' && pagHiperToken) {
50-
process.env.PAGHIPER_TOKEN = pagHiperToken;
51-
} else {
52-
logger.warn('Missing PagHiper API token');
43+
if (!process.env.PAGHIPER_API_KEY || !process.env.PAGHIPER_TOKEN) {
44+
const appData = await getAppData('pagHiper');
45+
if (appData.paghiper_api_key) {
46+
process.env.PAGHIPER_API_KEY = appData.paghiper_api_key;
5347
}
48+
if (appData.paghiper_token) {
49+
process.env.PAGHIPER_TOKEN = appData.paghiper_token;
50+
}
51+
}
52+
const { PAGHIPER_API_KEY, PAGHIPER_TOKEN } = process.env;
53+
if (!PAGHIPER_API_KEY || !PAGHIPER_TOKEN) {
54+
logger.warn('Missing PagHiper credentials');
55+
return res.sendStatus(403);
5456
}
5557

5658
try {
57-
if (process.env.PAGHIPER_TOKEN && process.env.PAGHIPER_TOKEN === body.apiKey) {
59+
if (PAGHIPER_API_KEY && PAGHIPER_API_KEY === body.apiKey) {
5860
// list order IDs for respective transaction code
5961
const orders = await listOrdersByTransaction(transactionCode);
6062
const paghiperResponse = await readNotification(
61-
{ ...body, token: process.env.PAGHIPER_TOKEN },
63+
{ ...body, token: PAGHIPER_TOKEN },
6264
isPix,
6365
);
6466

packages/apps/paghiper/src/paghiper-create-transaction.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -135,17 +135,17 @@ export default async (appData: AppModuleBody) => {
135135

136136
const pagHiperToken = configApp.paghiper_api_key;
137137
if (typeof pagHiperToken === 'string' && pagHiperToken) {
138-
process.env.PAGHIPER_TOKEN = pagHiperToken;
138+
process.env.PAGHIPER_API_KEY = pagHiperToken;
139139
}
140-
if (!process.env.PAGHIPER_TOKEN) {
140+
if (!process.env.PAGHIPER_API_KEY) {
141141
logger.warn('Missing PagHiper API token');
142142
return {
143143
error: 'NO_PAGHIPER_KEYS',
144144
message: 'Chave de API não configurada (lojista deve configurar o aplicativo)',
145145
};
146146
}
147147

148-
paghiperTransaction.apiKey = process.env.PAGHIPER_TOKEN;
148+
paghiperTransaction.apiKey = process.env.PAGHIPER_API_KEY;
149149
// merge configured banking billet options
150150
const options = configApp.banking_billet_options;
151151
if (typeof options === 'object' && options !== null) {

packages/apps/paghiper/src/paghiper-list-payments.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,10 @@ export default async (data: AppModuleBody) => {
3434
payment_gateways: [],
3535
};
3636

37-
if (!process.env.PAGHIPER_TOKEN) {
37+
if (!process.env.PAGHIPER_API_KEY) {
3838
const pagHiperToken = configApp.paghiper_api_key;
3939
if (typeof pagHiperToken === 'string' && pagHiperToken) {
40-
process.env.PAGHIPER_TOKEN = pagHiperToken;
40+
process.env.PAGHIPER_API_KEY = pagHiperToken;
4141
} else {
4242
logger.warn('Missing PagHiper API token');
4343

0 commit comments

Comments
 (0)