Ir para conteúdo
  • Cadastre-se

dev botao

  • Este tópico foi criado há 163 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado

Prezados, 

Alguém poderia me ajudar no retorno quando é efetuado pagamento da LIO, como se obtém os campos:

  • O  campo brand que está dentro de payments no momento do retorno, e
  • O campo  primaryProductName que está dentro de paymentFields que por sua vez está dentro de payments?

Estou a dias procurando uma forma de recuperar esses dados e não encontrei nada que se aproximasse do que eu preciso.

Agradeço a ajuda.

  • 2 semanas depois ...
Postado
Em 15/05/2023 at 08:32, Eliezer disse:

Prezados, 

Alguém poderia me ajudar no retorno quando é efetuado pagamento da LIO, como se obtém os campos:

  • O  campo brand que está dentro de payments no momento do retorno, e
  • O campo  primaryProductName que está dentro de paymentFields que por sua vez está dentro de payments?

Estou a dias procurando uma forma de recuperar esses dados e não encontrei nada que se aproximasse do que eu preciso.

Agradeço a ajuda.

Essa é uma solução que consegui chegar. Se alguém precisar segue o código.

 

procedure TMyPaymentListener.onPayment(P1: JOrder);
Var Txt      : String;
    Detalhes : String;
    I        : Integer;
    Order    : JOrder;
    PgTO     : JPayment;
begin
     // Vai retornar os campos fora de Payments
     Txt := '[(getId) ' + JStringToString(P1.getId) + '] ' +
            '[(getNotes) ' + JStringToString(P1.getNotes) + '] ' +
            '[(getNumber) ' + JStringToString(P1.getNumber) + '] ' +
            '[(paidAmount) ' + P1.paidAmount.toString + '] ' +
            '[(getPrice) ' + P1.getPrice.toString + '] ' +
            '[(getReference) ' + JStringToString(P1.getReference) + '] ' +
            '[(getStatus) ' + JStringToString(P1.getStatus.toString) + '] ' +
            '[(getType.identifier) ' + JStringToString(P1.getType.identifier) + '] ' ;

     //
     // Pega os campos dentro de Payments
     Order := P1;
     Order.markAsPaid();
     OrderManager.updateOrder(Order);
     PgTO := TJPayment.Wrap(Order.getPayments.get(0));
     //
     // Campos de Payments
     Txt := Txt + ' [Marca =' + JStringToString(PgTO.getBrand) + '] ';
     Txt := Txt + ' [Terminal =' + JStringToString(PgTO.getTerminal) + '] ';
     Txt := Txt + ' [CodAutorizacao =' + JStringToString(PgTO.getAuthCode) + '] ';
     Txt := Txt + ' [NSU =' + JStringToString(PgTO.getCieloCode) + '] ';
     //
     // Retorna o JSon de PaymentsFields
     Detalhes := JStringToString(PgTO.getPaymentFields.toString);
     //
     // Daqui em diante é só dar continuidade´adaptando o que precisar.
end;

  • Curtir 1
  • Obrigado 1
  • 1 mês depois ...
Postado
Em 26/05/2023 at 17:39, Eliezer disse:

Essa é uma solução que consegui chegar. Se alguém precisar segue o código.

 

procedure TMyPaymentListener.onPayment(P1: JOrder);
Var Txt      : String;
    Detalhes : String;
    I        : Integer;
    Order    : JOrder;
    PgTO     : JPayment;
