pagseguro / pagseguro-sdk-plugpagservicewrapper

Biblioteca para integrar aplicativos Android com o terminal Moderninha Smart.
https://pagseguro.github.io/pagseguro-sdk-plugpagservicewrapper/
31 stars 7 forks source link

Erro ao imprimir utilizando Wrapper 1.26.1 #23

Closed mrgadotti closed 1 year ago

mrgadotti commented 1 year ago

Ao implementar a integração da impressora com a última versão do Wrapper, ocorre o erro de travar a aplicação na chamada do método printFromFile().

Trecho de código executado no onCreate:

val path = "/sdcard/Download"
val plugpag = PlugPag(this)
val data = PlugPagPrinterData(
    "$path/imagem.png",
    4,
    10 * 12
)
val pResult = plugpag.printFromFile(data)       
implementation 'br.com.uol.pagseguro.plugpagservice.wrapper:wrapper:1.26.1'
<uses-permission android:name="br.com.uol.pagseguro.permission.MANAGE_PAYMENTS" />
<uses-permission android:name="br.com.uol.pagseguro.permission.M" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission
    android:name="android.permission.WRITE_EXTERNAL_STORAGE"
    tools:ignore="ScopedStorage" />
<uses-permission
    android:name="android.permission.READ_EXTERNAL_STORAGE"
    tools:ignore="ScopedStorage" />
<uses-permission
    android:name="android.permission.MANAGE_EXTERNAL_STORAGE"
    tools:ignore="ScopedStorage" />

O App de testes está com permissão de escrita no path /sdcard/Download, onde é salvo uma imagem para impressão.

ticmaisdev commented 1 year ago

Algo não relacionado...

val data = PlugPagPrinterData(
    "$path/imagem.png",
    4,
    10 * 12 // step
)

Este terceiro parâmetro "step" funciona? Sabe me explicar qual é o propósito?

mrgadotti commented 1 year ago

Algo não relacionado...

val data = PlugPagPrinterData(
    "$path/imagem.png",
    4,
    10 * 12 // step
)

Este terceiro parâmetro "step" funciona? Sabe me explicar qual é o propósito?

Foi retirado dos exemplos da documentação antiga: Imprimir arquivo

ticmaisdev commented 1 year ago

Com relação ao seu problema: já enfrentei isso, tanto na impressão quanto pagamento

Tente usar uma suspend function para executar val pResult = plugpag.printFromFile(data). Provavelmente, vai dar certo.

ticmaisdev commented 1 year ago

Outra coisa, procure utilizar os métodos async do wrapper (doAsyncPayment invés de doPayment).

mrgadotti commented 1 year ago

Com relação ao seu problema: já enfrentei isso, tanto na impressão quanto pagamento

Tente usar uma suspend function para executar val pResult = plugpag.printFromFile(data). Provavelmente, vai dar certo.

Pagamento consegui implementar tudo certinho:

 val initResult = mPlugPag.doAsyncInitializeAndActivatePinpad(
            PlugPagActivationData(MainController.global_application.global_activation_code),
            this
        )

O App já está até homologado nesta parte, cheguei a alterar a chamada do pin pad pelo printFromFile dentro de uma função suspend, mas única diferença agora que não trava mais a aplicação. A impressora ainda continua inativa.

mrgadotti commented 1 year ago

Resolvido após atualizar a biblioteca Wrapper e realizando chamada do método dentro de um GlobalScope.launch()

angelopedroso commented 5 months ago

Resolvido após atualizar a biblioteca Wrapper e realizando chamada do método dentro de um GlobalScope.launch()

Pra pagamento tu seguiu a base do que tava nos exemplos? Não chegou o terminal debug ainda pra mim, mas to adiantando alguns passos. To fazendo em Kotlin

ticmaisdev commented 5 months ago

Pra pagamento tu seguiu a base do que tava nos exemplos? Não chegou o terminal debug ainda pra mim, mas to adiantando alguns passos. To fazendo em Kotlin

recomendo usar o projeto SmartCoffee como base para criar o seu app. é oficial e tem todos os cenários possíveis para usar com o wrapper. o android studio converte java para kotlin automaticamente...

https://github.com/pagseguro/pagseguro-plugpagservicewrapper-smartcoffeedemo

angelopedroso commented 5 months ago

Pra pagamento tu seguiu a base do que tava nos exemplos? Não chegou o terminal debug ainda pra mim, mas to adiantando alguns passos. To fazendo em Kotlin

recomendo usar o projeto SmartCoffee como base para criar o seu app. é oficial e tem todos os cenários possíveis para usar com o wrapper. o android studio converte java para kotlin automaticamente...

https://github.com/pagseguro/pagseguro-plugpagservicewrapper-smartcoffeedemo

E da pra seguir de boa? Já que a ultima atualização foi a 2 anos, não sei dizer se teve alguma grande atualização nesse meio tempo, que tenha mudado alguma coisa "impactante".

ticmaisdev commented 5 months ago

E da pra seguir de boa? Já que a ultima atualização foi a 2 anos, não sei dizer se teve alguma grande atualização nesse meio tempo, que tenha mudado alguma coisa "impactante".

tem razão...

  1. o código fonte está desatualizado em comparação ao app da loja
  2. o código fonte não utiliza o wrapper mais recente

:sob:

a documentação mais atualizada possível é essa. porém, ela é auto-gerada e fica um pouco difícil de entender...

angelopedroso commented 5 months ago

E da pra seguir de boa? Já que a ultima atualização foi a 2 anos, não sei dizer se teve alguma grande atualização nesse meio tempo, que tenha mudado alguma coisa "impactante".

tem razão...

  1. o código fonte está desatualizado em comparação ao app da loja
  2. o código fonte não utiliza o wrapper mais recente

😭

a documentação mais atualizada possível é essa. porém, ela é auto-gerada e fica um pouco difícil de entender...

Boa, vou dar uma lida lá então. To implementando em React Native, já consegui integrar com a Stone e Cielo, bora dar uma aventurada na PagBank agora kkk

ticmaisdev commented 5 months ago

Boa, vou dar uma lida lá então. To implementando em React Native, já consegui integrar com a Stone e Cielo, bora dar uma aventurada na PagBank agora kkk

Tentei implementar com React Native, mas o terminal A930 tem especificações de hardware fracas. Aplicações React Native rodam muito lentas, nesse terminal.

Já no terminal SUNMI P2B: roda um pouco mais rápido, porém, nem todo cliente gosta de usar esse modelo por motivos ergonômicos.

Recomendo usar XML para o máximo de desempenho ou JetPack Compose para um meio termo entre desempenho e produtividade. :+1:

outro detalhe: se o seu APK ficar muito grande, pode ser que não passe na homologação. aplicações com React Native tendem a ter um APK com tamanho de arquivo grande.

só estou falando aquilo que eu gostaria de saber, antes de trabalhar com esse terminal A930.

angelopedroso commented 5 months ago

Boa, vou dar uma lida lá então. To implementando em React Native, já consegui integrar com a Stone e Cielo, bora dar uma aventurada na PagBank agora kkk

Tentei implementar com React Native, mas o terminal A930 tem especificações de hardware fracas. Aplicações React Native rodam muito lentas, nesse terminal.

Já no terminal SUNMI P2B: roda um pouco mais rápido, porém, nem todo cliente gosta de usar esse modelo por motivos ergonômicos.

Recomendo usar XML para o máximo de desempenho ou JetPack Compose para um meio termo entre desempenho e produtividade. 👍

outro detalhe: se o seu APK ficar muito grande, pode ser que não passe na homologação. aplicações com React Native tendem a ter um APK com tamanho de arquivo grande.

só estou falando aquilo que eu gostaria de saber, antes de trabalhar com esse terminal A930.

O que é considerado grande pro pagbank? Nos app da cielo e stone deu uns 60mb mais ou menos cada.

ticmaisdev commented 5 months ago

Boa, vou dar uma lida lá então. To implementando em React Native, já consegui integrar com a Stone e Cielo, bora dar uma aventurada na PagBank agora kkk

Tentei implementar com React Native, mas o terminal A930 tem especificações de hardware fracas. Aplicações React Native rodam muito lentas, nesse terminal. Já no terminal SUNMI P2B: roda um pouco mais rápido, porém, nem todo cliente gosta de usar esse modelo por motivos ergonômicos. Recomendo usar XML para o máximo de desempenho ou JetPack Compose para um meio termo entre desempenho e produtividade. 👍 outro detalhe: se o seu APK ficar muito grande, pode ser que não passe na homologação. aplicações com React Native tendem a ter um APK com tamanho de arquivo grande. só estou falando aquilo que eu gostaria de saber, antes de trabalhar com esse terminal A930.

O que é considerado grande pro pagbank? Nos app da cielo e stone deu uns 60mb mais ou menos cada.

se não me engano, o limite é 70mb

angelopedroso commented 5 months ago

Sobre os terminais ali, nao cheguei a testar no A930, somente no SUNMI e P2. Vou ter que dar uma olhada pra ver como vai se comportar nesse modelo, mas valeu pelas dicas 💪🏻