Clipper On Line • Ver Tópico - Integração com CRM SALESFORCE

Integração com CRM SALESFORCE

Discussão sobre outras linguagens de programação.

Moderador: Moderadores

 

Integração com CRM SALESFORCE

Mensagempor gilbertosilverio » 21 Set 2021 08:17

Olá amigos,

Alguém já desenvolveu alguma rotina para comunicação com o CRM SALESFORCE em harbour.

O Pessoal que cuida do site da empresa, me ajudou fazendo essa integração via PHP, criou uma base em SQL onde pego as informações, mais ficar na dependência de terceiros e Phroide...

Os parâmetros que me passaram para a integração da SALESFORCE:


Segue as informações referente aos dados para autenticação dos serviços em homologação.

URL Token: https://sulamerica--uat.cs169.my.salesforce.com/services/oauth2/token
URL Serviços: https://sulamerica--uat.cs169.my.salesforce.com/services/apexrest/Operação a ser realizada

Client Id: 3MVG9gI0ielx8zHLKXlEe15aGYu...
Client Secret: FBF87CE185F447BFC6A43D...
Refresh Token: 5Aep8617ibabXvwzmlWrC...

Por favor apontar os serviços da documentação encaminhada em homologação para cs169.

Métodos:
/apexrest/EDITAR_REMESSA/
/apexrest/DETALHAR_REMESSA/
/apexrest/CANCELAR_REMESSA/
/apexrest/LISTAR_REMESSAS/



