Editar una solicitud de pago
Testee el Web Service **Charge/CreatePaymentOrder** de nuestro Playground: Charge/PaymentOrder/Update.
Casos de uso
El vendedor desea modificar el contenido de una solicitud de pago (monto, mensaje, etc.).
El Web Service Charge/PaymentOrder/Update permite modificar solamente las solicitudes de pago creadas con el Web Service Charge/CreatePaymentOrder.
Solo las solicitudes de pago en curso (estado RUNNING ) se pueden modificar No se puede modificar el canal de difusión.
Solicitud
CARACTERÍSTICAS | OBLIGATORIO | Descripción |
---|---|---|
paymentOrderId | Sí | ID de la solicitud de pago a modificar. |
channelOptions.channelType | Sí | Parámetro que permite definir el canal de emisión de la solicitud de pago. |
channelOptions.mailOptions | NO | Objeto json que permite definir los parámetros específicos para la creación de una solicitud de pago por e-mail. Obligatorio si la solicitud de pago a modificar es de tipo MAIL. |
channelOptions.mailOptions.recipient | NO | Dirección de e-mail del destinatario. Obligatorio si la solicitud de pago a modificar es de tipo MAIL. |
channelOptions.mailOptions.bcc | NO | Lista de destinatarios adicionales. Estos destinatarios no son visibles para el destinatario principal (recipient). Use el punto y coma ";" como separador entre cada dirección. |
channelOptions.mailOptions.subject | NO | Permite personalizar la apariencia de los e-mails. Permite personalizar el asunto del e-mail. Este parámetro es obligatorio a menos que indique un nombre de plantilla válido en el parámetro channelOptions.mailOptions.template. |
channelOptions.mailOptions.body | NO | Permite personalizar el cuerpo del mensaje enviado Si el parámetro se deja vacío, se aplicará el mensaje predeterminado. |
channelOptions.mailOptions.template | NO | Nombre de la plantilla a utilizar para generar el e-mail. Para que funcione, es necesario que la plantilla exista en el Back Office. Cada plantilla de e-mail está asociada a un idioma (o configuración regional). Para utilizar una plantilla, asegúrese de indicar el idioma correcto en el parámetro locale. Si no se encuentra la plantilla se devolverá un error. Si ha definido un valor en los parámetros subject y body , serán ignorados y reemplazados por los de la plantilla. |
channelOptions.smsOptions | NO | Objeto json que permite definir los parámetros específicos para la creación de una solicitud de pago por SMS. Obligatorio si la solicitud de pago a modificar es de tipo SMS. |
channelOptions.smsOptions.phoneNumber | NO | Número de celular del destinatario. Obligatorio si la solicitud de pago a modificar es de tipo SMS. |
channelOptions.smsOptions.message | NO | Permite personalizar el cuerpo del mensaje enviado. Si el parámetro se deja vacío, se aplicará el mensaje predeterminado. |
channelOptions.whatsAppOptions | NO | Objeto json que permite definir los parámetros específicos para la creación de una solicitud de pago WhatsApp. Obligatorio si la solicitud de pago a modificar es de tipo WHATSAPP. |
channelOptions.whatsAppOptions.phoneNumber | NO | Número de teléfono del destinatario. Obligatorio si la solicitud de pago a modificar es de tipo WHATSAPP. |
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. |
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 | NO | 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. |
strongAuthentication | NO | Permite habilitar o deshabilitar la autentificación fuerte durante el pago. Valores posibles: Valores posibles: "ENABLED", "DISABLED" o "AUTO". |
paymentReceiptEmail | NO | Dirección de e-mail para el envío del ticket de pago 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. |
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/PaymentOrder/Update
{ "paymentOrderId": "d63e7f507a6f4dfa86cb40a833ecfd85", "amount": 200050, "currency": "ARS", "orderId": "myOrderId-999999", "channelOptions": { "channelType": "MAIL", "mailOptions": { "recipient": "sample@example.com" } }, "paymentReceiptEmail": "sample@example.com", "expirationDate": "2020-05-20T20:13:26+02:00", "dataCollectionForm": "true" }
{ "paymentOrderId": "d63e7f507a6f4dfa86cb40a833ecfd85", "amount": 200050, "currency": "PEN", "orderId": "myOrderId-999999", "channelOptions": { "channelType": "MAIL", "mailOptions": { "recipient": "sample@example.com" } }, "paymentReceiptEmail": "sample@example.com", "expirationDate": "2020-05-20T20:13:26+02:00", "locale": "es_PE", "dataCollectionForm": "true" }
{ "paymentOrderId": "d63e7f507a6f4dfa86cb40a833ecfd85", "amount": 200050, "currency": "ARS", "orderId": "myOrderId-999999", "channelOptions": { "channelType": "MAIL", "mailOptions": { "recipient": "sample@example.com" } }, "paymentReceiptEmail": "sample@example.com", "expirationDate": "2020-05-20T20:13:26+02:00", "locale": "es_AR", "dataCollectionForm": "true" }
{ "paymentOrderId": "d63e7f507a6f4dfa86cb40a833ecfd85", "amount": 200050, "currency": "COP", "orderId": "myOrderId-999999", "channelOptions": { "channelType": "MAIL", "mailOptions": { "recipient": "sample@example.com" } }, "paymentReceiptEmail": "sample@example.com", "expirationDate": "2020-05-20T20:13:26+02:00", "locale": "es_CO", "dataCollectionForm": "true" }
/** * 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 answser 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.mailDetails.recipient | Dirección de e-mail del destinatario. Presente únicamente si el valor de channelDetails.channelType está establecido en MAIL. |
channelDetails.mailDetails.subject | Asunto del e-mail enviado. Presente únicamente si el valor de channelDetails.channelType está establecido en MAIL. |
channelDetails.mailDetails.body | Cuerpo del e-mail enviado. Presente únicamente si el valor de channelDetails.channelType está establecido en MAIL. |
channelDetails.mailDetails.template | Nombre de la plantilla utilizada. Presente únicamente si el valor de channelDetails.channelType está establecido en MAIL. |
channelDetails.mailDetails.bcc | Lista de los destinatarios en copia oculta. Presente únicamente si el valor de channelDetails.channelType está establecido en MAIL. |
channelDetails.smsDetails.phoneNumber | Número de teléfono del destinatario con el prefijo internacional. Presente únicamente si el valor de channelDetails.channelType está establecido en SMS. |
channelDetails.smsDetails.message | Cuerpo del mensaje enviado. Presente únicamente si el valor de channelDetails.channelType está establecido en SMS. |
channelDetails.whatsAppDetails.phoneNumber | Número de teléfono del destinatario con el prefijo internacional. Presente únicamente si el valor de channelDetails.channelType está establecido en WHATSAPP. |
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 | NO |
formAction | NO |
paymentMethodToken | NO |
metadata | NO |
Ejemplo de respuesta
{ "webService": "Charge/PaymentOrder/Update", "version": "V4", "applicationVersion": "5.5.0", "status": "SUCCESS", "answer": { "paymentOrderId": "d63e7f507a6f4dfa86cb40a833ecfd85", "paymentURL": "https://secure.cobroinmediato.tech/t/328zq5so", "paymentOrderStatus": "RUNNING", "creationDate": "2020-03-31T15:06:49+00:00", "updateDate": "2020-04-29T12:55:50+00:00", "amount": 200050, "currency": "ARS", "locale": "en_GB", "strongAuthentication": "AUTO", "orderId": "myOrderId-999999", "channelDetails": { "channelType": "MAIL", "mailDetails": { "subject": "Your payment order", "body": "<b>Message sent by DEMO STORE</b> <p>Dear customer,</p> <p>This e-mail is a payment order of ARS 2,000.50 valid until 01/04/2020. To confirm, please click on the link below : </p> <p>https://secure.cobroinmediato.tech/t/w5izg024</p> <p>In case of problems, or if this message is not correctly displayed, please contact support@demostore.com.</p>", "template": null, "recipient": "sample@example.com", "bcc": null, "_type": "V4/MailDetails" }, "smsDetails": null, "whatsAppDetails": null, "_type": "V4/ChannelDetails" }, "paymentReceiptEmail": "sample@example.com", "taxRate": null, "taxAmount": null, "expirationDate": "2020-05-20T18:13:26+00:00", "transactionDetails": { "cardDetails": { "manualValidation": "NO", "captureDelay": 0, "_type": "V4/CardDetails" }, "_type": "V4/PaymentOrderTransactionDetails" }, "dataCollectionForm": true, "merchantComment": null, "message": "<b>Message sent by DEMO STORE</b> <p>Dear customer,</p> <p>This e-mail is a payment order of ARS 2,000.50 valid until 01/04/2020. To confirm, please click on the link below : </p> <p>https://secure.cobroinmediato.tech/t/w5izg024</p> <p>In case of problems, or if this message is not correctly displayed, please contact support@demostore.com.</p>", "_type": "V4/PaymentOrder" }, "ticket": null, "serverDate": "2020-04-29T12:55:50+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_050 | El parámetro strongAuthentication es inválido. |
INT_836 | el objeto smsOptions está ausente. |
INT_837 | El parámetro channelOptions.whatsAppOptions.phoneNumber está ausente. |
INT_838 | El parámetro channelOptions.smsOptions.phoneNumber está ausente. |
INT_839 | el objeto whatsAppOptions está ausente. |
INT_841 | el objeto mailOptions está ausente. |
INT_850 | El parámetro channelOptions.mailOptions.recipient 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. |
INT_902 | El formato del campo paymentOrderId no es válido o el campo no se ha transmitido. |
PSP_519 | Moneda desconocida. |
PSP_606 | Moneda no admitida por la afiliación. |
PSP_1000 | La solicitud de pago no existe. |
PSP_1001 | No se puede establecer conexión con la puerta de enlace WhatsApp. |
PSP_1002 | El número de teléfono del destinatario no está asociado a una cuenta de WhatsApp. |
PSP_1003 | Falta la configuración de WhatsApp. |
PSP_1004 | Plantilla de WhatsApp indisponible para la configuración regional solicitada. |
PSP_1005 | No se puede modificar una solicitud de pago pagada. |
PSP_1006 | No se puede modificar una solicitud de pago expirada. |
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_1011 | El modo (TEST o PRODUCTION) de la solicitud de pago no corresponde al de la solicitud. |
PSP_1015 | No hay ningún formulario de recolección de datos para esta tienda. |
PSP_1017 | No se puede modificar el canal de difusión. |
PSP_1018 | No se puede utilizar el formulario de recolección de datos para la moneda solicitada. |
PSP_1022 | La plantilla especificada en la solicitud no existe para la configuración regional solicitada. |