|
FOROS PROFESIONALES WINDEV, WEBDEV y WINDEV Mobile |
| | | | | |
Inicio → WINDEV 25 → Exemplo Pix Banco do Brasil fornecido pelo Silvio Gontijo |
Exemplo Pix Banco do Brasil fornecido pelo Silvio Gontijo |
Iniciado por Boller, 03,sep. 2022 15:10 - 2 respuestas |
| |
| | | |
|
| |
Miembro registrado 3.659 mensajes Popularité : +175 (223 votes) |
|
Publicado el 03,septiembre 2022 - 15:10 |
PROCEDURE APIPIX_BB()
// HTTP Status code // 200-299 – A requisição foi recebida e executada com sucesso. // 400-499 - A requisição contém um erro de sintaxe ou formatação e não pode ser realizada. // 500-599 - O servidor possui um erro e não pode executar uma requisição aparentemente válida.
//HTTP Status Code mais utilizados são: // 200 OK // 201 Created // 400 Bad Request // 401 Unauthorized // 403 Forbidden // 404 Not Found // 405 Method Not Allowed // 429 Too Many Requests // 500 Internal Server Error // 503 Service Unavailable //-------------------------------------------------------------------------------------------------
//GERA TOKEN
conteudo is ANSI string = "grant_type=client_credentials&scope=cob.read cob.write pix.read pix.write"
solicitacao_http is restRequest
solicitacao_http..URL = "https://oauth.bb.com.br/oauth/token" solicitacao_http..Method = httpPost solicitacao_http..Header["Content-Type"] = "application/x-www-form-urlencoded" solicitacao_http..Header["Authorization"] = CADLOJA.PixBasicToken solicitacao_http..Content = conteudo
resposta_http is restResponse = RESTSend(solicitacao_http)
IF ErrorOccurred THEN Error(ErrorInfo(errFullDetails)) ELSE gRetornoJson = resposta_http..Content gsToken = gRetornoJson.access_token IF gsToken = "0" THEN erroToken is string = gRetornoJson.error_description Info("Erro na geração do Token!" + CR + "Motivo: " + erroToken) RETURN END END
gsToken = NoSpace(gsToken)
gsToken = Replace(gsToken,CR,"")
//CRIA COBRANCA
solicitacao_http..URL = "https://api.bb.com.br/pix/v1/cobqrcode/?gw-dev-app-key="+CADLOJA.PixDevAppKey
solicitacao_http..Method = httpPut solicitacao_http..Header["Content-Type"] = "application/json" solicitacao_http..Header["Authorization"] = "Bearer " + gsToken
sCNPJCPF is string = NoCharacter(CADCLI.CPF,"./- ",sscAll)
sNomeCli is string = CADCLI.Nome
IF sCNPJCPF = "99999999999" THEN sNomeCli = "" sCNPJCPF = "" END
sValor is string = NumToString(EDT_vlrLiquido, "6.2fS")
conteudo = StringBuild([ { "calendario": { "expiracao":36000 }, "devedor": { "cpf":"%1", "nome":"%2" }, "valor": { "original":"%3" }, "chave":"%4", "solicitacaoPagador":"Cobranca dos servicos prestados." } ],sCNPJCPF,sNomeCli,sValor,CADLOJA.PixChave)
solicitacao_http..Content = conteudo
resposta_http = RESTSend(solicitacao_http)
sTextoimagem is string
IF ErrorOccurred THEN Error(ErrorInfo(errFullDetails)) ELSE gRetornoJson = resposta_http..Content sTextoimagem = gRetornoJson.textoImagemQRcode IF sTextoimagem = "0" THEN msgerro is string = gRetornoJson.erros[1].mensagem Info("Erro na geração da cobrança!" + CR + "Motivo: " + msgerro) RETURN END BAC_Pix = sTextoimagem gsTxid = gRetornoJson.txid END
ImageLogo is Image ImageLogo = "\sgsis\segis\imagens\LogoSG.png"
MyBarCode is BarCode MyBarCode.Content = sTextoimagem MyBarCode.TypeBarCode = BC_QRCODE MyBarCode.Image = ImageLogo MyBarCode.CorrectionError = qrcodeLevelH MyBarCode.ImageProportion = 5
ImageBarCode is Image = BCToImage(MyBarCode,200,200)
IMG_Pix = ImageBarCode
// BAC_Pix..X = 387 // se quiser mostrar somente o QrCode // BAC_Pix..Y = 324
IMG_Pix..X = 398 // se quiser mostra o QrCode com Logo no meio IMG_Pix..Y = 323
// CONSULTA COBRANCA SC_AguardandoPix..X = 10 SC_AguardandoPix..Y = 330
gnCountTimer = 0 nCountMinutos is int minutostexto is int = 4 segundostexto is int = 60 STC_minutos = "Restando " + NumToString(minutostexto, "1d") + " minutos" + " e " + NumToString(segundostexto, "2d") + " segundos" IMG_Aguarda..Visible = True STC_Aguarda..Visible = True STC_minutos..Visible = True TimerSys(Consulta, 500, 1)
INTERNAL PROCEDURE Consulta gnCountTimer++ nCountMinutos ++ IF nCountMinutos = 12 THEN minutostexto -- segundostexto = 60 nCountMinutos = 0 ELSE segundostexto -= 5 END STC_minutos = "Restando " + NumToString(minutostexto, "1d") + " minutos" + " e " + NumToString(segundostexto, "2d") + " segundos" IF gnCountTimer = 60 THEN EndTimerSys(1) Info("Transação PIX Não Concluída!") SC_AguardandoPix..X = -553 IMG_Pix..X = -148 RETURN END gsToken = NoSpace(gsToken) gsToken = Replace(gsToken,CR,"") solicitacao_http..URL = "https://api.bb.com.br/pix/v1/cob/"+gsTxid+"?gw-dev-app-key="+CADLOJA.PixDevAppKey solicitacao_http..Method = httpGet solicitacao_http..Header["Authorization"] = "Bearer " + gsToken resposta_http = RESTSend(solicitacao_http) IF ErrorOccurred THEN Error(ErrorInfo(errFullDetails)) ELSE gRetornoJson = resposta_http..Content gsStatus = gRetornoJson.status IF gsStatus = "CONCLUIDA" THEN EndTimerSys(1) Info("PIX - CREDITADO com Sucesso !!!") SC_AguardandoPix..X = -553 IMG_Pix..X = -148 RETURN END END END
// Verificação de Recebimento -> gsStatus
// ATIVA: a cobrança está disponível, porém ainda não ocorreu pagamento;
// CONCLUIDA: a cobrança encontra-se paga. Não se pode alterar e nem remover uma cobrança cujo status esteja “CONCLUÍDA”;
// EM_PROCESSAMENTO: liquidação em processamento;
// NAO_REALIZADO: indica que a devolução não pode ser realizada em função de algum erro durante a liquidação, como por exemplo, saldo insuficiente.;
// DEVOLVIDO: cobrança com devolução realizada pelo Sistema de Pagamentos Instantâneos (SPI);
//REMOVIDA_PELO_USUARIO_RECEBEDOR: foi solicitada a remoção da cobrança; a critério do usuário;
//REMOVIDA_PELO_PSP: recebedor, por conta de algum critério, solicitou a remoção da cobrança.
//Adicionalmente ao status, a automação do usuário recebedor obterá acesso ao payload assinado que representa a cobrança, para fins de controle.
-- Adriano José Boller ______________________________________________ Consultor e Representante Oficial da PcSoft no Brasil +55 (41) 99949 1800 adrianoboller@gmail.com skype: adrianoboller http://wxinformatica.com.br/ |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 3.659 mensajes Popularité : +175 (223 votes) |
|
Publicado el 09,septiembre 2022 - 23:42 |
PROCEDURE APIPIX_Santander() // GERA TOKEN
conteudo is ANSI string = "client_id=" + CADLOJA.PixClientId + "&client_secret=" + CADLOJA.PixClientSecret solicitacao_http is restRequest solicitacao_http..URL = "https://trust-pix.santander.com.br/oauth/token?grant_type=client_credentials" solicitacao_http..Method = httpPost solicitacao_http..Header["Content-Type"] = "application/x-www-form-urlencoded" solicitacao_http..Content = conteudo solicitacao_http..ClientCertificate = CADLOJA.PixArqCert solicitacao_http..ClientCertificatePassword = CADLOJA.PixSenhaCert resposta_http is restResponse = RESTSend(solicitacao_http)
IF ErrorOccurred THEN Error(ErrorInfo(errFullDetails)) ELSE gRetornoJson = resposta_http..Content gsToken = gRetornoJson.access_token END
//GERA COBRANCA (PIX) gsToken = NoSpace(gsToken) gsToken = Replace(gsToken,CR,"")
solicitacao_http..URL = "https://trust-pix.santander.com.br/api/v1/cob/" + SysDateTime()+SysDateTime() solicitacao_http..Method = httpPut solicitacao_http..Header["Content-Type"] = "application/json" solicitacao_http..Header["Authorization"] = "Bearer " + gsToken
sCNPJCPF is string = CADLOJA.PixChave sValor is string = NumToString(EDT_Valor2, "6,2f") sValor = NoSpace(sValor)
conteudo = StringBuild([ { "calendario": { "expiracao": "3600" }, "valor": { "original": "%1" }, "chave": "%2", "solicitacaoPagador": "", "infoAdicionais": [] } ],sValor,CADLOJA.PixChave)
solicitacao_http..Content = conteudo
resposta_http = RESTSend(solicitacao_http)
IF ErrorOccurred THEN Error(ErrorInfo(errFullDetails)) ELSE gRetornoJson = resposta_http..Content spayload is ANSI string = gRetornoJson.location GeraPix_Dinamico(spayload) gsTxid = gRetornoJson.txid END
//CONSULTA COBRANCA
gnCountTimer = 0 nCountMinutos is int minutostexto is int = 4 segundostexto is int = 60 sPix is string IMG_Aguarda..Visible = True STC_Aguarda..Visible = True STC_minutos..Visible = True TimerSys(Consulta, 500, 1)
INTERNAL PROCEDURE Consulta gnCountTimer++ nCountMinutos ++ IF nCountMinutos = 12 THEN minutostexto -- segundostexto = 60 nCountMinutos = 0 ELSE segundostexto -= 5 END STC_minutos = "Restando " + NumToString(minutostexto, "1d") + " minutos" + " e " + NumToString(segundostexto, "2d") + " segundos" IF gnCountTimer = 60 THEN EndTimerSys(1) IMG_Aguarda..Visible = False STC_Aguarda..Visible = False STC_minutos..Visible = False gbTransacaoOk = 0 Close(WIN_PIX) END gsToken = NoSpace(gsToken) gsToken = Replace(gsToken,CR,"") solicitacao_http..URL = "https://trust-pix.santander.com.br/api/v1/cob/" + gsTxid solicitacao_http..Method = httpGet solicitacao_http..Header["Authorization"] = "Bearer " + gsToken resposta_http = RESTSend(solicitacao_http) IF ErrorOccurred THEN Error(ErrorInfo(errFullDetails)) ELSE gRetornoJson = resposta_http..Content gsStatus = gRetornoJson.status sPix = gRetornoJson.pix[1] IF gsStatus = "CONCLUIDA" AND sPix <> "" THEN EndTimerSys(1) gbTransacaoOk = 1 Close(WIN_PIX) END END END
Santander:
1- Obter as chaves de acesso Client ID e Client Secret (criar o aplicativo API PIX de cada cliente via site developers do banco).
2 - Instalar o certificado digital do cliente.
2- Exportar esse certificado pra dentro do diretório de execução do sistema (Via Painel de Controle -> Opções de Internet -> Conteudo -> Certificados).
Na exportação selecionar "Sim exportar chave privada" na primeira tela. Na segunda tela selecionar "Exportar todas as propriedades estendidas" além das que ja estão marcadas.
Esse certificado eh o mesmo que emite NFe
solicitacao_http..ClientCertificate = CADLOJA.PixArqCert
"https://trust-pix.santander.com.br/api/v1/cob/" + SysDateTime()+SysDateTime()
aqui os 2 sysdatetime eu so usei pra criar o txid, mas pode ser qualquer coisa entre 26 e 35 caracteres
-- Adriano José Boller ______________________________________________ Consultor e Representante Oficial da PcSoft no Brasil +55 (41) 99949 1800 adrianoboller@gmail.com skype: adrianoboller http://wxinformatica.com.br/ |
| |
| |
| | | |
|
| | |
| |
Publicado el 25,abril 2024 - 23:37 |
Boa Noite
Estou tentando fazer a verificação do PIX em VB.net e não estou conseguindo. Já consegui gerar o Token, mas verificar os PIXs do dia não tem jeito, alguém consegue me dar um auxílio nesta questão?
Aguardo |
| |
| |
| | | |
|
| | | | |
| | |
| | |
| |
|
|
|