Crear una solicitud de pago WhatsApp
Testee el Web Service Charge/CreatePaymentOrder desde nuestro playground: Charge/CreatePaymentOrder.
Solicitud de pago en inmediato
CARACTERÍSTICAS | OBLIGATORIO | Descripción |
---|---|---|
Sí | Parámetro que permite definir el canal de emisión de la solicitud de pago. Su valor debe ser CD. | |
Sí | Objeto json que permite definir los parámetros específicos para la creación de una solicitud de pago WhatsApp. | |
Sí | Número de teléfono del destinatario. | |
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" |
NO | Comentario opcional para el usuario delIdentifiant utilisateur source o bien consultando la columnaInformations utilisateur . | |
Sí | Monto para pagar, expresado en su fracción monetaria más pequeña (el céntimo para el euro). | |
Sí | Moneda del pago. Código ISO 4217 alpha-3. Ejemplo: "EUR" para el euro. | |
NO | Referencia del pedido. | |
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). | |
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. |
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". | |
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". |
NO | Objeto que contiene los datos del comprador. | |
formAction | NO | permite definir el tipo de comportamiento que desea al crear la transacción. |
NO | Token del medio de pago que se utilizará para el pago. | |
NO | Lista de formas de pago para ofrecer al comprador. | |
NO | Valores personalizados adjuntos a la transacción, en formato json. |
Existen campos opcionales.
Vea todos los campos de nuestro Playground:
Ejemplo de solicitud
Pago al contado
/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": "WHATSAPP", "whatsAppOptions": { "phoneNumber":"+33611111111" } } }
{ "amount": 200050, "currency": "PEN", "orderId": "myOrderId-999999", "channelOptions": { "channelType": "WHATSAPP", "whatsAppOptions": { "phoneNumber": "+51987654321" } }, "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": "WHATSAPP", "whatsAppOptions": { "phoneNumber": "+5491112345678" } }, "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": "WHATSAPP", "whatsAppOptions": { "phoneNumber": "+573191234567" } }, "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": "WHATSAPP", "whatsAppOptions": { "phoneNumber":"+5511123456789" } }, "paymentReceiptEmail": "sample@example.com", "expirationDate": "2020-04-20T20:13:26+02:00", "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. |
URL de pago. | |
Estado de la solicitud de pago. | |
Fecha y hora de creación de la solicitud de pago. | |
Fecha y hora de modificación de la solicitud de pago. | |
Canal de transmisión de la solicitud de pago. | |
Número de teléfono del destinatario con el prefijo internacional. | |
mensaje | Mensaje que incluye el enlace de pago, redactado en el idioma de la configuración regional. |
Monto a pagar, expresado en la unidad más pequeña de la moneda utilizada. | |
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 "_". |
Preferencia del vendedor respecto a la autentificación fuerte. | |
Referencia del pedido. | |
Dirección de e-mail para el envío del recibo de pago al comprador. | |
Monto de los impuestos para todo el pedido, expresado en su unidad monetaria más pequeña. | |
Tipo de impuesto aplicado a todo el pedido. | |
Fecha de vencimiento de la solicitud en formato ISO-8601. | |
dataCollectionForm | Uso del formulario de recaudación de datos. |
Comentario opcional. | |
transactionDetails.cardDetails.manualValidation | Modo de validación de la transacción. |
transactionDetails.cardDetails.captureDelay | Plazo de captura. |
Objeto que contiene los datos del comprador. | |
formAction | permite definir el tipo de comportamiento que desea al crear la transacción. |
Token del medio de pago que se utilizará para el pago. | |
Lista de formas de pago para ofrecer al comprador. | |
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": "fr_FR", "strongAuthentication": "AUTO", "orderId": "myOrderId-1234", "channelDetails": { "channelType": "WHATSAPP", "mailDetails": null, "smsDetails": null, "whatsAppDetails": { "phoneNumber": "+3361111111", "_type": "V4/WhatsAppDetails" }, "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": "Bonjour, voici un ordre de paiement envoyé par DEMO STORE d'un montant de 2000.50 EUR valable jusqu'au 23/04/2020. Pour confirmer, veuillez suivre le lien : 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" }
{ "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": 200050, "currency": "EUR", "locale": "en_GB", "strongAuthentication": "AUTO", "orderId": "myOrderId-999999", "channelDetails": { "channelType": "WHATSAPP", "mailDetails": null, "smsDetails": null, "whatsAppDetails": { "phoneNumber": "+51987654321", "_type": "V4/WhatsAppDetails" }, "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 sent by DEMO STORE 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" } }
{ "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": 200050, "currency": "EUR", "locale": "es_ES", "strongAuthentication": "AUTO", "orderId": "myOrderId-999999", "channelDetails": { "channelType": "WHATSAPP", "mailDetails": null, "smsDetails": null, "whatsAppDetails": { "phoneNumber": "+51987654321", "_type": "V4/WhatsAppDetails" }, "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": "Hola, este mensaje contiene una solicitud de pago enviada por DEMO STORE por un monto de 2.000,50 ARS, válida hasta el 23/04/2020. Para confirmar el pago, haga clic en el enlace siguiente : 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" } }
{ "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": 200050, "currency": "EUR", "locale": "es_ES", "strongAuthentication": "AUTO", "orderId": "myOrderId-999999", "channelDetails": { "channelType": "WHATSAPP", "mailDetails": null, "smsDetails": null, "whatsAppDetails": { "phoneNumber": "+573191234567", "_type": "V4/WhatsAppDetails" }, "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": "Hola, este mensaje contiene una solicitud de pago enviada por DEMO STORE por un monto de 2.000,50 COP, válida hasta el 23/04/2020. Para confirmar el pago, haga clic en el enlace siguiente : 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" } }
{ "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": 200050, "currency": "EUR", "locale": "es_ES", "strongAuthentication": "AUTO", "orderId": "myOrderId-999999", "channelDetails": { "channelType": "WHATSAPP", "mailDetails": null, "smsDetails": null, "whatsAppDetails": { "phoneNumber": "+5491112345678", "_type": "V4/WhatsAppDetails" }, "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": "Hola, este mensaje contiene una solicitud de pago por un importe de 2.000,50 PEN, válida hasta el 23/04/2020. Para confirmar el pago, haga clic en el enlace siguiente : 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" } }
{ "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": 200050, "currency": "EUR", "locale": "pt_BR", "strongAuthentication": "AUTO", "orderId": "myOrderId-999999", "channelDetails": { "channelType": "WHATSAPP", "mailDetails": null, "smsDetails": null, "whatsAppDetails": { "phoneNumber": "+5511123456789", "_type": "V4/WhatsAppDetails" }, "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": "Caro cliente, este mensagem contém uma ordem de pagamento enviada por DEMO STORE no valor de 2000.50 BRL válida até 23/04/2020. Para confirmar o pagamento, favor clicar sobre o link seguinte : 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 |
---|---|
El formato del campo amount no es válido o el campo no se ha transmitido. | |
El formato del campo currency no es válido o el campo no se ha transmitido. | |
El parámetro strongAuthentication es inválido. | |
El parámetro channelOptions.whatsAppOptions.phoneNumber está ausente. | |
el objeto whatsAppOptions está ausente. | |
El parámetro locale es inválido. | |
El parámetro taxRate es inválido. | |
El parámetro taxAmount es inválido. | |
Moneda desconocida. | |
Moneda no admitida por la afiliación. | |
No se puede establecer conexión con la puerta de enlace WhatsApp. | |
El número de teléfono del destinatario no está asociado a una cuenta de WhatsApp. | |
Falta la configuración de WhatsApp. | |
Plantilla de WhatsApp indisponible para la configuración regional solicitada. | |
La fecha de vencimiento de la solicitud de pago no puede ser anterior a la fecha actual ni exceder los 90 días. | |
No hay ningún formulario de recolección de datos para esta tienda. | |
No se puede utilizar el formulario de recolección de datos para la moneda solicitada. |