Observação: A partir da versão TOTVS Fluig 1.8.2 20250429, é possível configurar autenticação do tipo Basic para serviços SOAP. Para mais informações, consulte a documentação: https://tdn.totvs.com/x/mqVtJg
Dúvida
ERP Protheus em sua nova release (12.1.2410) está exigindo autenticação na hora de consumir os Web Services e as integrações TOTVS Fluig x ERP Protheus não estão mais funcionando. Por que isso está ocorrendo?
Ambiente
TOTVS Fluig - Todas as versões
Solução
Cadastrar o serviço do ERP Protheus, acessando o TOTVS Fluig com usuário administrador, no Painel de controle localize o agrupador Desenvolvimento e acione a opção Serviços. Selecione a opção novo serviço e escolha SOAP:
Documentação oficial Cadastrando o serviço
Recomendamos criar um novo dataset para realizar a autenticação de forma centralizada. Onde neste dataset irá retornar o objeto properties que será usada na requisição SOAP:
function createDataset(fields, constraints, sortFields) {
var dataset = DatasetBuilder.newDataset();
dataset.addColumn("properties");
var username = "user";
var password = "pass";
var properties = {};
properties["basic.authorization"] = "true";
properties["basic.authorization.username"] = username;
properties["basic.authorization.password"] = password;
dataset.addRow(new Array(JSON.stringify(properties)));
return dataset;
}
Exemplo de como realizar a chamada usando o método getCustomClient onde é passado o usuário e senha do ERP Protheus através do objeto properties que retorna como JSON String do dataset recém criado e é convertido para um JSON Object:
function createDataset(fields, constraints, sortFields) {
var dataset = DatasetBuilder.newDataset();
dataset.addColumn("M0_CODFIL");
dataset.addColumn("M0_FIL");
var serviceFluig = ServiceManager.getService('INTEGFLUIG');
var serviceHelper = serviceFluig.getBean();
var serviceLocator = serviceHelper.instantiate('br.com.totvs.INTEGFLUIG');
var service = serviceLocator.getINTEGFLUIGSOAP();
try {
var customClient = serviceHelper.getCustomClient(service, 'br.com.totvs.INTEGFLUIGSOAP', JSON.parse(DatasetFactory.getDataset("ds_auth_ws_erp", null, null, null).getValue(0, "properties")));
var result = customClient.carregarlistafiliaisws("01").getFFILIAL().toArray();
for(var i in result){
dataset.addRow([result[i].getM0CODFIL(),result[i].getM0FIL()]);
}
} catch (e) {
dataset.addRow([e.toString()]);
}
return dataset;
}
É preciso ajustar os demais datasets, Atividades de Serviço de processos e/ous eventos de processos que realizam as integrações.
Saiba mais
Para mais informações sobre integrações, acesse:
0 Comentários