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:

  1. Crear un nuevo módulo a partir del fichero .AAR dentro de nuestro proyecto (File-> New Module Import .JAR or .AAR Package).


  2. En el build.gradle de nuestro proyecto añadiremos la siguiente compile project(path: ':sdkinapp-library') en el apartado de dependencies.
  3. 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'								
    								
    					  		
  4. 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"/>
    									
    								
  5. 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'