Pagamento Pix¶
Criar uma cobrança de pagamento 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.
startPixPayment()¶
Para criar uma cobrança é utilizada a função startPixPayment, ela recebe uma string no formato json com os seguintes campos:
Request¶
{
"cob_value": "20.00",
"pix_client_id": "228dbb16-1b8c-4503-a1ac-0531d0202b35",
"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 |
startPixPayment |
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 |
StartPixPaymentCallback |
Sim | Interface que será executada para notificações de sucesso ou erro do processo do pagamento. |
Detalhe dos Parâmetros
request (startPixPayment)
| Nome | Tipo | Obrigatório | Descrição | Padrão | |
|---|---|---|---|---|---|
cob_value |
String |
Não | Valor da cobrança informada pelo usuário, caso não seja preenchido (null), a interface solicitará o valor. O valor deve ser enviado no formato númerico com duas casas decimais, como mostra no exemplo Request |
||
pix_client_id |
String |
Sim | O pix_client_id é um identificador único utilizado pelo app de integração para identificar as cobranças criadas. Ele suporta até 36 caracteres. | ||
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 (PaymentCallback)
| 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 cobCreateService(
pixClient: PixClient,
value: String?,
pixClientId: String,
previewCustomerReceipt: Boolean,
previewMerchantReceipt: Boolean,
printCustomerReceipt: Boolean,
printMerchantReceipt: Boolean,
context: Context,
viewModel: CobCreateViewModel
) {
val gson: Gson = Gson()
if (pixClient.isBound()) {
val createCobRequest =
CreateCobRequest(value, pixClientId, previewCustomerReceipt, previewMerchantReceipt, printCustomerReceipt, printMerchantReceipt)
val callback = object : PixClient.StartPixPaymentCallback {
override fun onError(response: String?) {
println("Pagamento error: $response")
if (response != null) {
val responseError = gson.fromJson(response, PixErrorResponse::class.java)
showAlertDialog(context, responseError.errorMessage)
} else {
showAlertDialog(context, "")
}
viewModel.resetFields()
}
override fun onSuccess(response: String?) {
val pixResponse = gson.fromJson(response, PixResponse::class.java)
println("Pagamento: $pixResponse")
if (pixResponse != null && pixResponse.status == ChargeStatus.REMOVED_BY_USER ) {
Toast.makeText(context, R.string.payment_cancelled, Toast.LENGTH_SHORT).show()
} else {
Toast.makeText(context, R.string.payment_successfully_made, Toast.LENGTH_SHORT)
.show()
}
viewModel.resetFilds()
}
}
pixClient.startPixPayment(
gson.toJson(createCobRequest),
callback
)
}
}
fun showAlertDialog(context: Context, message: String) {
val builder = AlertDialog.Builder(context)
builder.setTitle(R.string.cob_gen)
builder.setMessage(message)
builder.setPositiveButton("OK") { dialog, _ ->
dialog.dismiss()
}
val dialog = builder.create()
dialog.show()
}
Exemplo da classe CreateCobRequest:¶
data class CreateCobRequest(
@SerializedName("cob_value")
val cobValue: String?,
@SerializedName("pix_client_id")
val pixClientId: 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
)
Exemplo da classe ChargeStatus:¶
enum class ChargeStatus(private val value: String) {
@SerializedName("ATIVA")
ACTIVE("ATIVA"),
@SerializedName("CONCLUIDA")
CONCLUDED("CONCLUIDA"),
@SerializedName("DEVOLVIDO")
REFUNDED("DEVOLVIDO"),
@SerializedName("EM_PROCESSAMENTO")
REFUND_PROCESSING("EM_PROCESSAMENTO"),
@SerializedName("NAO_REALIZADO")
REFUND_NOT_DONE("NAO_REALIZADO"),
@SerializedName("REMOVIDA_PELO_USUARIO_RECEBEDOR")
REMOVED_BY_USER("REMOVIDA_PELO_USUARIO_RECEBEDOR"),
@SerializedName("REMOVIDA_PELO_PSP")
REMOVED_BY_PSP("REMOVIDA_PELO_PSP"),
@SerializedName("EXPIRADA")
EXPIRED("EXPIRADA"),
UNKNOWN("UNKNOWN");
fun getValue(): String {
return value
}
}
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
)