Crear una solicitud de pago SVI
Testee el Web Service Charge/CreatePaymentOrder desde nuestro Playground: Charge/CreatePaymentOrder.
Solicitud
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 IVR. |
channelOptions.ivrOptions | Sí | Objeto json que permite definir los parámetros específicos para la creación de una solicitud de pago IVR. |
channelOptions.ivrOptions.ivrPaymentOrderId | NO | Este campo es rellenado automáticamente por la plataforma Si el vendedor tiene restricciones específicas, puede sobrescribir este campo excepcionalmente con su propia referencia numérica siempre que garantice su unicidad. |
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 |
merchantComment | NO | Comentario opcional para el usuario delIdentifiant utilisateur source o bien consultando la columnaInformations utilisateur . |
amount | Sí | Monto a pagar, expresado en su fracción monetaria más pequeña (el centavo para el peso argentino). |
currency | Sí | Moneda del pago. Código ISO 4217 alpha-3. Ejemplo: "ARS" por el peso argentino. |
orderId | Sí | Referencia del pedido. |
taxAmount | NO | Monto de los impuestos de todo el pedido, expresado en su unidad monetaria más pequeña (el céntimo para el peso argentino). |
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. |
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". |
customer | NO | Objeto que contiene los datos del comprador. |
metadata | NO | Valores personalizados adjuntos a la transacción, en formato json. |
Ejemplo de solicitud
/doc/es-AR/rest/V4.0/api/kb/authentication.html
https://github.com/lyra/rest-php-examples/blob/master/www/minimalEmbeddedForm.php#L9-L44
https://api.cobroinmediato.tech/api-payment/V4/Charge/CreatePaymentOrder
{ "amount": 200050, "currency": "ARS", "orderId": "myOrderId-999999", "channelOptions": { "channelType": "IVR" }, "paymentReceiptEmail": "sample@example.com", "expirationDate": "2020-04-20T20:13:26+02:00" }
{ "amount": 200050, "currency": "ARS", "orderId": "myOrderId-999999", "channelOptions": { "channelType": "IVR" }, "paymentReceiptEmail": "sample@example.com", "expirationDate": "2020-04-20T20:13:26+02:00" }
{ "amount": 200050, "currency": "ARS", "orderId": "myOrderId-999999", "channelOptions": { "channelType": "IVR" }, "paymentReceiptEmail": "sample@example.com", "expirationDate": "2020-04-20T20:13:26+02:00" }
{ "amount": 200050, "currency": "COP", "orderId": "myOrderId-999999", "channelOptions": { "channelType": "IVR" }, "paymentReceiptEmail": "sample@example.com", "expirationDate": "2020-04-20T20:13:26+02:00" }
{ "amount": 200050, "currency": "ARS", "orderId": "myOrderId-999999", "channelOptions": { "channelType": "IVR" }, "paymentReceiptEmail": "sample@example.com", "expirationDate": "2020-04-20T20:13:26+02:00" }
/** * 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. |
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.ivrDetails.ivrPaymentOrderId | Referencia de la solicitud de pago en el SVI. |
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. |
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. |
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. |
metadata | Valores personalizados adjuntos a la transacción, en formato json. |
Ejemplo de respuesta
{ "webService": "Charge/CreatePaymentOrder", "version": "V4", "applicationVersion": "5.5.0", "status": "SUCCESS", "answer": { "paymentOrderId": "fd8f6060f824427ba687d0161e46af8f", "paymentURL": null, "paymentOrderStatus": "RUNNING", "creationDate": "2020-03-31T15:06:49+00:00", "updateDate": null, "amount": 200050, "currency": "ARS", "locale": "en_GB", "strongAuthentication": "AUTO", "orderId": "myOrderId-999999", "channelDetails": { "channelType": "IVR", "mailDetails": null, "smsDetails": null, "whatsAppDetails": null, "ivrDetails": { "ivrPaymentOrderId": "0123", "_type": "V4/IVRDetails" } "_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, "_type": "V4/PaymentOrder" }, "ticket": null, "serverDate": "2020-03-31T15:06:49+00:00", "applicationProvider": "COIN", "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_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. |