• Francia
página de estado
demo
asistencia
FAQContacte el soporte tecnico
Buscar
Categoria
Tags
España
Francia
España
Europa (Inglés)
India
Página principal
Casos de uso
Crear un pago
Crear un pago en vencimientos
Crear un pago multitarjeta
Crear un pago por token
Crear un enlace de pago
Crear una suscripción
Gestione sus suscripciones
Gestione sus transacciones
Analizar los diarios
Docs API
Formulario incrustado
API REST
Formulario en redirección
Pago móvil
Intercambio de ficheros
Ejemplo de código
Medios de pago
Plugins
Guías
Back office Experto
Guías funcionales

Realizar un pago al envío

Contexto

El pago al envío es una nueva funcionalidad que se rige según la DSP2 (segunda Directiva sobre servicios de pago). El vendedor puede realizar varios envíos para un mismo pedido en un plazo máximo de 180 días.

Casos de uso

El pago al envío funciona por etapas:

1. Transacción inicial

Al tomar el pedido, cree una transacción inicial con el servicio web Charge/CreatePayment .

  • campoamountcon el monto total del pedido.
  • campocurrencycon la divisa del pago según la norma ISO 4217 alpha-3.
  • campouseCasecon el valorSHIPMENT_MULTIPLE_AUTHORISATION.

La plataforma de pago crea una transacción de verificación con una validez de 180 días. El comprador se autentifica por el monto total del pedido, sin embargo, su tarjeta no se debita de inmediato.

2. Transacción de envío

Para cada disparador de envío, cree una transacción de envío con el servicio web Charge/CreateShipmentTransaction asociado con la transacción inicial.

  • campouuid: referencia única de la transacción inicial.
  • campoamount: monto total de los artículos expedidos.

La plataforma crea una transacción de débito. por el monto de los artículos expedidos.

Se debita al comprador solamente al capturar la transacción de envío.

Esquema

Cinemática de pago

Ejemplo

  • El comprador pide 3 productos (35 EUR, 25 EUR y 14,12 EUR), por un monto total de 72,12 EUR.

  • Si los 3 productos no están disponibles, el vendedor puede realizar un pago al envío con autorizaciones múltiples.

    El comprador se autentifica por el monto total de la compra (72,12 €) cuando se crea la transacción inicial, pero se le debita a cada envío.

    Luego, utilizará la transacción inicial (el pago realizado por el comprador) para crear una nueva transacción cada vez que se active el envío. Por ejemplo:

    • Tres días después de realizar el pedido, se activa el envío del producto n.º 1. A continuación, se crea una transacción de envío por 35 EUR. Se le cobrarán 35 EUR al comprador.
    • Diez días después de realizar el pedido, se activa el envío del producto n.º 2. Se crea una nueva transacción de envío por 25 EUR. Se cobrarán otros 25 EUR al comprador.
    • 20 días después de realizar el pedido, se activa el envío del producto n.º 3. A continuación, se crea una transacción de envío por 14,12 EUR. Se cargarán al comprador los 14,12 EUR restantes.

    Si la transacción se realiza en la red CB, las tres transacciones se beneficiarán de una garantía de pago porque el envío se realizó dentro de los 30 días siguientes al pedido.

Solicitud

Ejemplo de una transacción inicial

Campos obligatorios:

  • Monto: 72,12 €
  • Casos de uso:AUTORIZACIÓN_MÚLTIPLE_DE_ENVÍO para solicitar múltiples autorizaciones.

. Campos recomendados:

  • Referencia del pedido: "myOrder-1234-initial".
  • Correo electrónico del comprador: " sample@example.com ".
/es/rest/V4.0/api/kb/authentication.html
https://api.lyra.com/api-payment/V4/Charge/CreatePayment
    {
        "amount": 7212,
        "currency": "EUR",
        "customer": {
          "email": "sample@example.com"
        },
        "orderId": "myOrder-1234-initial",
        "useCase": "SHIPMENT_MULTIPLE_AUTHORISATION"
      }
