Ir para o conteúdo

Imprimir comprovante

Imprimir comprovante de Pagamento ou Devolução

printReceipt

Warning

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

Utiliza-se a função printReceipt para a impressão dos comprovantes de pagamento e devolução.

O tipo de comprovante retornado depende do status atual da transação.

Comportamento do Retorno

O sistema alterna o tipo de comprovante gerado com base no identificador enviado e no estado da transação:

Comprovante de Venda: Retornado quando uma venda está no seu status final e sem devoluções.

Comprovante de Devolução: Caso seja enviado o app_client_id ou payment_id, mas a transação já esteja em um estado de reembolso, o sistema retornará automaticamente o comprovante de devolução em vez do de venda.

Requisição

{
  "app_client_id": "4d193f5f-b933-4658-a15b-0ba071e0ac38",
  "payment_id": "4d193f5f-b933-4658-a15b-0ba071e0ac38",
  "refund_id": "4d193f5f-b933-4658-a15b-0ba071e0ac38",
  "application_id": "com.myapp",
  "applicationName": "My App",
  "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 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

Será obrigatório o envio de um dos identificadores, como o app_client_id, payment_id ou refund_id

request (printReceipt)

Nome Tipo Obrigatório Descrição Padrão
app_client_id String Não Identificador único utilizado pelo app integrador para identificar as cobranças criadas. Suporta até 36 caracteres. -
payment_id String Não Identificador da Transação de Pagamento -
refund_id String Não Identificador da Transação de Devolução. -
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
preview_customer_receipt Boolean Não Indica se o comprovante do cliente deve deve ser exibido em tela. true
preview_merchant_receipt Boolean Não Indica se o comprovante do estabelecimento deve ser exibido em tela. true
application_id String Sim Identificador da aplicação no portal da Paystore. -
application_name String Sim Nome da aplicaçã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.

class PrintReceiptService @Inject constructor(
    private val json: Json
) {
    operator fun invoke(
        phastPayClient: PhastPayClient,
        phastPayPrintReceipRequest: PhastPayPrintReceiptRequest
    ) = callbackFlow {

        val callback = object : PhastPayClient.ICallbackService {
            override fun onError(response: String?) {
                val responseError = response?.let { json.decodeFromString<PhastErrorResponse>(it) }
                trySend(Result.failure(Exception(responseError?.errorMessage)))
                close()
            }

            override fun onSuccess(response: String?) {
                trySend(Result.success(response))
                close()
            }
        }

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

}

PhastPayPrintReceiptRequest

@Serializable
data class PhastPayPrintReceiptRequest(
     @SerialName("app_client_id")
    val appClientId: String? = null,
    @SerialName("payment_id")
    val paymentId: String? = null,
    @SerialName("refund_id")
    val refundId: String? = null,
    @SerialName("application_id")
    val applicationId: String = "",
    @SerialName("application_name")
    val applicationName: String = "",
    @SerialName("print_customer_receipt")
    val printCustomerReceipt: Boolean = true,
    @SerialName("print_merchant_receipt")
    val printMerchantReceipt: Boolean = true,
    @SerialName("preview_customer_receipt")
    val previewCustomerReceipt: Boolean = true,
    @SerialName("preview_merchant_receipt")
    val previewMerchantReceipt: Boolean = true,
)