• 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

Crear una solicitud de pago por SMS

Esta característica requiere una cuenta de SMS de Lyra. Para más información, consulte la FAQ.

  • Solicitud
  • Ejemplo de solicitud
  • Respuesta
  • Manejo de errores

Testee el Web Service Charge/CreatePaymentOrder desde nuestro playground: Charge/CreatePaymentOrder.

Solicitud de pago en inmediato

CARACTERÍSTICAS OBLIGATORIO Descripción
channelOptions.channelType Sí Parámetro que permite definir el canal de emisión de la solicitud de pago. Su valor debe ser SMS.
channelOptions.smsOptions Sí Objeto json que permite definir los parámetros específicos para la creación de una solicitud de pago por SMS.
channelOptions.smsOptions.phoneNumber Sí Número de celular del destinatario.
channelOptions.smsOptions.message NO Permite personalizar el cuerpo del mensaje enviado. Si el parámetro se deja vacío, se aplicará el mensaje predeterminado.
expirationDate NO Fecha de vencimiento de la solicitud en formato ISO-8601. No puede ser anterior a la fecha actual ni superar los 90 días. Si este parámetro no está definido, se aplicará el valor de la tienda. Ejemplo: 2021-10-05T21:59:59+00:00
locale NO Código que representa el nombre del idioma, compuesto por el código del idioma (ISO 639-1) seguido del código del país (ISO 3166 alpha-2), separados por el carácter "_". Permite definir el idioma de las páginas de pago y el e-mail de confirmación. Si este parámetro no está definido, se deducirá el idioma a aplicar a partir del número de teléfono del destinatario. Por ejemplo: "fr_FR", "es_ES", "en_GB", "pt_BR"
merchantComment NO Comentario opcional para el usuario delbom. Se encuentra en el menú:Gestión>Solicitudes de pago: o bien mostrando los detalles del pedido en la pestaña Información del campoIdentifiant utilisateur sourceo bien consultando la columnaInformations utilisateur.
amount Sí Monto para pagar, expresado en su fracción monetaria más pequeña (el céntimo para el euro).
currency Sí Moneda del pago. Código ISO 4217 alpha-3. Ejemplo: "EUR" para el euro.
orderId NO Referencia del pedido.
taxAmount NO Monto de los impuestos para todo el pedido, expresado en su fracción monetaria más pequeña (el céntimo para el euro).
taxRate NO Tipo de impuesto aplicado a todo el pedido. El valor debe ser el porcentaje a aplicar (21 para 21 %).
transactionOptions.cardOptions.manualValidation NO Permite definir si la validación de la transacción es manual. Valores posibles: YES | NO.
transactionOptions.cardOptions.captureDelay NO Indica el plazo, en días, antes de su captura.
strongAuthentication NO Permite habilitar o deshabilitar la autentificación fuerte durante el pago. Valores posibles: Valores posibles: "ENABLED", "DISABLED", CHALLENGE_REQUESTED, CHALLENGE_MANDATE, NO_PREFERENCE o "AUTO".
paymentReceiptEmail NO Dirección de e-mail para el envío del recibo de pago al comprador. Requiere la activación de la regla de notificación "E-mail de confirmación de pago destinado al comprador".
dataCollectionForm NO Uso del formulario de recaudación de datos. Valores posibles: "true" o "false".
customer NO Objeto que contiene los datos del comprador.
formAction NO permite definir el tipo de comportamiento que desea al crear la transacción.
paymentMethodToken NO Token del medio de pago que se utilizará para el pago.
paymentMethods NO Lista de formas de pago para ofrecer al comprador.
metadata NO Valores personalizados adjuntos a la transacción, en formato json.

Existen campos opcionales.
Vea todos los campos de nuestro Playground:Charge/CreatePaymentOrder(menú de la izquierda).

Ejemplo de solicitud

Pago al contado

Existen 2 casos de uso disponibles:

  1. enviar un SMS utilizando la plantilla “predeterminada”, definida por la plataforma de pago,
  2. enviar un SMS personalizando su contenido directamente en la solicitud.

Enviar un SMS basado en la plantilla predeterminada

El vendedor desea enviar una solicitud de pago utilizando el mensaje definido como predeterminado por la plataforma de pago.

Para ello, no transmita el campo mensaje.