Descrição
Os serviços disponibilizados pela SulAmérica permitem que os fornecedores tenham acesso a
algumas funcionalidades da comunidade via integração conforme descrito abaixo.
Editar Remessa
Permite a edição das remessas criadas no salesforce.
Detalhar Remessa
Detalha a remessa completa, com suas respectivas Solicitações e Prescrições.
Cancelar Remessa
Cancela a remessa de acordo com os os motivos já pré estabelecidos.
Listar Remessa
Lista todas as remessas criadas para aquele CNPJ e suas respectivas filiais.
Esses serviços deverão receber como parâmetros algumas informações que serão utilizadas
para para consulta e edição das remessas criadas.
1- Todas as chamadas serão realizadas via POST. na seguinte ordem:
1.1 - Chamada do token de autenticação.
1.2 - Chamada do serviço.
2- Todos do tipo application/json;charset=UTF-8
3- Descrição dos serviços.
Obs.:
Todos os campos, apenas textos ou textos e números são do tipo String.
Todos os campos apenas números são do tipo INT.
Todos os campos de datas são do tipo DATE.
3.1 Editar Remessa
Endpoint:https://sulamerica--DevMedprd.cs19.my.salesforce.com/services/apexrest/EditarRem
essa/
Body Exemplo:{"uf": "SP",
"quantDeMedicamentosSerEntregue": 5,
"numeroDoPedido": "92375888",
"numeroDoEndereco": "62",
"numeroDaNotaFiscal": "981274895",
"numeroDaCiv": "25326326326",
"logradouro": "Rua Savietto",
"etapaDaEntrega": "Pedido a caminho",
"email": "guilherme.galdino@hotmail.com",


Ja fiquei horas com o suporte deles, mais eles não tem nem noção do que e Harbour, e nem eu... kkkk

Caso alguém possa me dar um norte de como fazer via "MSXML2.ServerXMLHTTP" montando o script de como me comunicar e capturar essas informações, para eu que possa fazer tudo direto no Harbour.

Tentei também com SoaupUI, mais infelizmente não consegui definir onde vai todos os parâmetros...

Agradeço qualquer ajuda.
gilbertosilverio
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 314
Data de registro: 18 Jan 2009 09:39
Cidade/Estado: Ribeirao Pires - SP
Curtiu: 0 vez
Mens.Curtidas: 20 vezes

Integração com CRM SALESFORCE

Mensagempor gilbertosilverio » 21 Set 2021 11:46

Ola Amigos,

Baseado em exemplos aqui do forum, consegui chegar ate aqui:

   private cURL           := [https://sulamerica--devmedprd.cs19.my.salesforce.com/services/apexrest/LISTAR_REMESSAS/]
   private Client_Id     := [3MVG9gI0ielx8zHLKXlEe15aGYuML...]
   private Senha          := [Client Secret FBF87CE185F447BFC....]
   private Token          := [Refresh Token lWrClw0eQBP4774Ji9QJ7fBUVd_S8_eaqvyApNesmJJQ9d7Ocot.pJC2cUG3N_OERF8Tvi]
   private _pagina       := "1"

      oServer := win_OleCreateObject( "MSXML2.SERVERXMLHTTP.6.0" )

      oServer:Open( "POST", cUrl, .F. )

      oServer:SetRequestHeader( "Accept-Encoding", [gzip,deflate])
      oServer:SetRequestHeader( "Host",            [https://sulamerica--devmedprd.cs19.my.salesforce.com] )
      oServer:SetRequestHeader( "Connection",      [Keep-Alive])
      oServer:SetRequestHeader( "Content-Type",    [application/json; charset=utf-8] )
      oServer:SetRequestHeader( "Authorization",   Senha )
      oServer:SetRequestHeader( "Token",           Token )
      oServer:SetRequestHeader( "ResponseType",    [application/json; charset=utf-8] )

      oServer:send("")

      oServer:WaitForResponse( 50000 )

      hwg_msginfo([1 ]+str(oServer:readyState))
      hwg_msginfo([2 ]+str(oServer:Status))
      hwg_msginfo([3 ]+oServer:StatusText)

      cRetorno := oServer:responseBody
      hwg_msginfo(VALTYPE(cRETORNO) )

      cRetorno := oServer:responseXML
      hwg_msginfo(VALTYPE(cRETORNO))

      cRetorno := oServer:responseText

      hwg_msginfo(VALTYPE(cRETORNO) +[ ]+ str(len(cRETORNO)))

      IF ValType( cRetorno ) != "C"
         hwg_msginfo(cRETORNO)
         cRetorno := ""
      ELSE
         cRetorno:=cRetorno + [ readyState = ]+CRLF+str(oServer:readyState)+CRLF +[  Status=] +str(oServer:Status)
       //hwg_msginfo(cRETORNO)
         HB_MemoWrit( ArquivoXml, hb_UTF8ToStr(cRETORNO, 'PTISO') )
      ENDIF



o Retorno que obtive foi esse:


readyState =      4

Status=       401

[{"message":"INVALID_HEADER_TYPE","errorCode":"INVALID_AUTH_HEADER"}]



Minha duvida e onde e como defino estes parâmetros que me passaram;

    Client Id: 3MVG9gI0ielx8zHLKXlEe15aGYu...
    Client Secret: FBF87CE185F447BFC6A43D...
    Refresh Token: 5Aep8617ibabXvwzmlWrC...


Pelo que entendi e em SetRequestHeader, mais como devo definir.

Se alguém puder me auxiliar, agradeço.
gilbertosilverio
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 314
Data de registro: 18 Jan 2009 09:39
Cidade/Estado: Ribeirao Pires - SP
Curtiu: 0 vez
Mens.Curtidas: 20 vezes

Integração com CRM SALESFORCE

Mensagempor gilbertosilverio » 28 Set 2021 11:28

Ola amigos,

Alguém pode dar uma olhada onde estou errando, pois não consigo ter retorno, sendo que no SoapUI funciona, mais não consigo fazer funcionar.

1) Consegui pegar o token, mais não consigo listar o arquivo json de retorno, a rotina que montei e essa:

   // retorno do token para usar com Bearer = a01
   HB_MemoWrit( ArquivoXml, a01 )
   LISTAR_REMESSAS(@A01)
RETURN NIL
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
FUNCTION LISTAR_REMESSAS()
   Private CC2, A02, cTXT
   PRIVATE vPesq := CURDRIVE()+[:\]+CURDIR()+"\TESTE.JSON"
   Private cUrl  :=  "https://sulamerica--uat.my.salesforce.com/services/apexrest/LISTAR_REMESSAS/"
   Private cUrl1 :=  "https://sulamerica--uat.my.salesforce.com/"
   Private ArqXml := [C:\BIONEXO\lista_]+SUBSTR(TIME(),1,2)+[_]+SUBSTR(TIME(),4,2)+[_]+SUBSTR(TIME(),7,2)+[.txt]

   oHttps:= win_OleCreateObject( "MSXML2.SERVERXMLHTTP.6.0" )

   oHttps:Open( "POST" , cURL, .t. )

   oHttps:SetRequestHeader( "Accept-Encoding",  "gzip, deflate" )
   oHttps:SetRequestHeader( "Authorization",    "Bearer "+A01 )
   oHttps:SetRequestHeader( "Host",             cUrl1 )
   oHttps:SetRequestHeader( "Content-Type",     "application/json" )
   oHttps:SetRequestHeader( "Content-Length",   "207" )
   oHttps:SetRequestHeader( "Connection",       "Keep-Alive" )
   oHttps:SetRequestHeader( "User-Agent",       "Apache-HttpClient/4.5.5 (Java/12.0.1)" )

   oHttps:send('vPESQ') // arquivo json

   oHttps:WaitForResponse( 50000 )

   hwg_msginfo([1 ]+str(oHttps:readyState))   // 4
   hwg_msginfo([2 ]+str(oHttps:Status ))          // 200 
   hwg_msginfo([3 ]+oHttps:StatusText)          //  ok

   cc2:= oHttps:ResponseText



O Retorno usando "MSXML2.SERVERXMLHTTP.6.0"

[
   {
      "errorCode": "APEX_ERROR",
      "message": "System.JSONException: Unexpected character ('v' (code 118)): expected a valid value (number, String, array, object, 'true', 'false' or 'null') at input location [1,2]\n\nClass.System.JSON.deserialize: line 15, column 1\nClass.ListarRemessaRest.carregarDados: line 10, column 1"
   }
]


O pior e que SoapUI funciona direitinho kkkkkkkkkkkkk

Agradeço a ajuda.
Anexos
t2.png
t1.png
gilbertosilverio
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 314
Data de registro: 18 Jan 2009 09:39
Cidade/Estado: Ribeirao Pires - SP
Curtiu: 0 vez
Mens.Curtidas: 20 vezes

Integração com CRM SALESFORCE

Mensagempor gilbertosilverio » 28 Set 2021 15:31

Ola Amigos,

Resolvido, método usado, tentativa/erro... kkkkk

1) A mensagem de erro era por que estava montando json errado...

2) Não pode incluir todos os headers que aparecem no SoapUI, creio que cada server tem seus parametros.

   Private cUrl  :=  "https://sulamerica--uat.my.salesforce.com/services/apexrest/LISTAR_REMESSAS/"
   Private cUrl1 :=  "//sulamerica--uat.my.salesforce.com/"

   Private ArqXml := [C:\teste\lista_]+SUBSTR(TIME(),1,2)+[_]+SUBSTR(TIME(),4,2)+[_]+SUBSTR(TIME(),7,2)+[.txt]

   oHttps:= win_OleCreateObject( "MSXML2.SERVERXMLHTTP.6.0" )

   oHttps:Open( "POST" , cURL, .f. )

   oHttps:SetRequestHeader( "Authorization",    "Bearer "+A01 )
   oHttps:SetRequestHeader( "Host",             cUrl1 )
   oHttps:SetRequestHeader( "Content-Type",     "application/json;charset=UTF-8" )
   oHttps:SetRequestHeader( "Content-Length",   "207" )
   oHttps:SetRequestHeader( "Connection",       "Keep-Alive" )
   oHttps:SetRequestHeader( "User-Agent",       "Apache-HttpClient/4.5.5 (Java/12.0.1)" )

   oHttps:SetRequestHeader( "Transfer-Encoding", "chunked" )

   oHttps:send(' {"qtdePorPagina":"2000","nomeSegurado":"MARCIA "Carteirinha":"","distribuidor":"11","dataDeCriacaoDaRemessa":"","ultimoId":"","etapaDaEntrega":"Pendente"} ')

   oHttps:WaitForResponse( 50000 )



Para caso alguém precise.
gilbertosilverio
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 314
Data de registro: 18 Jan 2009 09:39
Cidade/Estado: Ribeirao Pires - SP
Curtiu: 0 vez
Mens.Curtidas: 20 vezes




Retornar para Outras linguagens de programação

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 1 visitante


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro