pagseguro / pagseguro-sdk-plugpagservicewrapper

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

Qual é a lista atualizada de código de erros? #19

Open ticmaisdev opened 1 year ago

ticmaisdev commented 1 year ago

Olá, houve uma atualização no SDK e os códigos de erros tornaram-se incompatíveis com aqueles que tinhamos em nosso app. Devido à isso, o APP não está funcionando adequadamente.

Posso sempre tentar descobrir depurando os resultados, mas não é 100% confiável. Por isso, eu gostaria de solicitar uma lista atualizada (nem que seja com os principais erros).

PAPER_OUT("-5002", "Sem papel! Troque a bobina."),
OVERHEATING("-5003", "Impressora superaquecida"),
LOW_VOLTAGE("-5004", "Tensão muito baixa"),
BUSY("-5005", "Impressora ocupada"),
INVALID_DATA_FORMAT("-5006", "Formato do pacote de dados incorreto"),
MALFUNCTION("-5007", "Mal funcionamento"),
INCOMPLETE_PRINT("-5008", "Impressão incompleta"),
MISSING_FONT_LIBRARY("-5009", "Impressora não possui biblioteca de fontes instalada"),
LONG_DATA_PACKAGE("-5010", "Pacote de dados muito longo"),
FILE_NOT_FOUND("-5011", "Arquivo não encontrado"),
SDK_NOT_AVAILABLE("-5012", "SDK não disponível para impressão"),
UNKNOWN("-5404", "Erro desconhecido");

Estes eram os erros que temos suporte em nosso app, muitos deles trocaram o errorCode e consigo consultar no apêndice. No entanto, alguns não constam no apêndice e outros não são consistentes.

Com "não consistente", quero dizer: o erro de impressora I002 é retornado no terminal A930, mas em terminais P2-B não tem o mesmo código. Isso não ocorria com o antigo código (-5002).

RaphaelRat commented 9 months ago

Alguma atualização?

FalkionTheCorgi commented 8 months ago

Como você faz pra debuggar todos esses erros? ou se existe uma documentação pra esses erros em algum lugar?

ticmaisdev commented 8 months ago

Como você faz pra debuggar todos esses erros? ou se existe uma documentação pra esses erros em algum lugar?

Não me recordo como obtive esta lista. Esses inteiros são códigos mapeados em PlugPagPrintResult. Este último é obtido da seguinte forma:

import br.com.uol.pagseguro.plugpagservice.wrapper.PlugPag
import br.com.uol.pagseguro.plugpagservice.wrapper.PlugPagPrintResult
import br.com.uol.pagseguro.plugpagservice.wrapper.PlugPagPrinterData

val printResult: PlugPagPrintResult = provider.printFromFile(
    PlugPagPrinterData(
        filePath = "/diretorio/meu/arquivo.jpg",
        4, // qualidade da impressão
        0 // step inicial da impressora
    )
)

// houve um erro
if(printResult !== PlugPag.RET_OK) {
  val printingError = PlugPagPrintingError.fromCode(printResult.result)
  Log.d("printing:error", printingError.message)
}

Podes utilizar o seguinte enum para manipular os principais erros de impressão, no SDK v1.26.1:

enum class PlugPagPrintingError(
    val code: Int,
    val message: String
) {
    OUT_OF_PAPER(
        -5002,
        "Sem Papel! Troque a Bobina."
    ),
    OVERHEATING(
        -5003,
        "Impressora superaquecida"
    ),
    LOW_VOLTAGE(
        -5004,
        "Tensão Muito Baixa" // também conhecido como: pouca bateria kkk
    ),
    BUSY(
        -5005,
        "Impressora Ocupada" // não é possível imprimir 2 arquivos ao mesmo tempo
    ),
    INVALID_DATA_FORMAT(
        -5006,
        "Formato do Pacote de Dados Incorreto"
    ),
    MALFUNCTION(
        -5007,
        "Mal Funcionamento"
    ),
    INCOMPLETE_PRINT(
        -5008,
        "Impressão incompleta"
    ),
    MISSING_FONT_LIBRARY(
        -5009,
        "Impressora Não Possui Biblioteca de Fontes Instalada"
    ),
    LONG_DATA_PACKAGE(
        -5010,
        "Pacote de Dados Muito Longo"
    ),
    FILE_NOT_FOUND(
        -5011,
        "Arquivo Não Encontrado"
    ),
    SDK_NOT_AVAILABLE(
        -5012,
        "SDK não disponível para impressão"
    );

    companion object {
        fun fromCode(code: Int): PlugPagPrintingError? {
            val error = values().find {
                it.code == code
            }
            return error
        }

        fun isError(code: Int): Boolean {
            return values().any { it.code == code }
        }
    }
}