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).

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.
      Nom du champ Description Format Valeur
      vads_site_id Identifiant de la boutique n8 Ex : 12345678
      vads_currency Code numérique de la monnaie à utiliser pour le paiement, selon la norme ISO 4217 (code numérique) n3 Ejemplo: 978 para el euro (EUR)
      vads_amount Montant du paiement dans sa plus petite unité monétaire (el centavo para el euro) n..12 Ejemplo: 3000 para 30,00 euro
      vads_cust_email Adresse e-mail de l’acheteur ans..150 Ex: 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 Numéro de commande ans..64 Ex : 2-XQ001
      vads_version Version du protocole d’échange avec la plateforme de paiement 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 Date et heure du formulaire de paiement dans le fuseau horaire UTC n14

      Respectez le format AAAAMMJJhhmmss

      Ex : 20170701130025
      vads_trans_id Numéro de la transaction n6 Ex : 123456
      vads_payment_config Type de paiement enum SINGLE pour un paiement en 1 fois

      MULTI pour un paiement en plusieurs fois

      vads_page_action Action à réaliser enum PAYMENT
      vads_ctx_mode Mode de communication avec la plateforme de paiement enum TEST ou PRODUCTION
      vads_action_mode Mode d’acquisition des données de la carte enum INTERACTIVE
      signature Signature garantissant l'intégrité des requêtes échangées entre le site marchand et la plateforme de paiement. 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:

      Nom du champ Description Format Valeur
      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

    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)));