begin
     // Vai retornar os campos fora de Payments
     Txt := '[(getId) ' + JStringToString(P1.getId) + '] ' +
            '[(getNotes) ' + JStringToString(P1.getNotes) + '] ' +
            '[(getNumber) ' + JStringToString(P1.getNumber) + '] ' +
            '[(paidAmount) ' + P1.paidAmount.toString + '] ' +
            '[(getPrice) ' + P1.getPrice.toString + '] ' +
            '[(getReference) ' + JStringToString(P1.getReference) + '] ' +
            '[(getStatus) ' + JStringToString(P1.getStatus.toString) + '] ' +
            '[(getType.identifier) ' + JStringToString(P1.getType.identifier) + '] ' ;

     //
     // Pega os campos dentro de Payments
     Order := P1;
     Order.markAsPaid();
     OrderManager.updateOrder(Order);
     PgTO := TJPayment.Wrap(Order.getPayments.get(0));
     //
     // Campos de Payments
     Txt := Txt + ' [Marca =' + JStringToString(PgTO.getBrand) + '] ';
     Txt := Txt + ' [Terminal =' + JStringToString(PgTO.getTerminal) + '] ';
     Txt := Txt + ' [CodAutorizacao =' + JStringToString(PgTO.getAuthCode) + '] ';
     Txt := Txt + ' [NSU =' + JStringToString(PgTO.getCieloCode) + '] ';
     //
     // Retorna o JSon de PaymentsFields
     Detalhes := JStringToString(PgTO.getPaymentFields.toString);
     //
     // Daqui em diante é só dar continuidade´adaptando o que precisar.
end;

Bom dia 

Alguém já conseguiu portar essa solução para Lazarus+LAMW ?

  • 2 meses depois ...
Postado
Em 17/11/2022 at 14:51, djinfope disse:

Blz, muito obrigado por suas contribuições aqui, me ajudaram muito. não sei se você consegue pegar o nome da bandeira no seu projeto, aqui quando tento o app trava, para pegar a bandeira e nsu que estão em uma subclasse.

Olá, tem o modelo de implementação da impressão? não conseguir aqui.

Postado

@gabriel_mororo, eu descontinuei esse projeto em Delphi devido a limitações de leitura NFC e acesso a câmera do dispositivo com a nova versão do SDK e fomos para flutter, no github (Cielo Developers (github.com)) onde possui os exemplos com integração hibrida as para as demais função fizemos nativa em flutter. Para impressão em Delphi sugiro usar a integração Hibrida passando para a intent veja exemplo Manual de Integração Hibrida · Documentações e tutoriais (developercielo.github.io)

  • 7 meses depois ...
Postado
Em 29/06/2020 at 11:01, Marcio Dias Ramos disse:

Bom dia a todos!
Desenvolvo uma aplicação para emissão de BP-e e migrei a parte mobile para o Acbr.
Tenho a aplicação rodando em vários dispositivos diferentes desde celulares com a
mini impressora BT a vário modelos de terminais POS.
Tanto o AcbrBPe quanto o AcbrPOSPrinter funcionam perfeitamente em qualquer dessas
situações.
O único problema que em tenho é com os terminais Cielo LIO.
Essas máquinas têm um SO modificado que não permite acessar a impressora.
Nesse sistema da Cielo LIO você envia comandos para a impressora no formato de urls
com o seguinte formato:
lio://print?request=$base64&urlCallback=order://response

O que eu tenho feito é criar um instrução nesse formato:
          scheme := '{"operation":"PRINT_IMAGE","styles":[{"key_attributes_align":0,"key_attributes_textsize":40}],"value":["/storage/emulated/0/saved_images/QRCODE.BMP"]}';


E depois enviar a impressora com essa rotina:
    Base64 := MinhaEncodeBase64(BytesOf(scheme));
    Uri := 'lio://print?request='+Base64+'&urlCallback=order://response';
    Imprime1 := TJIntent.Create;
    Imprime1.setAction(TJIntent.JavaClass.ACTION_VIEW);
    Imprime1.addFlags(TJIntent.JavaClass.FLAG_ACTIVITY_CLEAR_TOP) ;
    Imprime1.setData(StrToJURI(uri));
    SharedActivity.startActivity(Imprime1)

Será que é viável criar uma classe para compatibilizar o AcbrPosPrinter com esse método de impressão através Intent?
Se sim, vocês tem alguma dica para começar?

Desde já agradeço.
Márcio Dias Ramos
 

Boa tarde Marcio, tudo bem?

Gostaria de saber se você conseguiu? 

Eu estou iniciando a integração agora estou com dificuldade, no meu caso eu só quero imprimir e se possível somente texto.

  • Curtir 1
  • 1 mês depois ...
  • Este tópico foi criado há 163 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.