<!-- <pre data-language="json" data-market="es-PE">&#010;{&#010;    &quot;amount&quot;: 200050,&#010;    &quot;currency&quot;: &quot;PEN&quot;,&#010;    &quot;orderId&quot;: &quot;myOrderId-999999&quot;,    &#010;    &quot;channelOptions&quot;: {&#010;      &quot;channelType&quot;: &quot;MAIL&quot;,&#010;      &quot;mailOptions&quot;: {&#010;        &quot;recipient&quot;: &quot;sample@example.com&quot;&#010;      }&#010;    },&#010;    &quot;paymentReceiptEmail&quot;: &quot;sample@example.com&quot;,&#010;    &quot;expirationDate&quot;: &quot;2020-04-20T20:13:26+02:00&quot;,&#010;    &quot;locale&quot;: &quot;es_PE&quot;,&#010;    &quot;dataCollectionForm&quot;: &quot;false&quot;&#010;}&#010;</pre>
{
    "amount": 200050,
    "currency": "ARS",
    "orderId": "myOrderId-999999",    
    "channelOptions": {
      "channelType": "MAIL",
      "mailOptions": {
        "recipient": "sample@example.com"
      }
    },
    "paymentReceiptEmail": "sample@example.com",
    "expirationDate": "2020-04-20T20:13:26+02:00",
    "locale": "es_AR",
    "dataCollectionForm": "false"
}
{
    "amount": 200050,
    "currency": "COP",
    "orderId": "myOrderId-999999",   
    "channelOptions": {
      "channelType": "MAIL",
      "mailOptions": {
        "recipient": "sample@example.com"
      }
    },
    "paymentReceiptEmail": "sample@example.com",
    "expirationDate": "2020-04-20T20:13:26+02:00",
    "locale": "es_CO",
    "dataCollectionForm": "false"
}
{
    "amount": 200050,
    "currency": "BRL",
    "orderId": "myOrderId-999999",   
    "channelOptions": {
      "channelType": "MAIL",
      "mailOptions": {
        "recipient": "sample@example.com"
      }
    },
    "paymentReceiptEmail": "sample@example.com",
    "expirationDate": "2020-04-20T20:13:26+02:00",
    "locale": "pt_BR",
    "dataCollectionForm": "false"
}
-->
/**
 * I initialize the PHP SDK
 */
require_once __DIR__ . '/vendor/autoload.php';
require_once __DIR__ . '/keys.php';
require_once __DIR__ . '/helpers.php';

/** 
 * Initialize the SDK 
 * see keys.php
 */
$client = new Lyra\Client();

/**
 * I create a formToken
 */
$store = array("amount" => 250, 
"currency" => "EUR", 
"orderId" => uniqid("MyOrderId"),
"customer" => array(
  "email" => "sample@example.com"
));
$response = $client->post("V4/Charge/CreatePayment", $store);

/* I check if there are some errors */
if ($response['status'] != 'SUCCESS') {
    /* an error occurs, I throw an exception */
    display_error($response);
    $error = $response['answer'];
    throw new Exception("error " . $error['errorCode'] . ": " . $error['errorMessage'] );
}

/* everything is fine, I extract the formToken */
$formToken = $response["answer"]["formToken"];

?>
/**
 * I initialize the PHP SDK
 */
require_once __DIR__ . '/vendor/autoload.php';
require_once __DIR__ . '/keys.php';
require_once __DIR__ . '/helpers.php';

/** 
 * Initialize the SDK 
 * see keys.php
 */
$client = new Lyra\Client();

/**
 * I create a formToken
 */
$store = array("amount" => 250, 
"currency" => "EUR", 
"orderId" => uniqid("MyOrderId"),
"customer" => array(
  "email" => "sample@example.com"
));
$response = $client->post("V4/Charge/CreatePayment", $store);

/* I check if there are some errors */
if ($response['status'] != 'SUCCESS') {
    /* an error occurs, I throw an exception */
    display_error($response);
    $error = $response['answer'];
    throw new Exception("error " . $error['errorCode'] . ": " . $error['errorMessage'] );
}

/* everything is fine, I extract the formToken */
$formToken = $response["answer"]["formToken"];

?>

Para ver todos los campos y su descripción, consulte el playground: Charge/CreatePayment (menú a la izquierda).

Respuesta

Recupere el formToken para mostrar el formulario de pago (Más información: Paso 4: Mostrar el formulario de pago )

El comprador autentica el importe total del pedido, pero el cargo en la tarjeta no se realizará inmediatamente. La plataforma de pago crea una transacción de verificación con una validez de 180 días.

Ejemplo de respuesta

   
      "kr-answer": {
          "shopId": "12345678",
          "orderCycle": "CLOSED",
          "orderStatus": "PAID",
            "orderDetails": {
              "orderTotalAmount": 7212,
              "orderEffectiveAmount": 7212,
              "orderCurrency": "EUR",
              "mode": "TEST",
              "orderId": "myOrder-1234-initial",
              "metadata": null,
              "_type": "V4/OrderDetails"
            },
            "transactions": [
            {
              "shopId": "12345678",
              "uuid": "f183418d08df49f3900bbd74ef837816",
              "amount": 12500,
              "currency": "EUR",
              "paymentMethodType": "CARD",
              "paymentMethodToken": null,
              "status": "PAID",
              "detailedStatus": "ACCEPTED",
              "operationType": "VERIFICATION",
                    "orderId": "myOrderId-1234",
                    
                    "_type": "V4/Charge/CreateQRCodeResponse"
                },    
              (...)   
    "_type": "V4/WebService/Response" 
}

}
  • Analice el resultado del pago. Más información: Etapa 5: Analizar el resultado del pago.

  • Conserve el uuid de la transacción original. En el ejemplo, [transactions][0].[uuid] tiene el valor f183418d08df49f3900bbd74ef837816 . Estos datos son necesarios para crear transacciones de envío.

Ejemplo de transacción de envío 1

Solicitud

