Ir para o conteúdo

AbortPayment

Abortar Pagamentos

abortPayment()

Warning

Funcionalidade disponível desde App PhastPay v1.1.0.0 e PhastPay-SDK v1.0.1.0

Utiliza-se a função abortPayment para abortar uma requisição de pagamento.

Request

{
  "app_client_id": "d688f184-0d8d-4b66-93d1-4fec90f1bdd4"
}

Parâmetros

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

Detalhamento dos Parâmetros

Nome Tipo Obrigatório Descrição
app_client_id String Sim Identificador da aplicação cliente responsável por solicitar o abort do pagamento.

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 PhastPayAbortPaymentResponse.
onError String Sim Método chamado em caso de erro. A resposta será uma String, em formato JSON, contendo os campos definidos na classe

Response

{
  "result": true
}

Detalhamento dos Parâmetros

response (getQrCode)

Nome Tipo Obrigatório Descrição
result Boolean Sim Indica se a solicitação de abort foi processada com sucesso.

class AbortPaymentService @Inject constructor(
    private val json: Json
) {
    operator fun invoke(
        phastPayClient: PhastPayClient,
        phastPayAbortPaymentRequest: PhastPayAbortPaymentRequest
    ) = callbackFlow {
        val callback = object : PhastPayClient.ICallbackService {
            override fun onError(response: String?) {
                val responseError = response?.let {
                    runCatching { json.decodeFromString<PhastErrorResponse>(it) }.getOrNull()
                }
                trySend(Result.failure(Exception(responseError?.errorMessage ?: response ?: "Erro desconhecido")))
                close()
            }

            override fun onSuccess(response: String?) {
                if (response.isNullOrBlank()) {
                    Log.d(ConstantsUtils.TAG, "Resposta vazia do app-phastpay")
                    close()
                    return
                }

                val result = runCatching {
                    json.decodeFromString<PhastPayAbortPaymentResponse>(response)
                }

                result.onSuccess { res ->
                    trySend(Result.success(res))
                }.onFailure { erro ->
                    trySend(Result.failure(Exception("Falha ao processar dados: ${erro.message}")))
                }

                close()
            }
        }

        try {
            val request = json.encodeToString(phastPayAbortPaymentRequest)
            phastPayClient.abortPayment(request, callback)
        } catch (e: Exception) {
            trySend(Result.failure(e))
            close()
        }
        awaitClose { }
    }
}

PhastPayAbortPaymentRequest

@Serializable
data class PhastPayAbortPaymentRequest(
    @SerialName("app_client_id")
    val appClientId: String,
)

PhastPayAbortPaymentResponse:

@Serializable
data class PhastPayAbortPaymentResponse(
    @SerialName("result")
    val result: Boolean,
)