Configurar Alipay e WeChat QR
Este guia explica como integrar o Alipay e o WeChat Pay utilizando fluxos baseados em QR Code. Em vez de ler um cartão físico, o cliente apresenta um código QR que seu TPV escaneia e envia ao Get Smart SDK Payment Service através do repositório correspondente.
Antes de usar esses métodos de pagamento alternativos (APMs), certifique-se de que o TPV foi inicializado com InitializationRepository.initTpv() e que cada método está habilitado na configuração do terminal.
Alipay
Para processar pagamentos Alipay, utilize o AlipayRepository. O fluxo típico é:
- O cliente apresenta um código QR do Alipay.
- Seu app escaneia o código e extrai o
qrId. - Você chama
makePaymentnoAlipayRepositorycom o valor e os dados do QR.
Repositório
- Repositório:
AlipayRepository
Pagamento Alipay
Função: makePayment
Parâmetros:
amount: O objetoMoney.tip: O valor da gorjeta (pode ser zero ou omitido).qrId: A string do código escaneado do QR do cliente.transactionName: Um rótulo para a transação.qrIdType: O tipo de código QR (ex:QrIdType.ALIPAY).languageIso6391: Idioma da interface do serviço.
Restrição de Ambiente de Teste: No ambiente de integração/teste, os pagamentos Alipay só são aceitos se o valor for exatamente 3,33€.
suspend fun pagarComAlipay(amount: Money, scannedQr: String) {
val result = alipayRepository.makePayment(
amount = amount,
tip = Money(BigDecimal.ZERO, Currency.getInstance("EUR")),
qrId = scannedQr,
transactionName = "Venda #123",
qrIdType = QrIdType.ALIPAY,
languageIso6391 = LanguageIso6391.PT
)
// Trate o RepositoryResult<AlipayResult> aqui...
}Estorno Alipay
Função: makeRefund
suspend fun estornarAlipay(amount: Money, originalId: String) {
val result = alipayRepository.makeRefund(
amount = amount,
originalOperationId = originalId,
languageIso6391 = LanguageIso6391.PT
)
}WeChat Pay
Para processar pagamentos WeChat, utilize o WeChatRepository. O fluxo é similar ao Alipay e também depende do escaneamento do código QR do cliente.
Repositório
- Repositório:
WeChatRepository
Pagamento WeChat
Função: makePayment
Testar o WeChat no ambiente de integração pode ser limitado devido à falta de um kit de teste do provedor.
suspend fun pagarComWeChat(amount: Money, scannedQr: String) {
val result = weChatRepository.makePayment(
amount = amount,
tip = Money(BigDecimal.ZERO, Currency.getInstance("EUR")),
qrId = scannedQr,
transactionName = "Venda #124",
languageIso6391 = LanguageIso6391.PT
)
}Próximos Passos
- Para métodos baseados em número de telefone, consulte Configurar Pagamentos Bizum.
- Para entender o tratamento de erros compartilhado, veja Conceitos Principais / Tratar Respostas e Erros.