Hoje vou mostrar como buscar informações de pessoas físicas e jurídicas no Protheus vindas da Sophus.
A Sophus é uma empresa de tecnologia, e eles tem uma ferramenta sensacional que traz inúmeras informações de pessoas físicas e pessoas jurídicas.
Tem até informação de score, se é recomendável a venda, de protestos, etc. Tanto que algumas associações como ACISA e ACICAP utilizam.
Para fazer a integração, primeiro é necessário ter um cadastro em alguma associação, e assim ter um login e senha. A documentação da integração, pode ser baixada em http://www.sophus.com.br/downloads/Sockets.rar
Nos testes que fiz, a consulta de pessoa física, usamos o código de consulta 309, já se for pessoa jurídica o código de consulta usado foi o 621.
A consulta via AdvPL é montada um XML de filtro, e enviado um HttpPost. Se tudo der certo, é retornado um XML, e com esse resultado você consegue dar o seu XMLParser e tratar a informação.
Abaixo um exemplo da consulta (a função criada recebe um código de cpf/cnpj no parâmetro):
//Bibliotecas #Include "Totvs.ch" /*/{Protheus.doc} User Function ASOPM01 Função que retorna o XML de consulta no Sophus @type Function @author Atilio @since 17/10/2020 @version version @see http://www.sophus.com.br/downloads/Sockets.rar @obs no exemplo abaixo, se vier CNPJ irá tratar com a consulta 621, se vier CPF irá tratar com a consulta 309 /*/ User Function ASOPM01(cCGC) Local aArea := GetArea() Local cSendXML := '' Local cResultXML := '' Local cVersao := '20090415' Local cCodigo := 'Informar seu Codigo aqui' Local cSenhaXML := 'Informar sua Senha aqui' Local cTipo := '' Local cCNPJ := '' Local cCPF := '' Default cCGC := '' //Somente fará as tratativas se tiver vindo CGC (CNPJ ou CPF) If ! Empty(cCGC) //Faz a tratativa se for CNPJ ou CPF cCGC := Alltrim(cCGC) cCGC := StrTran(cCGC, '-', '') cCGC := StrTran(cCGC, '.', '') cCGC := StrTran(cCGC, '/', '') If Len(cCGC) > 11 cTipo := '621' cCNPJ := cCGC Else cTipo := '309' cCPF := cCGC EndIf //Monta o envio do XML para a Sophus cSendXML := '<?xml version="1.0" encoding="UTF-8"?>' cSendXML += '<SPCA-XML xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://www.scpc.inf.br/spcn/spcaxml.xsd">' cSendXML += ' <VERSAO>' + cVersao + '</VERSAO>' cSendXML += ' <SOLICITACAO>' cSendXML += ' <S-CODIGO>' + cCodigo + '</S-CODIGO>' cSendXML += ' <S-SENHA>' + cSenhaXML + '</S-SENHA>' cSendXML += ' <S-CONSULTA>' + cTipo + '</S-CONSULTA>' If cTipo == '309' cSendXML += ' <S-CPF>' + cCPF + '</S-CPF>' ElseIf cTipo == '621' cSendXML += ' <S-CNPJ>' + cCNPJ + '</S-CNPJ>' EndIf cSendXML += ' <S-NOME></S-NOME>' cSendXML += ' <S-RAZAO-SOCIAL></S-RAZAO-SOCIAL>' cSendXML += ' <S-DDD-1></S-DDD-1>' cSendXML += ' <S-TELEFONE-1></S-TELEFONE-1>' cSendXML += ' <S-DDD-2></S-DDD-2>' cSendXML += ' <S-TELEFONE-2></S-TELEFONE-2>' cSendXML += ' <S-CEP></S-CEP>' cSendXML += ' <S-NASCIMENTO></S-NASCIMENTO>' cSendXML += ' <S-RG></S-RG>' cSendXML += ' <S-UFRG></S-UFRG>' cSendXML += ' <S-UF-DATA></S-UF-DATA>' cSendXML += ' <S-TIPO-CREDITO>XX</S-TIPO-CREDITO>' cSendXML += ' <S-NUMERO-RESPOSTA>0</S-NUMERO-RESPOSTA>' cSendXML += ' </SOLICITACAO>' cSendXML += '</SPCA-XML>' //Envia o XML, e se tudo der certo, armazena na variável cResultXML cResultXML := HttpPost('https://www.scpc.inf.br/cgi-bin/spcaxml',; // cURL ,; // cGetParms cSendXML,; // cPostParms ,; // nTimeOut ,; // aHeadStr ) // @cHeaderGet EndIf RestArea(aArea) Return cResultXML
Bom pessoal, por hoje é só.
Abraços e até a próxima.