Preciso acessar um serviço externo que está na porta 8443, a requisição funciona no Postman, mas quando faço essa mesma requisição pela vtex através de um middleware ela retorna um erro, (pelo que eu entendi a vtex só aceita requisições na porta 80 e 443 por padrão). Já abri chamado com a vtex e após varias sugestões o código ficou assim (anexo abaixo), mas ainda não funciona. Testei declarar a porta direto na url e no header, apenas na url, apenas no header, mas nada funcionou. Alguém já possou por algo parecido e conseguiu resolver?
import { ExternalClient, InstanceOptions, IOContext } from 'vtex/api';
import axios, { AxiosResponse } from 'axios';
interface GetDiscountInfoProps {
cnpj: string | string[];
}
export default class VTEXApi extends ExternalClient {
private url: string;
private apiToken: string;
constructor(context: IOContext, options?: InstanceOptions) {
super('', context, options);
this.url = https://exemplo.com.br:8443/rest/api/integration/...
this.apiToken = 'token';
}
public async checkCnpj(params: GetDiscountInfoProps): Promise<any | null> {
const {cnpj} = params
try {
const response: AxiosResponse<any> = await axios.post(
this.url,
{ cnpj },
{
headers: {
'X-WS-TOKEN-AUTH': this.apiToken,
'Content-Type': 'application/json',
'Accept': 'application/json',
'X-VTEX-Use-Https': true,
'X-VTEX-Remote-Port': 8443
},
}
);
return response.data;
} catch (error) {
console.error('Erro ao verificar CNPJ', error );
return null;
}
}
}
Testei varias variações desse código, e tive alguns erros de retorno, por exemplo o erro abaixo
Erro ao verificar CNPJ AxiosError: connect ECONNREFUSED 186.248.229.xxx:8443
at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1278:16) {
port: 8443,
address: '186.248.229.xxx',
syscall: 'connect',
code: 'ECONNREFUSED',
errno: -111,
config: {
transitional: {
silentJSONParsing: true,
forcedJSONParsing: true,
clarifyTimeoutError: false
},
adapter: [Function: httpAdapter],
transformRequest: [ [Function: transformRequest] ],
transformResponse: [ [Function: transformResponse] ],
timeout: 0,
xsrfCookieName: 'XSRF-TOKEN',
xsrfHeaderName: 'X-XSRF-TOKEN',
maxContentLength: -1,
maxBodyLength: -1,
env: { FormData: [Function] },
validateStatus: [Function: validateStatus],