Ir para o conteúdo

Devolução

Devolução de um Pagamento

startRefund()

Para criar uma devolução é utilizada a função startRefund.

Request

{
  "payment_id": "b849b36b-7846-48f8-81ce-a8dbf2530f42",
  "application_id": "304",
  "application_name": "1.0.0.0",
  "value": "10.00",
  "print_customer_receipt": true,
  "print_merchant_receipt": true,
  "preview_customer_receipt": true,
  "preview_merchant_receipt": true,
}

Parâmetros

Nome Tipo Obrigatório Descrição
request String Sim Objeto contendo as informações da requisição de criação de uma devolução.
callback ICallbackService Sim Interface que será executada para notificações de sucesso ou erro no processo de pagamento.

Detalhe dos Parâmetros

request (startRefund)

Nome Tipo Obrigatório Descrição Padrão
payment_id String Sim O paymentId representa o id da transação de pagamento. -
print_customer_receipt Boolean Não Indica se o comprovante do cliente deve ser impresso após a confirmação da devolução. true
print_merchant_receipt Boolean Não Indica se o comprovante do estabelecimento deve ser impresso após a confirmação da devolução. true
preview_customer_receipt Boolean Não Indica se o comprovante do cliente deve ser exibido após a confirmação da devolução. true
preview_merchant_receipt Boolean Não Indica se o comprovante do estabelecimento deve ser exibido após a confirmação da devolução. true
application_id String Sim Identificador da aplicação no portal da Paystore. -
application_name String Sim Nome da aplicação. -
value String Não Valor da devolução, em formato numérico com duas casas decimais, informado pelo usuário. Caso não seja preenchido (null), o PhastPay realizará a devolução total do valor. null

Detalhamento dos Parâmetros

callback (ICallbackService)

Nome Tipo Obrigatório Descrição
onSuccess String Sim Método chamado em caso de sucesso. A resposta será uma String, em formato JSON, contendo os campos definidos na classe StartRefundResponse.
onError String Sim Método chamado em caso de erro. A resposta será uma String, em formato JSON, contendo os campos definidos na classe IpcResponseError.
fun startRefundService(
    phastPayClient: PhastPayClient,
    paymentId: String,
    applicationId: String,
    applicationName: String,
    value: String?,
    printCustomerReceipt: Boolean?,
    printMerchantReceipt: Boolean?,
    previewCustomerReceipt: Boolean?,
    previewMerchantReceipt: Boolean?,
) {
    val gson: Gson = Gson()
    val startRequest = StartRefundRequest(applicationId, applicationName, paymentId, value  printCustomerReceipt, printMerchantReceipt)
    val callback = object : PhastPayClient.ICallbackService {
        override fun onError(response: String?) {
            val responseError = gson.fromJson(response, IpcResponseError::class.java)
            println("Erro ao devolver $responseError")
        }

        override fun onSuccess(response: String?) {
            val responseSuccess = gson.fromJson(response, StartRefundResponse::class.java)
            println("Devolvido $responseSuccess")
        }
    }

    phastPayClient.startRefund(
        gson.toJson(startRequest),
        callback
    )
}

Requisições e Respostas

StartRefundRequest

class StartRefundRequest(
    @SerializedName("application_id")
    val applicationId: String,

    @SerializedName("application_name")
    val applicationName: String,

    @SerializedName("payment_id")
    val paymentId: String,

    @SerializedName("value")
    val value: String? = null,

    @SerializedName("print_customer_receipt")
    val printCustomerReceipt: Boolean? = null,

    @SerializedName("print_merchant_receipt")
    val printMerchantReceipt: Boolean? = null,

    @SerializedName("preview_customer_receipt")
    val previewCustomerReceipt: Boolean? = null,

    @SerializedName("preview_merchant_receipt")
    val previewMerchantReceipt: Boolean? = null
) {
    fun toJson(): String {
        return Gson().toJson(this)
    }
}

StartRefundResponse

data class StartRefundResponse(
    @SerializedName("refund_id")
    val refundId: String?,
    @SerializedName("app_client_id")
    val appClientId: String,
    @SerializedName("status")
    val status: String,
    @SerializedName("value")
    val value: Stringl,
    @SerializedName("iva")
    val iva: String,
    @SerializedName("date_time")
    val dateTime: String,
)

IpcResponseError

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