v1.2.0

Esta versão adiciona suporte a terminais PagBank, através do PlugPagService, unifica a publicação Maven em apenas um repositório e passa a imprimir um comprovante padrão do PayOS SDK. A interface pública expõe novas interfaces, deixando de depender de integrações específicas.

Breaking changes

Atualize o app antes de compilar contra 1.2.0. Esta release quebra:

  • imports e tipos com.tectoy.* na interface pública;
  • a assinatura de revertTransaction ;
  • o tipo de retorno de PayOsSdkTransactionParams.getTypeTransaction() e os tipos de crédito, CVV e da transação persistida;
  • os métodos de texto de PayOsSdkPrinter para terminais Pax;
  • o minSdk para terminais Nexgo - N62 (agora 24);
  • as URLs e as coordenadas Maven por terminal;
  • when exaustivo sobre PayOsSdkTransactionType (entraram VOUCHER e PICPAY);

Artefatos

Com a unificação dos artefatos abaixo de apenas um repositório Maven, temos a seguinte distribuição:

Terminais PAX - A960, A910S, A910

  • debug: com.paytime:payossdk-pax-debug:1.2.0
  • release: com.paytime:payossdk-pax:1.2.0

Terminais Nexgo - N62

  • debug: com.paytime:payossdk-nexgo-debug:1.2.0

  • release: com.paytime:payossdk-nexgo:1.2.0

Terminais PagBank - A930, P2, GPOS780, A50, A50S

  • debug: com.paytime:payossdk-pags-debug:1.2.0

  • release: com.paytime:payossdk-pags:1.2.0

repositories {
    maven {
        url = uri("URL_MAVEN_PAYTIME_PAYOSSDK_DEBUG")
        credentials {
            username = "USERNAME_MAVEN_PAYTIME_PAYOSSDK_DEBUG"
            password = "PASSWORD_MAVEN_PAYTIME_PAYOSSDK_DEBUG" 
        }
        authentication {
            create<BasicAuthentication>("basic")
        }
    }
    
    // Somente PagBank (A930, P2, GPOS780, A50, A50S)
    maven { 
        url = uri("https://github.com/pagseguro/PlugPagServiceWrapper/raw/master")
    }
}

dependencies {
    // debugImplementation("com.paytime:payossdk-pax-debug:1.2.0")
    // debugImplementation("com.paytime:payossdk-nexgo-debug:1.2.0")
    debugImplementation("com.paytime:payossdk-pags-debug:1.2.0")
}


Principais alterações (quebram integração até 1.0.15)


A interface pública não expõe mais tipos genéricos

Todas as importações ocorrem através de com.paytime.payossdk e com.paytime.payossdk.external.*.

Callbacks de PayOsSdkPayment (init, makeTransaction, revertTransaction, tableLoad, updateTerminalConfigurations, syncTransactionToCloud, cancelPixTransaction e o novo printReceipt) recebem PayOsSdkConnectorCallback. Os parâmetros de onRequest, onMessage e onError passam a ser tipos PayOS:

Até 1.0.15A partir da 1.2.0
ConnectorCallbackPayOsSdkConnectorCallback
RequestFlowEnumPayOsSdkRequestFlow
NotificationTypePayOsSdkNotificationType
ReturnCodesPayOsSdkReturnCode
CvvTypeEnumPayOsSdkCvvType
CreditTypePayOsSdkCreditType
AuthTypeEnumPayOsSdkAuthType
ReasonUndoEnumPayOsSdkReasonUndo
EncryptModePayOsSdkEncryptMode
ReadCardTypePayOsSdkReadCardType
TransactionStatusPayOsSdkPinpadTransactionStatus
TypeTransactionPayOsSdkTransactionType

PayOsSdkTransactionType inclui VOUCHER e PICPAY. Um when exaustivo que compilava antes precisa tratar esses dois valores. makeTransaction continua aceitando apenas CREDIT, DEBIT e PIX; os demais tipos retornam PayOsSdkReturnCode.INVALID_TRANSACTION.

Assinaturas que mudam de tipo:

  • setCvvType recebe PayOsSdkCvvType.
  • PayOsSdkTransactionParams.getCreditType / setCreditType usam PayOsSdkCreditType.
  • PayOsSdkTransactionParams.getTypeTransaction() devolve PayOsSdkTransactionType. Antes devolvia TypeTransaction.
  • Em PayOsSdkTransactionStore, reasonUndo, authentication, entryMode e encryptMode usam os enums PayOS da tabela acima.
class PaymentCallback : PayOsSdkConnectorCallback {
    override fun onRequest(flow: PayOsSdkRequestFlow, payload: Any?) {}

    override fun onMessage(type: PayOsSdkNotificationType, message: String) {}

    override fun onApproved(data: Any?) {}

    override fun onError(code: PayOsSdkReturnCode, messages: List<String>, extra: Int?) {}
}

revertTransaction recebe um objeto de parâmetros

revertTransaction deixa de receber a gatewayKey como String. O primeiro argumento passa a ser PayOsSdkRevertTransactionParams, com a chave e a flag de comprovante.

Antes:

payment.revertTransaction(gatewayKey, callback)

A partir da 1.2.0:

val params = PayOsSdkRevertTransactionParams()
params.setGatewayKey(gatewayKey)
params.setPrintReceipt(false)

