Ir para o conteúdo

Devolução


Devolução de um PIX

Info

A funcionalidade de impressão automática está disponível a partir da versão 1.3.3.0 do App Pix. Para versões anteriores a 1.3.3.0, utilizar print_customer_receipt e print_merchant_receipt para controlar a exibição dos comprovantes.

A devolução pode ser feita de duas formas:

refund()

Para listar as opções de devolução será utilizada a função refund e deve ser passado o seguinte request:

Request

{
  "preview_customer_receipt": true,
  "preview_merchant_receipt": true,
  "print_customer_receipt": true,
  "print_merchant_receipt": true
}

Parâmetros

Nome Tipo Obrigatório Descrição
request refundPixPayment Sim Objeto de transferência de dados que conterá as informações da requisição do pix. Note que nem todos os parâmetros são obrigatórios.
callback RefundPixPaymentCallback Sim Interface que será executada para notificações de sucesso ou erro do processo da devolução.

Detalhe dos Parâmetros

request (refundPixPayment)

Nome Tipo Obrigatório Descrição Padrão
preview_customer_receipt Boolean Não Indica se o comprovante do cliente deve ser exibido. true
preview_merchant_receipt Boolean Não Indica se o comprovante do estabelecimento deve ser exibido. true
print_customer_receipt Boolean Não Indica se o comprovante do cliente deve ser impresso automaticamente.
Observação: A impressão automática só ocorrerá se a visualização prévia (preview) do comprovante estiver desabilitada (false).
true
print_merchant_receipt Boolean Não Indica se o comprovante do estabelecimento deve ser impresso automaticamente.
Observação: A impressão automática só ocorrerá se a visualização prévia (preview) do comprovante estiver desabilitada (false).
true

Detalhe dos Parâmetros

callback (RefundPixPaymentCallback)

Nome Tipo Obrigatório Descrição
onSuccess String Sim Método para notificação em caso de sucesso. A resposta retornada será uma string no formato json que possui os campos demostrados na classe PixResponse
onError String Sim Método para notificação em caso de erro. A resposta retornada será uma string no formato json que possui os campos demostrados na classe PixErrorResponse
fun RefundPixService(
    pixClient: PixClient,
    previewCustomerReceipt: Boolean,
    previewMerchantReceipt: Boolean,
    printCustomerReceipt: Boolean,
    printMerchantReceipt: Boolean,
    context: Context

) {
    val gson: Gson = Gson()
    val refundPixRequest = RefundPixRequest(previewCustomerReceipt, previewMerchantReceipt, printCustomerReceipt, printMerchantReceipt)
    val callback = object : PixClient.RefundCallback {
        override fun onError(response: String?) {
            println("Erro ao devolver $response")

            val alertDialog = AlertDialog.Builder(context)
            alertDialog.setTitle(R.string.refund)
                .setMessage("Não foi possível realizar a devolução.")
                .setNeutralButton("Ok") { _, _ -> }
                .show()

        }

        override fun onSuccess(response: String?) {

            val alertDialog = AlertDialog.Builder(context)
            alertDialog.setTitle(R.string.refund)
                .setMessage("Devolução realizada com sucesso.")
                .setNeutralButton("Ok") { _, _ -> }
                .show()

        }

        }

    pixClient.refund(
        gson.toJson(refundPixRequest),
        callback
    )

}

Exemplo da classe RefundPixRequest:

data class RefundPixRequest(
    @SerializedName("preview_customer_receipt")
    val previewCustomerReceipt: Boolean,
    @SerializedName("preview_merchant_receipt")
    val previewMerchantReceipt: Boolean,
    @SerializedName("print_customer_receipt")
    val printCustomerReceipt: Boolean,
    @SerializedName("print_merchant_receipt")
    val printMerchantReceipt: Boolean
)

refundPixPayment()

Para realizar uma devolução utilizando o tx-id, será utilizada a função refundPixPayment e deve ser passado o seguinte request:

