Post: [PicPay com Delphi] Implementando o recebimento do retorno do PicPay

Alessandro Medeiros

Fala ai Radizeiro e Radizera, tudo bem com vocês?

Cada post estamos evoluindo nosso exemplo de comunicação com o PicPay.

E no post de hoje não poderia ser diferente.

Hoje iremos implementar o retorno vindo do PicPay para a nossa aplicação Delphi.

Já temos nossa comunicação com o REDIS.

O que tem de diferente com o exemplo que mostramos no post anterior apenas apontando para um servidor na aws.

O Redis que está hospedado na aws.

E para quando acontecer essa ação de pagamento seja tratado dentro de um método.

TEventReturn = procedure (Channel, message : String) of Object;
...
procedure onStatusPayment(Channel, message : String);
...
procedure TForm2.onStatusPayment(Channel, message : String);
begin
if message = 'paid' then
begin
Rectangle1.Fill.Color := TAlphaColor($FF008000);
Label1.Text := 'Pagamento realizado com Sucesso';
end
else
begin
Rectangle1.Fill.Color := TAlphaColor($FFff0000);
Label1.Text := 'Erro ao Realizar o Pagamento ' + message;
end;
end;

Observe que este método possui a mesma assinatura do nosso evento que criamos anteriormente.

Dentro do onStatusPayment, onde recebe uma mensagem, e essa mensagem seja paid, ou seja, que foi pago.

Quando fizermos uma requisição ao PicPay, onde passamos o Json, e pegando o QRCode, isso tudo dentro do botão onde fazemos a chamada.

Com isso, logo após exibir o QRCode na tela iremos nos registrar em uma fila no Redis.

procedure TForm2.Button1Click(Sender: TObject);
var
JsonPicPay: TJsonObject;
begin
JsonPicPay := TJsonObject.Create;
try
JsonPicPay
.AddPair('referenceId', edtReferenceId.Text)
.AddPair('productName', edtproductName.Text)
.AddPair('value', TJSONNumber.Create(StrToFloat(edtvalue.Text)))
.AddPair('firstName', edtfirstName.Text)
.AddPair('lastName', edtlastName.Text)
.AddPair('document', edtdocument.Text)
.AddPair('email', edtemail.Text)
.AddPair('phone', edtphone.Text);
RESTRequest1.Body.ClearBody;
RESTRequest1.Body.Add(JsonPicPay.ToJSON, ctAPPLICATION_JSON);
RESTRequest1.Execute;
try
BitmapFromBase64(FDMemTable1.FieldByName('qrcodeBase64').AsString);
RegistryAction(edtReferenceId.Text, onStatusPayment);
except
ShowMessage(FDMemTable1.FieldByName('error').AsString);
end;
finally
JsonPicPay.Free;
end;
end;

Isso dentro do botão de solicitação de pagamento.

Onde você pode observar que passamos o JSON, e logo após pegamos o QRCode, e automaticamente, após exibir o QRCOde na tela, já me registro em uma fila.

Iremos nos registrar no Redis que está na amazon, para que quando o pagamento acontecer esse servidor nos avise.

Para isso foi acrescentado o RegistryAction, pegando o id do pagamento.

Estamos aguardando somente o retorno desse pagamento, mas esse é somente desse pagamento, por exemplo, de um PDV específico.

Pois em outros PDVs que estiverem fazendo a requisição estará aguardando em outras filas.

E nesse código acima irei registrar em uma fila específica.

E quem trata quando chega esse retorno é o método anônimo onStatusPayment.

E nosso client só precisa disso e mais nada para que possa realizar as requisições para o PicPay.

E agora eu preciso fazer com que o nosso servidor horse possa se comunicar com o Redis, para que ele possa avisar a fila.

Dentro do endpoint picpaycallback iremos acrescentar as variáveis para trabalhar com o Redis e implementar essa comunicação.

App.Post('/picpaycallback',
procedure(Req: THorseRequest; Res: THorseResponse; Next: TProc)
var
...
_redis: IRedisClient;
begin
...
_redis := NewRedisClient();
_redis.PUBLISH(_ReferenceId, _Status);
...
end;

Simplesmente acrescentei as requisições para comunicação com o Redis e pronto, nosso servidor já está pronto.

Não foi preciso acrescentar IP do servidor pois o servidor esta sendo executado no mesmo local que o Redis.

E logo em seguida estou informando para o Redis que ele irá fazer uma publicação, na fila que é o ID do pagamento.

Com isso já temos nossa aplicação realizando a comunicação com o PicPay, registrando em uma fila com o redis.

De forma simples e prática você tem uma nova funcionalidade dentro do seu software.

Se quiser conhecer mais a fundo como aplicar o PicPay em suas aplicações Delphi, basta entrar no CLUBE DOS PROGRAMADORES DELPHI.

Dentro do CLUBE DOS PROGRAMADORES DELPHI você terá esse e muitos outros módulos que podem lhe ajudar a alavancar sua carreira como desenvolvedor, e claro, poder aplicar inovações dentro dos seus softwares.

E caso você tenha interesse de conhecer mais sobre PicPay com Delphi acessa o nosso portal do CLUBE DE PROGRAMADORES EM DELPHI, onde você não terá só conteúdos relacionados ao PicPay, mas uma quantidade enorme de conteúdos que poderá lhe ajudar muito no seu dia a dia, é uma verdadeira NETFLIX para os programadores Delphi.

CLIQUE AQUI E SAIBA MAIS SOBRE O CLUBE DOS PROGRAMADORES DELPHI


Faça sua busca

CATEGORIAS

POSTS RECENTES

E caso você tem interesse de conhecer mais sobre [PicPay com Delphi] Implementando o recebimento do retorno do PicPay, acesse o nosso portal do CLUBE DE PROGRAMADORES EM DELPHI
Você não terá só conteúdos relacionados ao [PicPay com Delphi] Implementando o recebimento do retorno do PicPay, mas uma quantidade enorme de conteúdos que poderá lhe ajudar muito no seu dia a dia, é uma verdadeira NETFLIX para os programadores Delphi.
Gostou?
Compartilhe:

Embarque no foguete com milhares de devs para aprender desenvolvimento, evoluir de forma contínua e se manter relevante no mercado.

Sobre
Dúvidas
Cadastre-se em nossa lista

Para ter acesso em primeira mão, a tudo que acontece na Academia do Código, basta se cadastrar em nossa lista

Grupo Thulio Bittencourt | Academia do Código

#FaçaPartedaHistória

Copyright © 2022 – Todos os direitos reservados