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 := ''
cSendXML += ''
cSendXML += ' ' + cVersao + ' '
cSendXML += ' '
cSendXML += ' ' + cCodigo + ' '
cSendXML += ' ' + cSenhaXML + ' '
cSendXML += ' ' + cTipo + ' '
If cTipo == '309'
cSendXML += ' ' + cCPF + ' '
ElseIf cTipo == '621'
cSendXML += ' ' + cCNPJ + ' '
EndIf
cSendXML += ' '
cSendXML += ' '
cSendXML += ' '
cSendXML += ' '
cSendXML += ' '
cSendXML += ' '
cSendXML += ' '
cSendXML += ' '
cSendXML += ' '
cSendXML += ' '
cSendXML += ' '
cSendXML += ' XX '
cSendXML += ' 0 '
cSendXML += ' '
cSendXML += ' '
//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.