/es/rest/V4.0/api/kb/authentication.html
https://github.com/lyra/rest-php-examples/blob/master/www/minimalEmbeddedForm.php#L9-L44
https://api.lyra.com/api-payment/V4/Charge/CreatePaymentOrder
{
    "amount": 10000,
    "currency": "EUR",
    "orderId": "myOrderId-1234",
    "channelOptions": {
      "channelType": "SMS",
      "smsOptions": {
        "phoneNumber": "+33611111111"
      }
    },
}
/**
 * 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"];

?>

Enviar un SMS personalizado

El vendedor desea personalizar el mensaje del SMS en su solicitud.

Para ello, utilice el campo message.

Las siguientes variables están disponibles para personalizar el contenido del mensaje:

VALOR Descripción
%url% URL de la solicitud de pago Si falta esta variable, el enlace de pago se agregará automáticamente al final del mensaje.
%amount% Monto y moneda del pago
%start_date% Fecha de creación de la solicitud de pago. Permite indicar el inicio del periodo de validez de la solicitud de pago.
%end_date% Permite indicar el fin del periodo de validez de la solicitud de pago.
%shop_name% Nombre de su tienda como se define en el Back Office
%reference% Referencia del pedido.
%shop_url% URL de su tienda
%shop_contact% Dirección de e-mail del “administrador de la tienda” como se define en el Back Office

En la respuesta, estas variables se reemplazarán por su valor.

/es/rest/V4.0/api/kb/authentication.html
https://github.com/lyra/rest-php-examples/blob/master/www/minimalEmbeddedForm.php#L9-L44
https://api.lyra.com/api-payment/V4/Charge/CreatePaymentOrder
{
    "amount": 200050,
    "currency": "EUR",
    "orderId": "myOrderId-999999",
    "channelOptions": {
      "channelType": "SMS",
      "smsOptions": {
        "phoneNumber": "0611111111",        
        "message":"Bonjour, ce message comporte un lien de paiement d'un montant de %amount% valable jusqu'au %end_date%. Pour confirmer le paiement, cliquez sur le lien suivant: %url%"
      }
    },
    "paymentReceiptEmail": "sample@example.com",
    "expirationDate": "2023-04-20T20:13:26+02:00", 
    "dataCollectionForm": "false"
}
{
    "amount": 200050,
    "currency": "EUR",
    "orderId": "myOrderId-999999",    
    "channelOptions": {
      "channelType": "SMS",
      "smsOptions": {
        "phoneNumber": "+33611111111",        
        "message":"Dear customer, <br/>this is a payment order of %amount% valid until %end_date%.<br/>To confirm, please click on the link below: %url%"		
      }
    },
    "paymentReceiptEmail": "sample@example.com",
    "expirationDate": "2020-04-20T20:13:26+02:00",
    "locale": "es_PE",
    "dataCollectionForm": "false"
}
{
    "amount": 200050,
    "currency": "PEN",
    "orderId": "myOrderId-999999",    
    "channelOptions": {
      "channelType": "SMS",
      "smsOptions": {
        "phoneNumber": "+51987654321",        
        "message":"Hola, este mensaje contiene una solicitud de pago por un importe de %amount, válida hasta el %end_date%. Para confirmar el pago, haga clic en el enlace siguiente : %url%"
      }
    },
    "paymentReceiptEmail": "sample@example.com",
    "expirationDate": "2020-04-20T20:13:26+02:00",
    "locale": "es_PE",
    "dataCollectionForm": "false"
}
{
    "amount": 200050,
    "currency": "ARS",
    "orderId": "myOrderId-999999",    
    "channelOptions": {
      "channelType": "SMS",
      "smsOptions": {
        "phoneNumber": "+5491112345678",        
        "message":"Hola, este mensaje contiene una solicitud de pago por un importe de %amount, válida hasta el %end_date%. Para confirmar el pago, haga clic en el enlace siguiente : %url%"
      }
    },
    "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": "SMS",
      "smsOptions": {
        "phoneNumber": "+573191234567",        
        "message":"Hola, este mensaje contiene una solicitud de pago por un importe de %amount, válida hasta el %end_date%. Para confirmar el pago, haga clic en el enlace siguiente : %url%"
      }
    },
    "paymentReceiptEmail": "sample@example.com",
    "expirationDate": "2020-04-20T20:13:26+02:00",
    "locale": "es_CO",
    "dataCollectionForm": "false"
}
{
    "amount": 200050,
    "currency": "EUR",
    "orderId": "myOrderId-999999",   
    "channelOptions": {
      "channelType": "SMS",
      "smsOptions": {
        "phoneNumber": "+5511123456789",        
        "message":"Caro cliente, este mensagem contém uma ordem de pagamento do valor de %amount, válida até %end_date%. Para confirmar o pagamento, favor clicar sobre o link seguinte : %url%"
      }
    },
    "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"];

?>

Respuesta

El objeto answer contendrá los siguientes parámetros:

CARACTERÍSTICAS Descripción
paymentOrderId ID de la solicitud de pago.
paymentURL URL de pago.
paymentOrderStatus Estado de la solicitud de pago.
creationDate Fecha y hora de creación de la solicitud de pago.
updateDate Fecha y hora de modificación de la solicitud de pago.
channelDetails.channelType Canal de transmisión de la solicitud de pago.
channelDetails.smsDetails.phoneNumber Número de teléfono del destinatario con el prefijo internacional.
channelDetails.smsDetails.message Cuerpo del mensaje enviado.
mensaje Mensaje que incluye el enlace de pago, redactado en el idioma de la configuración regional.
amount Monto a pagar, expresado en la unidad más pequeña de la moneda utilizada.
currency Moneda del pago. Código ISO 4217 alpha-3.
locale Código que representa el nombre del idioma, compuesto por el código del idioma (ISO 639-1) seguido del código del país (ISO 3166 alpha-2), separados por el carácter "_".
strongAuthentication Preferencia del vendedor respecto a la autentificación fuerte.
orderId Referencia del pedido.
paymentReceiptEmail Dirección de e-mail para el envío del recibo de pago al comprador.
taxAmount Monto de los impuestos para todo el pedido, expresado en su unidad monetaria más pequeña.
taxRate Tipo de impuesto aplicado a todo el pedido.
expirationDate Fecha de vencimiento de la solicitud en formato ISO-8601.
dataCollectionForm Uso del formulario de recaudación de datos.
merchantComment Comentario opcional.
transactionDetails.cardDetails.manualValidation Modo de validación de la transacción.
transactionDetails.cardDetails.captureDelay Plazo de captura.
customer Objeto que contiene los datos del comprador.
formAction permite definir el tipo de comportamiento que desea al crear la transacción.
paymentMethodToken Token del medio de pago que se utilizará para el pago.
paymentMethods Lista de formas de pago para ofrecer al comprador.
metadata Valores personalizados adjuntos a la transacción, en formato json.

Vea todos los campos de nuestro Playground: PaymentOrder

Ejemplo de respuesta

{
    "webService": "Charge/CreatePaymentOrder",    
    "version": "V4",
    "applicationVersion": "5.5.0",
    "status": "SUCCESS",
    "answer": {
        "paymentOrderId": "fd8f6060f824427ba687d0161e46af8f",
        "paymentURL": "https://secure.lyra.com/t/328zq5so",
        "paymentOrderStatus": "RUNNING",
        "creationDate": "2020-03-31T15:06:49+00:00",
        "updateDate": null,
        "amount": 10000,
        "currency": "EUR",
        "locale": "en_GB",
        "strongAuthentication": "AUTO",
        "orderId": "myOrderId-1234",
        "channelDetails": {
            "channelType": "SMS",
            "mailDetails": null,
            "smsDetails": {
                "phoneNumber": "+336111111111",
                "message": "Dear customer, this is a payment order of EUR 2,000.50 valid until 23/04/2020. To confirm, please click on the link below : https://secure.lyra.com/t/xdt0bcmo",
                "_type": "V4/SMSDetails"
            },
            "whatsAppDetails": null,
            "ivrDetails": null,
            "_type": "V4/ChannelDetails"
        },
        "paymentReceiptEmail": "sample@example.com",
        "taxRate": null,
        "taxAmount": null,
        "expirationDate": "2020-04-20T18:13:26+00:00",
        "transactionDetails": {
            "cardDetails": {
                "manualValidation": "NO",
                "captureDelay": 0,
                "_type": "V4/CardDetails"
            },
            "_type": "V4/PaymentOrderTransactionDetails"
        },
        "dataCollectionForm": false,
        "merchantComment": null,
        "message": "Dear customer, this is a payment order of EUR 2,000.50 valid until 23/04/2020. To confirm, please click on the link below : https://secure.lyra.com/t/xdt0bcmo",
        "_type": "V4/PaymentOrder"
    },
    "ticket": null,
    "serverDate": "2020-03-31T15:06:49+00:00",
    "applicationProvider": "LYRA",
    "metadata": null,
    "_type": "V4/WebService/Response"
}


}

Manejo de errores

El Web Service Charge/createPaymentOrder devolverá un error en los siguientes casos:

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.
INT_836 el objeto smsOptions está ausente.
INT_838 El parámetro channelOptions.smsOptions.phoneNumber está ausente.
INT_856 El parámetro locale es inválido.
INT_858 El parámetro taxRate es inválido.
INT_869 El parámetro taxAmount es inválido.
PSP_519 Moneda desconocida.
PSP_606 Moneda no admitida por la afiliación.
PSP_1007 La fecha de vencimiento de la solicitud de pago no puede ser anterior a la fecha actual ni exceder los 90 días.
PSP_1015 No hay ningún formulario de recolección de datos para esta tienda.
PSP_1018 No se puede utilizar el formulario de recolección de datos para la moneda solicitada.
PSP_1029 Configuración incorrecta de la cuenta de SMS.
PSP_1030 El saldo de su cuenta de SMS ha sido excedido.
PSP_1031 El número de teléfono no es válido.
Jobs
Legal
GDPR
25.22-1.11