Campos obligatorios:

  • Monto: 35,00€
  • UUID :referencia única de la transacción inicial:f183418d08df49f3900bbd74ef837816

. Campos recomendados:

  • Correo electrónico del comprador: " sample@example.com "
/es/rest/V4.0/api/kb/authentication.html
https://api.lyra.com/api-payment/V4/Charge/CreateShipmentTransaction
      {
        "amount": 3500,
        "customer": {
          "email": "sample@example.com"
        },
        "uuid": "f183418d08df49f3900bbd74ef837816"
      }

Para ver todos los campos y su descripción, consulte el playground: Charge/CreateShipmentTransaction (menú a la izquierda);.

Respuesta de la solicitud

   
      {
        "webService": "Charge/CreateShipmentTransaction",
        "version": "V4",
        "applicationVersion": "6.12.0",
        "status": "SUCCESS",
        "answer": {
          "shopId": "12345678",
          "uuid": "7b8179b7845e4576868d624039b754c5",
          "paymentMethodType": "CARD",
          "paymentMethodToken": null,
          "detailedStatus": "AUTHORISED",
          "status": "PAID",
          "amount": 3500,
          "currency": "EUR",
              (...)   
    "_type": "V4/WebService/Response" 
}

}

El valorPAIDdel campo.statussignifica que la transacción ha sido aceptada.
Más información :referencia de estado

Ejemplo de transacción de envío 2

Solicitud

Campos obligatorios:

  • Monto: 25,00 €
  • UUID :referencia única de la transacción inicial:f183418d08df49f3900bbd74ef837816

. Campos recomendados:

  • Correo electrónico del comprador: " sample@example.com "
/es/rest/V4.0/api/kb/authentication.html
https://api.lyra.com/api-payment/V4/Charge/CreateShipmentTransaction
      {
        "amount": 2500,
        "customer": {
          "email": "sample@example.com"
        },
        "uuid": "f183418d08df49f3900bbd74ef837816"
      }

Para ver todos los campos y su descripción, consulte el playground: Charge/CreateShipmentTransaction (menú a la izquierda);.

Respuesta de la solicitud

   
      {
        "webService": "Charge/CreateShipmentTransaction",
        "version": "V4",
        "applicationVersion": "6.12.0",
        "status": "SUCCESS",
        "answer": {
          "shopId": "12345678",
          "uuid": "7b8179b7845e4576868d624039b754c5",
          "paymentMethodType": "CARD",
          "paymentMethodToken": null,
          "detailedStatus": "AUTHORISED",
          "status": "PAID",
          "amount": 2500,
          "currency": "EUR",
              (...)   
    "_type": "V4/WebService/Response" 
}

}

El valorPAIDdel campo.statussignifica que la transacción ha sido aceptada.
Más información :referencia de estado

Ejemplo de transacción de envío 3

Solicitud

Campos obligatorios:

  • Monto: 14,12 €
  • UUID :referencia única de la transacción inicial:f183418d08df49f3900bbd74ef837816

. Campos recomendados:

  • Correo electrónico del comprador: " sample@example.com "
/es/rest/V4.0/api/kb/authentication.html
https://api.lyra.com/api-payment/V4/Charge/CreateShipmentTransaction
      {
        "amount": 1412,
        "customer": {
          "email": "sample@example.com"
        },
        "uuid": "f183418d08df49f3900bbd74ef837816"
      }

Para ver todos los campos y su descripción, consulte el playground: Charge/CreateShipmentTransaction (menú a la izquierda);.

Respuesta de la solicitud

   
      {
        "webService": "Charge/CreateShipmentTransaction",
        "version": "V4",
        "applicationVersion": "6.12.0",
        "status": "SUCCESS",
        "answer": {
          "shopId": "12345678",
          "uuid": "7b8179b7845e4576868d624039b754c5",
          "paymentMethodType": "CARD",
          "paymentMethodToken": null,
          "detailedStatus": "AUTHORISED",
          "status": "PAID",
          "amount": 1412,
          "currency": "EUR",
              (...)   
    "_type": "V4/WebService/Response" 
}

}

El valorPAIDdel campo.statussignifica que la transacción ha sido aceptada.
Más información :referencia de estado

Manejo de errores

Tabla de errores
Código Descripción
INT_009 El formato del campo amount no es válido o el campo no se ha transmitido.
INT_010 El formato del campo currency no es válido o el campo no se ha transmitido.
INT_050 El parámetro strongAuthentication es inválido.
PSP_519 Moneda desconocida.
PSP_606 Moneda no admitida por la afiliación.

Analizar el resultado del pago

1. Para la transacción inicial

Implemente la URL de notificación de finalización de pago (también conocida como IPN) para analizar el resultado y conservar el uuid de la transacción original.

  • Ingrese solamente la URL de notificación en la sección API REST (TEST o PRODUCTION): Procedimiento.
  • Analice la IPN: Procedimiento.
2. Para transacciones de envío

El Servicio Web devuelve un objeto de tipo Transacción de débito.

Jobs
Legal
GDPR
25.25.0-1.11