{
  "tx_id": "b849b36b-7846-48f8-81ce-a8dbf2530f42",
  "preview_customer_receipt": true,
  "preview_merchant_receipt": true,
  "print_customer_receipt": true,
  "print_merchant_receipt": true
}

Parâmetros

Nome Tipo Obrigatório Descrição
request refundByTxIdPixPayment Sim Objeto de transferência de dados que conterá as informações da requisição do pix. Note que nem todos os parâmetros são obrigatórios.
callback RefundByTxIdPixPaymentCallback Sim Interface que será executada para notificações de sucesso ou erro do processo do pix.

Detalhe dos Parâmetros

request (refundByTxIdPixPayment)

Nome Tipo Obrigatório Descrição Padrão
tx_id String Sim O tx_id representa o id da transação pix.
preview_customer_receipt Boolean Não Indica se o comprovante do cliente deve ser exibido. true
preview_merchant_receipt Boolean Não Indica se o comprovante do estabelecimento deve ser exibido. true
print_customer_receipt Boolean Não Indica se o comprovante do cliente deve ser impresso automaticamente.
Observação: A impressão automática só ocorrerá se a visualização prévia (preview) do comprovante estiver desabilitada (false).
true
print_merchant_receipt Boolean Não Indica se o comprovante do estabelecimento deve ser impresso automaticamente.
Observação: A impressão automática só ocorrerá se a visualização prévia (preview) do comprovante estiver desabilitada (false).
true

Detalhe dos Parâmetros

callback (RefundByTxIdPixPaymentCallback)

Nome Tipo Obrigatório Descrição
onSuccess String Sim Método para notificação em caso de sucesso. A resposta retornada será uma string no formato json que possui os campos demostrados na classe PixResponse
onError String Sim Método para notificação em caso de erro. A resposta retornada será uma string no formato json que possui os campos demostrados na classe PixErrorResponse
fun refundPixService(
    pixClient: PixClient,
    txId: String,
    previewCustomerReceipt: Boolean,
    previewMerchantReceipt: Boolean,
    printCustomerReceipt: Boolean,
    printMerchantReceipt: Boolean,
    context: Context
) {
    val gson: Gson = Gson()
    val refundPixRequest = RefundByTxIdPixRequest(txId, previewCustomerReceipt, previewMerchantReceipt, printCustomerReceipt, printMerchantReceipt)
    val callback = object : PixClient.RefundPixPaymentCallback {
        override fun onError(response: String?) {
            println("Erro ao devolver $response")
            val alertDialog = AlertDialog.Builder(context)
            val responseError = gson.fromJson(response, PixErrorResponse::class.java)
            alertDialog.setTitle(R.string.pix_refund)
                .setMessage(responseError.errorMessage)
                .setNeutralButton("Ok") { _, _ -> }
                .show()
        }

        override fun onSuccess(response: String?) {
            val pixResponse = gson.fromJson(response, PixResponse::class.java)
            println("Devolvido $pixResponse")
            Toast.makeText(context, "Pix devolvido!", Toast.LENGTH_SHORT).show()
        }
    }

    pixClient.refundPixPayment(
        gson.toJson(refundPixRequest),
        callback
    )
}

Exemplo da classe RefundByTxIdPixRequest:

data class RefundByTxIdPixRequest(
    @SerializedName("tx_id")
    val txId: String,
    @SerializedName("preview_customer_receipt")
    val previewCustomerReceipt: Boolean,
    @SerializedName("preview_merchant_receipt")
    val previewMerchantReceipt: Boolean,
    @SerializedName("print_customer_receipt")
    val printCustomerReceipt: Boolean,
    @SerializedName("print_merchant_receipt")
    val printMerchantReceipt: Boolean
)

PixResponse

data class PixResponse(
    @SerializedName("cob_value")
    val cobValue: String,
    @SerializedName("status")
    var status: String,
    @SerializedName("tx_id")
    val txID: String,
)

PixErrorResponse

class PixErrorResponse (
    @SerializedName("error_message")
    val errorMessage: String
)