Crear una solicitud de pago de factura
Testee el Web Service Charge/CreatePaymentOrder desde nuestro playground: Charge/CreatePaymentOrder.
Casos de uso
El vendedor ha enviado una factura pendiente a su cliente. A continuación le envía el enlace al formulario de recopilación de datos.
El comprador debe completar la referencia de la factura y completar sus datos personales. El monto se muestra automáticamente después de ingresar la referencia de la factura.
Solicitud de pago en inmediato
Llame al servicio PCharge/CreatePaymentOrder utilizando los siguientes campos:
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 CD. |
channelOptions.mailOptions | Sí | Objeto json que permite definir los parámetros específicos para la creación de una solicitud de pago por e-mail. |
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 utiliza el idioma de la tienda. Por ejemplo: "fr_FR", "es_ES", "en_GB", "pt_BR" |
merchantComment | NO | Comentario opcional para el usuario delIdentifiant utilisateur source o 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 | Sí | Referencia única de la factura pendiente.la solicitud será rechazada si ya existe una solicitud de pago de factura con esta referencia, independientemente de su estado (cancelada o no). |
description | NO | Descripción opcional de la factura que se abonará. La longitud máxima es de 65 caracteres. |
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". |
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
{ "amount": 10000, "currency": "EUR", "orderId": "myOrderId-1234", "channelOptions": { "channelType": "INVOICE" } }
{ "amount": 200050, "currency": "PEN", "orderId": "myOrderId-999999", "channelOptions": { "channelType": "INVOICE" }, "paymentReceiptEmail": "sample@example.com", "expirationDate": "2020-04-20T20:13:26+02:00", "locale": "es_PE", "description" : "My custom description" }
{ "amount": 200050, "currency": "ARS", "orderId": "myOrderId-999999", "channelOptions": { "channelType": "INVOICE" }, "paymentReceiptEmail": "sample@example.com", "expirationDate": "2020-04-20T20:13:26+02:00", "locale": "es_AR", "description" : "My custom description" }
{ "amount": 200050, "currency": "COP", "orderId": "myOrderId-999999", "channelOptions": { "channelType": "INVOICE" }, "paymentReceiptEmail": "sample@example.com", "expirationDate": "2020-04-20T20:13:26+02:00", "locale": "es_CO", "description" : "My custom description" }
/** * 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. Establecido en INVOICE |
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 | Permite habilitar o deshabilitar la autentificación fuerte durante el pago. |
orderId | Referencia del pedido. |
paymentReceiptEmail | Dirección de e-mail para el envío del ticket 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. |
transactionDetails.cardDetails.manualValidation | Modo de validación de la transacción. |
transactionDetails.cardDetails.captureDelay | Plazo de captura. |
dataCollectionForm | Uso del formulario de recaudación de datos. Siempre se valora cuando está vacío. |
merchantComment | Comentario opcional. |
description | Descripción de la factura. |
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": "f95a9c6c2d5a4e3ca279401c4d07c115", "paymentURL": null, "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": "INVOICE", "mailDetails": null, "smsDetails": null, "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": null, "description": "My custom description" "_type": "V4/PaymentOrder" }, "ticket": null, "serverDate": "2020-03-31T15:06:49+00:00", "applicationProvider": "PAYZEN", "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_815 | El parámetro description es demasiado largo. La longitud máxima es de 65 caracteres. |
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_1036 | La referencia de la factura ya existe. |