Configurar Alipay y WeChat QR
Esta guía explica cómo integrar Alipay y WeChat Pay mediante flujos basados en QR. En lugar de leer una tarjeta física, el cliente presenta un código QR que tu TPV escanea y envía al Get Smart SDK Payment Service a través del repositorio correspondiente.
Antes de utilizar estos métodos de pago alternativos (APM), asegúrate de que el TPV esté inicializado con InitializationRepository.initTpv() y que cada método esté habilitado en la configuración del terminal.
Alipay
Para procesar pagos de Alipay, utiliza el AlipayRepository. El flujo típico es:
- El cliente presenta un código QR de Alipay.
- Tu aplicación escanea el código y extrae el
qrId. - Llamas a
makePaymentenAlipayRepositorycon el importe y los datos del QR.
Repositorio
- Repositorio:
AlipayRepository
Pago con Alipay
Función: makePayment
Restricción del entorno de prueba: En el entorno de integración/prueba, los pagos de Alipay solo se aceptan si el importe es exactamente 3,33€.
suspend fun payWithAlipay(amount: Money, scannedQr: String) {
val result = alipayRepository.makePayment(
amount = amount,
tip = Money(BigDecimal.ZERO, Currency.getInstance("EUR")),
qrId = scannedQr,
transactionName = "Sale #123",
qrIdType = QrIdType.ALIPAY,
languageIso6391 = LanguageIso6391.ES
)
// Handle RepositoryResult<AlipayResult> here...
}Devolución con Alipay
Función: makeRefund
Parámetros:
amount: Importe a devolver.originalOperationId: El ID del pago original con Alipay.languageIso6391: Idioma de la interfaz.
suspend fun refundAlipay(amount: Money, originalId: String) {
val result = alipayRepository.makeRefund(
amount = amount,
originalOperationId = originalId,
languageIso6391 = LanguageIso6391.ES
)
// Handle RepositoryResult<AlipayResult> here...
}WeChat Pay
Para procesar pagos de WeChat, utiliza el WeChatRepository. El flujo es similar al de Alipay y también se basa en el escaneo del código QR del cliente.
Repositorio
- Repositorio:
WeChatRepository
Pago con WeChat
Función: makePayment
suspend fun payWithWeChat(amount: Money, scannedQr: String) {
val result = weChatRepository.makePayment(
amount = amount,
tip = Money(BigDecimal.ZERO, Currency.getInstance("EUR")),
qrId = scannedQr,
transactionName = "Sale #124",
languageIso6391 = LanguageIso6391.ES
)
// Handle RepositoryResult<WeChatResult> here...
}Devolución con WeChat
Función: makeRefund
Parámetros:
amount: Importe a devolver.originalOperationId: El ID del pago original con WeChat.languageIso6391: Idioma de la interfaz.
suspend fun refundWeChat(amount: Money, originalId: String) {
val result = weChatRepository.makeRefund(
amount = amount,
originalOperationId = originalId,
languageIso6391 = LanguageIso6391.ES
)
// Handle RepositoryResult<WeChatResult> here...
}Próximos pasos
- Para métodos basados en número de teléfono, consulta Configurar Pagos Bizum.
- Para comprender la gestión de respuestas compartidas, consulta Conceptos clave / Tratar Respuestas y Errores.