Ir para o conteúdo

QrCode

Obter QrCode

getQrCode()

Warning

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

Utiliza-se a função getQrCode para obter o QRCODE para pagamentos.

Request

{
  "provider_id": "4d193f5f-b933-4658-a15b-0ba071e0ac38",
  "service": "TWINT"
}

Parâmetros

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

Detalhamento dos Parâmetros

request (getQrCode)

Nome Tipo Obrigatório Descrição
provider_id String Sim Id do Provedor
service String Sim Serviço

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 GetQrCodeResponse.
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.

Response

{
  "imageFormat": "PNG",
  "base64": "data:image/png;base64,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"
}

Detalhamento dos Parâmetros

response (getQrCode)

Nome Tipo Obrigatório Descrição
base64 String Sim A imagem do QR Code gerada em base64.
imageFormat String Sim Formato da imagem em base64.

class GetQrCodeService @Inject constructor(
    private val json: Json
) {

    operator fun invoke(
        phastPayClient: PhastPayClient,
        getQrCodeRequest: PhastPayGetQrCodeRequest,
    ) = callbackFlow {
        val callback = object : PhastPayClient.ICallbackService {
            override fun onError(response: String?) {
                val result = runCatching {
                    val responseError = response?.let { json.decodeFromString<PhastErrorResponse>(it) }
                    Exception(responseError?.errorMessage)
                }.getOrElse { Exception("Erro desconhecido: $response") }

                trySend(Result.failure(result))
                close()
            }

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

                val result = runCatching {
                    json.decodeFromString< PhastPayGetQrCodeResponse>(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(getQrCodeRequest)
            phastPayClient.getQrCode(request, callback)
        } catch (e: Exception) {
            trySend(Result.failure(e))
            close()
        }

        awaitClose {}
    }
}

GetQrCodeRequest

@Serializable
data class PhastPayGetQrCodeRequest(
    @SerialName("provider_id")
    val providerId: String = "",
    @SerialName("service")
    val service: Service,
)

GetQrCodeResponse:

@Serializable
data class PhastPayGetQrCodeResponse (
    val base64: String,
    val imageFormat: ImageFormat
)

Veja os formatos de imagem suportados aqui.