payment.revertTransaction(params, callback)

makeTransaction e revertTransaction aceitam um terceiro argumento opcional, receiptCallback: PayOsSdkConnectorCallback?. O default é null, então a chamada com dois argumentos continua válida. Esse callback só entra em cena quando printReceipt = true no objeto de parâmetros.

setPrintReceipt existe em PayOsSdkTransactionParams e em PayOsSdkRevertTransactionParams. O default é false: a transação conclui no callback de pagamento e o SDK não imprime. Com true, depois do onApproved desse callback o SDK imprime a 1ª via do estabelecimento e entrega o resultado da impressão no receiptCallback. A via só fica marcada como impressa quando a impressão termina com sucesso.

Pagamento com comprovante:

val params = PayOsSdkTransactionParams()
params.setAmount(1500)
params.setTypeTransaction(PayOsSdkTransactionType.CREDIT)
params.setCreditType(PayOsSdkCreditType.NO_INSTALLMENT)
params.setPrintReceipt(true)

payment.makeTransaction(params, paymentCallback, receiptCallback)

Estorno com comprovante:

val params = PayOsSdkRevertTransactionParams()
params.setGatewayKey(gatewayKey)
params.setPrintReceipt(true)

payment.revertTransaction(params, paymentCallback, receiptCallback)

Sem comprovante, omita o terceiro argumento e deixe a flag desligada:

params.setPrintReceipt(false)
payment.makeTransaction(params, paymentCallback)
payment.revertTransaction(revertParams, paymentCallback)

No Nexgo, printReceipt = true responde PayOsSdkReturnCode.UNSUPPORTED_OPERATION no receiptCallback.


PayOsSdkPrinter imprime bitmap

Os seguintes métodos não são mais expostos pela interface pública:

  • setAlignMode
  • fontSet
  • spaceSet
  • printStr
  • printLine
  • leftIndent
  • setDoubleWidth
  • setDoubleHeight
  • setInvert

A interface que permanece é: configure, init, getStatus, start, printBitmap, step e setGray. setGray aceita níveis de 0 a 4; valores fora desse intervalo são limitados a esse range. O comprovante do SDK usa nível 4.

O flavor Nexgo não publica PayOsSdkPrinter. printReceipt e a impressão automática do comprovante respondem PayOsSdkReturnCode.UNSUPPORTED_OPERATION.


Nexgo exige minSdk 24

O AAR payment-pos-nexgo declara minSdk 24, e o flavor Nexgo do PayOS SDK acompanha esse valor. Pax e PAGS permanecem em 23. Um app Nexgo com minSdk 23 falha no merge do manifest.



Comprovante

PayOsSdkTransactionParams.setPrintReceipt(true) e PayOsSdkRevertTransactionParams.setPrintReceipt(true) pedem a 1ª via do estabelecimento depois de onApproved. A via só é consumida quando a impressão termina com sucesso. O receiptCallback opcional acompanha essa impressão.

printReceipt(copyType, callback) reimprime a última transação com status CONFIRMED ou CANCELLED.

PayOsSdkReceiptCopyTypeViaRegra
ESTABLISHMENT1ª via do estabelecimentoPode tentar de novo se a impressão falhou. Depois de um sucesso, a próxima chamada devolve INVALID_CALL.
CLIENT1ª via do clienteMesma regra da via do estabelecimento.
ESTABLISHMENT_SECOND_COPY2ª via do estabelecimentoUma impressão bem-sucedida.
CLIENT_SECOND_COPY2ª via do clienteUma impressão bem-sucedida.

Mensagens de INVALID_CALL:

  • A 1a via do estabelecimento já foi impressa. Só é possível fazer reimpressão.
  • A 1a via do cliente já foi impressa. Só é possível fazer reimpressão.
  • A 2a via do estabelecimento já foi impressa.
  • A 2a via do cliente já foi impressa.

O comprovante é um bitmap. O rodapé usa o nome e o versionName do app hospedeiro. A intensidade térmica do comprovante é 4. Falta de papel em start() devolve erro de hardware; o resultado deixa de ser sucesso com a bobina vazia.

No Nexgo, essas chamadas devolvem UNSUPPORTED_OPERATION (Impressora não suportada neste terminal.).



Checklist de migração

  1. Troque a dependência para payossdk-pax-debug, payossdk-nexgo-debug ou payossdk-pags-debug na versão 1.2.0, apontando para payossdk-debug.
    1. Para release, basta remover o sufixo -debug dos artefatos e do repositório Maven.
  2. Corrija os imports e passe a usar os tipos da tabela de breaking changes.
  3. Troque revertTransaction(gatewayKey, callback) por PayOsSdkRevertTransactionParams.
  4. Ajuste getTypeTransaction(), setCreditType / getCreditType, setCvvType e os campos de PayOsSdkTransactionStore.
  5. Feche os ramos VOUCHER e PICPAY nos when de PayOsSdkTransactionType.
  6. No Pax, substitua impressão por texto por printBitmap, ou use setPrintReceipt(true) e printReceipt.
  7. No Nexgo, suba o minSdk do app para 24 e trate UNSUPPORTED_OPERATION nas interfaces de comprovante.

Did this page help you?