PAGO INAPP - Android
En esta sección vamos a explicar como realizar la integración inApp y cuales funcionalidades disponibles del framework TPVV para el sistema operativo android.
Configuración
Para realizar este tipo de integración, es necesario tener una configuración previa. En primer lugar, integrar la libreria en Android Studio:
- Crear un nuevo módulo a partir del fichero .AAR dentro
de nuestro proyecto (File-> New Module Import .JAR or .AAR
Package).
- En el build.gradle de nuestro proyecto añadiremos la siguiente compile project(path: ':sdkinapp-library') en el apartado de dependencies.
- Configuración de dependencias:
compile project(path: ':sdkinapp-library') compile 'com.google.code.gson:gson:2.8.2' compile 'com.android.volley:volley:1.1.0' compile 'com.android.support:appcompat-v7:26.0.1' compile 'com.android.support.constraint:constraint-layout:1.0.2' compile 'com.android.support:cardview-v7:26.0.1' compile 'com.android.support:design:26.0.1' compile 'com.android.support:support-v4:26.0.1' compile 'com.android.support:support-vector-drawable:26.0.1'
- En el fichero “AndroidManifest.xml” de la aplicación que
hace uso de la misma, debe declararse el siguiente permiso:
<uses-permission android:name="android.permission.INTERNET"/>
- Configuración de parámetros:
Parámetro Configuración Tipo Descripción Licencia de la aplicación TPVVConfiguration.setLicense("XXXXXXXXXX"); Obligatorio Es un código alfanumérico proporcionado por Redsys para validar las aplicaciones que hacen uso de la librería. Entorno TPVVConfiguration.setEnvironment(TPVVConstants.ENVIRONMENT_REAL);
TPVVConfiguration.setEnvironment(TPVVConstants.ENVIRONMENT_TEST);Obligatorio Entorno donde va a realizarse la integración. El valor utilizado dependerán del entorno donde quiera realizarse la integración: test o real. Fuc del comercio TPVVConfiguration.setFuc("XXXXXXXXX"); Obligatorio Código de identificación del comercio: Terminal TPVVConfiguration.setTerminal("XXX"); Obligatorio El terminal registrado para realizar el pago Código moneda TPVVConfiguration.setCurrency("978"); Obligatorio Código de la moneda utilizada, por defecto "978" corresponde a euros Nombre del titular TPVVConfiguration.setTitular("XXX"); Opcional Nombre del titular del pago Métodos de Pago: TPVVConfiguration.setPaymentMethods("TPVVConstants.PAYMENT_METHOD_T"); Opcional Forma de pago con tarjeta(Aplica para el pago a través de WebView). Posibles valores: - PAYMENT_METHOD_T : pago por tarjeta
- PAYMENT_METHOD_R : pago por transferencia
- PAYMENT_METHOD_D : pago por domiciliación
- PAYMENT_METHOD_P : pago con PayPal:
- PAYMENT_METHOD_Z : pago con Bizum
Url del comercio TPVVConfiguration.setMerchantUrl("XXX"); Opcional Url del comercio Nombre del comercio TPVVConfiguration.setMerchantName("XXX"); Opcional Nombre del comercio Datos adicionales TPVVConfiguration.setMerchantData("XXX"); Opcional En este campo, el comercio puede introducir aquellos datos que considere oportunos (referencias internas, datos propios del negocio). Tras el pago, este campo se le devolverá en la notificación al comercio. Descripción del comercio TPVVConfiguration.setMerchantDescriptor("XXX"); Opcional Descripción del comercio. Grupo de comercios TPVVConfiguration.setGroup("XXX"); Opcional En el caso en el que el comercio pertecezca a un grupo de comercios
Pago Directo
Las operaciones de pago directo, se realizan mediante la aplicacion nativa disponible para los sistemas operativos Android. Este tipo de pago soporta tanto pagos normales como pagos por referencia.
Para realizar un pago directo es necesario haber configurado previamente los parámetros obligatorios en el objeto TPVVConfiguration. Tras fijar éstos parámetros, en cada pago es necesario indicar los siguientes campos:
TPVV.doDirectPayment(this, "numeroDePedido", importe ,"tipoOperación", "referencia", "Descripcion", new IPaymentResult() {
@Override public void paymentResultOK(ResultResponse response) {
}
@Override public void paymentResultKO(ErrorResponse error) { }
}
);
-
String numeroPedido: Código alfanumérico identificativo de la operación (debe ser único) (obligatorio).
-
Double importe: Importe de la operación. Ej. Double.valueOf(3050) equivale a una operación de 30,50€(obligatorio).
-
String tipoOperación: Utilizando las constantes definidas en TPVVConstants (obligatorio).
- Normal: TPVVConstants.PAYMENT_TYPE_NORMAL
- Preautorización: TPVVConstants.PAYMENT_TYPE_PREAUTHORIZATIONli>
- Tradicional: TPVVConstants.PAYMENT_TYPE_TRADITIONAL
- Autenticación: TPVVConstants.PAYMENT_TYPE_AUTHENTICATION
-
String reference: En caso de tener un valor nulo realiza un pago normal, para realizar un pago con solicitud de referencia hay se debe utilizar el valor TPVVConstants.REQUEST_REFERENCE, y para realizar una operación con referencia esta debe añadirse como String
-
String descripción: Descripción del pago (opcional).
-
HashMap <String, String >: Tabla hash con clave-valor para introducir variables adicionales que no están contempladas en el SDK. (opcional).
Personalización
Es posible personalizar algunos aspectos de la pantalla del pago directo tales como el logo, fondo de pantalla, colores y literales.
Para llevar a cabo la configuración de la pantalla del pago directo se hace uso del objeto del tipo UIDirectPaymentConfig.. Son personalizables los siguientes elementos de la pantalla.
-
Logo (logo)
-
Color de la barra de progreso (progressBarColor)
-
Color de fondo de la pantalla (backgroundColor)
-
Texto y color del texto y color de fondo de la cabecera de la tarjeta (cardHeadText, cardHeadTextColor, cardHeadBackgroundTextColor)
-
Texto de informativo y de error para el campo del número de tarjeta: (cardText, cardTextColor)
-
Texto de informativo y de error para el campo de la caducidad (expiryText y expiriTextError)
-
Texto de informativo y de error para el campo del CVV (cvvText y cvvTextError)
-
Texto, color y color del texto del botón (btnText, btnTextColor y btnColor)
-
Texto y color de fondo del texto descriptivo (infoText y infoTextColor)
Ejemplo de personalización:
Bitmap bm = BitmapFactory.decodeResource(getResources(), R.drawable.android_logo);
uiDirectPaymentConfig.setLogo(bm);
uiDirectPaymentConfig.setProgressBarColor("#FFFF0000");
uiDirectPaymentConfig.setTopBarColor("#FFFF0000");
uiDirectPaymentConfig.setBackgroundColor("#7792E484");
uiDirectPaymentConfig.setCardHeadText("INFORMACION TARJETA");
uiDirectPaymentConfig.setCardHeadTextColor("#FFFFFF");
uiDirectPaymentConfig.setCardHeadTextBackgroundColor("#FFFF0000");
uiDirectPaymentConfig.setCardText("TARJETA");
uiDirectPaymentConfig.setCardTextError("ERROR TARJETA");
uiDirectPaymentConfig.setExpiryText("CADUCIDAD");
uiDirectPaymentConfig.setExpiryTextError("CADUCIDAD ERROR");
uiDirectPaymentConfig.setCvvText("CVV CODE");
uiDirectPaymentConfig.setCvvTextError("CVV ERRROR");
uiDirectPaymentConfig.setBtnText("BOTON");
uiDirectPaymentConfig.setBtnTextColor("#FFFFFF");
uiDirectPaymentConfig.setBtnBackgroundColor("#FFFF0000");
uiDirectPaymentConfig.setInfoText("TEXTO DESCRIPCION");
uiDirectPaymentConfig.setInfoTextColor("#FFFF0000");
TPVVConfiguration.setUiDirectPaymentConfig(uiDirectPaymentConfig);
Pago WebView
Las operaciones de pago WebView, se realizan mediante la propia web del comercio, con la única diferencia de que la vista se encuentra adaptada para dispositivos móviles. Este tipo de pago soporta tanto pagos normales como pagos por referencia.
TPVV.doWebViewPayment(this, "numeroDePedido", importe ,"tipoOperación", "referencia", "Descripcion", new IPaymentResult() {
@Override public void paymentResultOK(ResultResponse response) {
}
@Override public void paymentResultKO(ErrorResponse error) { }
}
);
-
String numeroPedido: Código alfanumérico identificativo de la operación (debe ser único) (obligatorio).
-
Double importe: Importe de la operación. Ej. Double.valueOf(3050) equivale a una operación de 30,50€(obligatorio).
-
String tipoOperación: Utilizando las constantes definidas en TPVVConstants (obligatorio).
- Normal: TPVVConstants.PAYMENT_TYPE_NORMAL
- Preautorización: TPVVConstants.PAYMENT_TYPE_PREAUTHORIZATIONli>
- Tradicional: TPVVConstants.PAYMENT_TYPE_TRADITIONAL
- Autenticación: TPVVConstants.PAYMENT_TYPE_AUTHENTICATION
-
String reference: En caso de tener un valor nulo realiza un pago normal, para realizar un pago con solicitud de referencia hay se debe utilizar el valor TPVVConstants.REQUEST_REFERENCE, y para realizar una operación con referencia esta debe añadirse como String
-
String descripción: Descripción del pago (opcional).
-
HashMap <String, String >: Tabla hash con clave-valor para introducir variables adicionales que no están contempladas en el SDK. (opcional).
En el caso del WebView además es posible configurar el idioma y las url de resultado en caso de que la operación se haya realizado correctamente o con algún error.
Idioma: Para los lenguajes hay que indicar un código de idioma válido, en caso de no indicar nada se configura por defecto en español.
TPVVConfiguration.setLanguage(language).
Redirección a las URl de resultado: Existe la posibilidad de redireccionar a una URL definida por el desarrollador tras realizar la operación. Una para el caso en que la operación se realice correctamente y otra en caso de error.
TPVVConfiguration.setEnableRedirection(true);
TPVVConfiguration.setUrlOK(urlOK);
TPVVConfiguration.setUrlKO(urlKO);
Alerta resultado: Se ha añadido la posibilidad de mostrar una alerta indicando el resultado de la operación una vez se ha realizado la redirección a la web configurada por el desarrollador.
TPVVConfiguration.setEnableResultAlert(true);
TPVVConfiguration.setResultAlertTextButtonOk("Continuar");
TPVVConfiguration.setResultAlertTextButtonKo("Continuar");
TPVVConfiguration.setResultAlertTextOk("Operación realizada correctamente");
TPVVConfiguration.setResultAlertTextKo("Error al intentar realizar la operación");
Respuesta de la operación
En función del resultado de la operación recibiremos un objeto ResultResponse con los datos de la operación o un objeto del tipo ErrorResponse con el código de error y la descripción.
ResultResponse
String Amount: Cantidad
String currency: Moneda
String order: Número de pedido
String merchantCode: FUC
String terminal: Número de terminal
String responseCode: Código de la respuesta
String authorisationCode: Código de autorización
String transactionType: Tipo de transacción
String securePayment: Pago seguro
String language: Idioma
String cardNumber: Número de la tarjeta
String cardType: Tipo de tarjeta
String merchantData: Datos del comercio
String cardCountry: País de origen de la tarjeta
String date: Fecha* (Solo aplica a pago a través de WebView)
String hour: Hora* (Solo aplica a pago a través de WebView)
String identifier: Referencia
String signature: Firma
String cardBrand: Marca de la tarjeta
String expiryDate: Caducidad de la tarjeta
String extraParams: Parámetros extra que se han recibido en la respuesta en formato JSON
ErrorResponse
String code: 'Código de error'
String Desc: 'Descripción'
Código | Descripción |
---|---|
11 | La firma del mensaje no es correcta |
29 | Fallo en la criptografía del servicio |
31 | La aplicación es incorrecta |
60 | Formato de JSON incorrecto |
61 | Error al obtener la clave de firma del comercio |
62 | Tipo de firma del terminal no soportado |
78 | Error propio del TPV virtual de Redsys (Código SIS en la descripción) |
5548 | Error genérico (Detalles en la descripción) |
5550 | Error de conexión (Detalles en la descripción) |
5551 | Sin parámetros en la respuesta |