sexta-feira, 26 de agosto de 2022

Video 3787 - Windev 27 e Windev22 - Pix





Video




Blog 







Help




Ola.. vou mostrar o codigo
para gerar qr-code Pix




Video 3787 - Windev 27 e Windev22  - Pix





===================== codigo
// gerar pix
valor is currency=EDT_valor
sChave_pix_26 is string=EDT_chave_pix_26
sIdentificacao_59 is string=EDT_IDENTIFICACAO_59
sCidade_60 is string=EDT_Cidade_60

EDT_pix_linha=codigo_pix(valor,sChave_pix_26,sIdentificacao_59,sCidade_60)
ToClipboard(EDT_pix_linha)

===============
//PROCEDURE codigo_pix(cy_valor is currency=0,s_chave_pix_26_01 is string="", ...
                      s_identificacao_59 is string="",
                      s_cidade_60 is string = "")
                      
// exemplo do paulo viana
// silvio/willian e amigos
s_pix_linha is string = ""
IF cy_valor <= 0 THEN
Info("Informe Um Valor Válido")
ReturnToCapture(EDT_valor)
ELSE
sRandomString is string // Gera a string aleatória
LOOP (25)
nCharacter is int = Random(65,122) // Gera um número aleatoriamente
//                                     no intervalo 65-122 (A-z)
WHILE (91 <= nCharacter <= 96) // Não pegue os caracteres 
//                                incluídos entre 91 e 96
nCharacter = Random(65,122)
END
sRandomString += Charact(nCharacter)// Preenche a cadeia
END
sDoc_randomico is string = sRandomString// "Cli000019Bol000721"
sMsg is string = "05" + NumToString( Length( NoSpace( Left( NoSpace(sDoc_randomico),21))),"02d") + Left(NoSpace(sDoc_randomico),21)
grupo_26 is string = "0014br.gov.bcb.pix" //00-id 14-tamanho do br.gov.bcb.pix
tamanho_grupo_26_inicial is int = Length(grupo_26)
grupo_26+="01"
Tamanho_Chave_pix is int = Length(s_chave_pix_26_01) // 11
Tamanho_Chave_pix+=Length(Tamanho_Chave_pix) // somando tambem o tamanho da chave
tamanho_grupo_26 is int=tamanho_grupo_26_inicial+Tamanho_Chave_pix
tamanho_grupo_26+=Length(tamanho_grupo_26)
grupo_26+=NumToString( Length( NoSpace( s_chave_pix_26_01 )),"02d")  
grupo_26+=NoSpace( s_chave_pix_26_01 )
s_pix_linha = "000201" //Inicio do código para gerar o Qr-Code
s_pix_linha += "26" + NumToString(tamanho_grupo_26,"02d") + grupo_26
s_pix_linha += "52040000" 
s_pix_linha += "5303986" 
s_pix_linha += "54" + NumToString( Length( NoSpace( NumToString(cy_valor,"10.2f"))),"02d") ...
                      + NoSpace(NumToString(cy_valor,"10.2f"))
s_pix_linha += "5802BR"
s_pix_linha += "59" + NumToString( Length( NoSpace( s_identificacao_59 )),"02d") + ... 
                      NoSpace( s_identificacao_59 )
s_pix_linha += "60" + NumToString( Length( Left (NoSpace( s_cidade_60),15)),"02d") + ... 
                      NoSpace( Left( s_cidade_60,15))
//sString += "61" + NumToString(Length(NoSpace(sCEP)))
s_pix_linha += "62" + NumToString( Length( sMsg), "02d" ) + sMsg
s_pix_linha += "6304"
s_pix_linha = Rot_Pix(s_pix_linha)
BCOD_pix.Value = s_pix_linha
ImageQRCodeCenter is Image
ImageQRCodeCenter = IMG_logo
Meu_Codigo_Barra is BarCode
Meu_Codigo_Barra.Content =  s_pix_linha
Meu_Codigo_Barra.TypeBarCode = BC_QRCODE
Meu_Codigo_Barra.Image = ImageQRCodeCenter
Meu_Codigo_Barra.CorrectionError = qrcodeLevelH
Meu_Codigo_Barra.ImageProportion = 3
ImageBarCode is Image = BCToImage(Meu_Codigo_Barra,200,200)
IMG_Pix = ImageBarCode
END 

RESULT s_pix_linha


INTERNAL PROCEDURE rot_pix(chave)
meuvalor is string = chave
nTamanho is int = Length(meuvalor)
nPoly is 2-byte unsigned int = 0x1021
Wcrc is 2-byte unsigned int = 0xFFFF
FOR i=1 _TO_ Length(meuvalor)
Wcrc = BinaryXOR(Wcrc, Asc(meuvalor[[i]]) bitLeftShift 8)
FOR j = 0 TO 7
IF (Wcrc & 0x8000) THEN
Wcrc=(Wcrc bitLeftShift 1) || 0x1021
ELSE
Wcrc=Wcrc bitLeftShift 1
END
END
END
RESULT(chave+IntToHexa(Wcrc)[[5 TO ]]) 
END


//sCEP is string = EDT_Cep // "66625410"




Video estreia dia 26/08/2022


Menu dos videos webdev windev mobile


Teste

Teste
teste