Transferencia de la solicitud de pago

El servidor del vendedor recibe una solicitud de pago de la aplicación móvil y debe transmitirla a la plataforma de pago.

Para ello, el sitio del vendedor genera un formulario de pago HTML que luego enviará a la plataforma de pago.

La integridad de los datos intercambiados está protegida por un intercambio de firmas alfanuméricas entre la plataforma de pago y el sitio web del vendedor.

El servidor del vendedor transmite la firma alfanumérica en el formulario de pago (consultar capítulo Calcular la firma de la Guía de implementación de la API de formularios disponible en nuestro sitio de documentación).

IMPORTANTE

Todos los datos del formulario deben estar codificados en UTF-8.

De esta forma, los caracteres especiales (acentos, puntuación, etc.) serán interpretados correctamente por la plataforma de pago.

En el caso contrario, el cálculo de la firma será erróneo y el formulario será rechazado.

  1. Creación del formulario de pago

    Para crear el formulario de pago:
    1. Utilice todos los campos presentes en el cuadro para crear la solicitud de pago.
      Nombre del campo Descripción Formato Valor
      vads_site_id Identificación de la tienda n8 Ejemplo: 12345678
      vads_currency Código numérico de la moneda que se utilizará para el pago, según la norma ISO 4217 (código numérico) n3 Ejemplo: 978 para el euro (EUR)
      vads_amount Monto del pago en su unidad monetaria más pequeña (el centavo para el euro) n..12 Ejemplo: 3000 para 30,00 euro
      vads_cust_email Dirección de correo electrónico del comprador ans..150 Ejemplo: abc@example.com
      vads_payment_cards Tipo de tarjeta. String Ejemplo: VISA

      (Consulte la Guía de implementación de la API de formularios para la lista de valores posibles).

      vads_order_id Número del pedido ans..64 Ejemplo: 2-XQ001
      vads_version Versión del protocolo de intercambio con la plataforma de pago enum V2
      vads_theme_config Permite aumentar el desempeño al desactivar elementos de la página de pago como el selector de idioma, los logotipos de la parte inferior de la página, etc. map

      SIMPLIFIED_DISPLAY=true

      vads_trans_date Fecha y hora del formulario de pago en el huso horario UTC n14

      Respete el formato AAAAMMDDhhmmss

      Ejemplo: 20170701130025
      vads_trans_id Número de la transacción n6 Ejemplo: 123456
      vads_payment_config Tipo de pago enum SINGLEpara un pago único

      MULTI para un pago en cuotas

      vads_page_action Acción a realizar enum PAYMENT
      vads_ctx_mode Adquisición de los datos en la plataforma de pago enum TEST oPRODUCTION
      vads_action_mode Modo de adquisición de los datos de la tarjeta enum INTERACTIVE
      signature Firma que garantiza la integridad de las solicitudes intercambiadas entre el sitio web vendedor y la plataforma de pago. ans44 Ejemplo:

      NrHSHyBBBc+TtcauudspNHQ5cYcy4tS4IjvdC0ztFe8=

    2. Utilice los campos a continuación para gestionar el regreso a la aplicación móvil al final del pago.

      Un pago puede terminar en 4 estados diferentes:

      • Pago aceptado

      • Pago denegado

      • Pago en error

      • Pago abandonado por el comprador

      Debe asociar una URL a cada estado:

      Nombre del campo Descripción Formato Valor
      vads_url_success

      URL donde se redirigirá al comprador si el pago es exitoso.

      ans..1024 Ejemplo:

      http://webview.success

      vads_url_refused

      URL donde se redirigirá al comprador si el pago es denegado.

      ans..1024 Ejemplo:

      http://webview.refused

      vads_url_cancel

      URL donde se redirigirá al comprador en caso de abandono o expiración (timeout).

      ans..1024 Ejemplo:

      http://webview.cancel

      vads_url_error

      URL donde se redirigirá al comprador en caso de error.

      ans..1024 Ejemplo:

      http://webview.error

    3. Utilice los campos a continuación para configurar los plazos de redirección a la aplicación móvil al final del pago.
      Tabla 1. Lista de campos opcionales disponibles.
      Nombre del campo Descripción Formato
      vads_redirect_success_timeout

      Define el plazo de espera antes del redirección, luego de un pago exitoso.

      Este plazo se expresa en segundos y debe estar entre 0 y 300 segundos.

      Asigne a este campo el valor “0” para no mostrar el recibo del pago y redirigir automáticamente al comprador a la aplicación móvil.

      n..3
      vads_redirect_error_timeout

      Define el plazo de espera antes del redirección, luego de un pago denegado.

      Este plazo se expresa en segundos y debe estar entre 0 y 300 segundos.

      Asigne a este campo el valor “0” para no mostrar la página de rechazo del pago y redirigir automáticamente al comprador a la aplicación móvil.

      n..3

    4. Agregue los demás campos opcionales en función de sus necesidades (consultar capítulo Utilizar funciones complementarias de la Guía de implementación de la API de formularios disponible en nuestro sitio de documentación).

    5. Consulte el capítulo Calcular la firma de la Guía de implementación de la API de formularios y calcule el valor del camposignature.

  2. Envío de la solicitud de pago

    La API de creación del pago está disponible en modo POST en la siguiente dirección:

    https://secure.payzen.eu/vads-payment/entry.silentInit.a

    IMPORTANTE
    La URL de la API de creación de pago es distinta de la URL de la página de pago, tal como se describe en la Guía de implementación de la API de formularios.

    Extracto del código de ejemplo:

    List<NameValuePair> formParameters = new ArrayList<>();
    									
    formParameters.add(new BasicNameValuePair("vads_action_mode", "INTERACTIVE"));
    formParameters.add(new BasicNameValuePair("vads_amount", amount));
    formParameters.add(new BasicNameValuePair("vads_ctx_mode", mode));
    formParameters.add(new BasicNameValuePair("vads_currency", currency));
    if (StringUtils.isNotEmpty(email)) {
    formParameters.add(new BasicNameValuePair("vads_cust_email", email));
    }
    
    formParameters.add(new BasicNameValuePair("vads_language", language));
    if (StringUtils.isNotEmpty(orderId)) {
    	formParameters.add(new BasicNameValuePair("vads_order_id", orderId));
    }
    formParameters.add(new BasicNameValuePair("vads_page_action", "PAYMENT"));
    
    //Set the card type if provided
    if (StringUtils.isNotEmpty(cardType)) {
    	formParameters.add(new BasicNameValuePair("vads_payment_cards", cardType.toUpperCase()));
    }
    formParameters.add(new BasicNameValuePair("vads_payment_config", "SINGLE"));
    formParameters.add(new BasicNameValuePair("vads_site_id", merchantSiteId));
    formParameters.add(new BasicNameValuePair("vads_theme_config", "SIMPLIFIED_DISPLAY=true"));
    formParameters.add(new BasicNameValuePair("vads_trans_date", calculateDateFormatInUTC("yyyyMMddHHmmss")));
    formParameters.add(new BasicNameValuePair("vads_trans_id", String.format("%06d", transactionId)));
    formParameters.add(new BasicNameValuePair("vads_url_cancel", "http://webview_" + merchantSiteId + ".cancel"));
    formParameters.add(new BasicNameValuePair("vads_url_error", "http://webview_" + merchantSiteId + ".error"));
    formParameters.add(new BasicNameValuePair("vads_url_refused", "http://webview_" + merchantSiteId + ".refused"));
    formParameters.add(new BasicNameValuePair("vads_url_return", "http://webview_" + merchantSiteId + ".return"));
    formParameters.add(new BasicNameValuePair("vads_url_success", "http://webview_" + merchantSiteId + ".success"));
    formParameters.add(new BasicNameValuePair("vads_version", "V2"));
    
    //Create the string to sign
    String concatenateMapParams = "";
    for (NameValuePair pair : formParameters) {
    	concatenateMapParams += pair.getValue() + "+";
    }
    //Add private key in signature
    concatenateMapParams += usedMerchantKey;
    
    //Add signature to form parameters
    formParameters.add(new BasicNameValuePair("signature", hmacSha256(concatenateMapParams, usedMerchantKey)));