Buscar
Categoria
Tags
Implementación
Formulario incrustado
Servicios web REST
Formulario de pago
Intercambio de ficheros
Pago móvil
Ayuda y herramientas
Módulos de pago
Ejemplo de código
FAQ
Back office
SUPPORT

Editar una solicitud de pago

  • Casos de uso
  • Solicitud
  • Respuesta
  • Manejo de errores

Pruebe el servicio web Charge/PaymentOrder/Update desde nuestro playground: Charge/PaymentOrder/Update .

Casos de uso

El vendedor desea modificar el contenido de una solicitud de pago (monto, mensaje, etc.).

El servicio web Charge/PaymentOrder/Update permite modificar solamente las solicitudes de pago creadas con el servicio web Charge/CreatePaymentOrder .

Solo las solicitudes de pago en curso (estado RUNNING ) se pueden modificar. No se puede modificar el canal de difusión.

Solicitud

Parámetro 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 (destinatario). Utilice el punto y coma ";" como separador entre cada dirección
channelOptions.mailOptions.subject No 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 e-mail enviado. Si el parámetro se deja vacío, se aplicará la plantilla predeterminada.
channelOptions.mailOptions.template No Nombre de la plantilla a utilizar para generar el e-mail. Il est nécessaire que le modèle existe dans le Back Office pour que cela fonctionne Chaque modèle d’e-mail est associé à une langue (ou locale).Pour utiliser un modèle vous devez vous assurer de transmettre la bonne langue dans le paramètre 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 Date de validité de l'ordre au format ISO-8601. Ne peut pas être antérieure à la date courante et ne peut pas dépasser 90 jours. Si ce paramètre n'est pas envoyé, la valeur appliquée sera celle de la boutique. Ex : 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 del 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.
amount Sí Cantidad a pagar, expresada en su unidad monetaria más pequeña (el centavo para el peso argentino).
currency Sí Moneda del pago. Código ISO 4217 alfa-3.Ex: "ARS" para el peso argentino
orderId No Referencia del pedido.
taxAmount No Importe 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:
transactionOptions.cardOptions.captureDelay No Indica el plazo, en días, antes de su captura.
strongAuthentication No Permite habilitar o deshabilitar la autenticación fuerte durante el pago. Valores posibles:
paymentReceiptEmail No Dirección de e-mail para el envío del ticket de pago al comprador.
dataCollectionForm No Uso del formulario de recogida de datos. Valores posibles:
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 vinculados a la transacción, en formato json.

Ejemplo de solicitud

{
    "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:

Parámetro 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. Solo está presente si el valor de channelDetails.channelType está establecido en MAIL .
channelDetails.mailDetails.subject Asunto del e-mail enviado. Solo está presente si el valor de channelDetails.channelType está establecido en MAIL .
channelDetails.mailDetails.body Cuerpo del e-mail enviado. Solo está presente si el valor de channelDetails.channelType está establecido en MAIL .
channelDetails.mailDetails.template Nombre de la plantilla utilizada. Solo está presente si el valor de channelDetails.channelType está establecido en MAIL .
channelDetails.mailDetails.bcc Lista de los destinatarios en copia oculta. Solo está presente si el valor de channelDetails.channelType está establecido en MAIL .
channelDetails.smsDetails.phoneNumber Número de teléfono del destinatario con el prefijo internacional. Solo está presente si el valor de channelDetails.channelType está establecido en SMS .
channelDetails.smsDetails.message Cuerpo del mensaje enviado. Solo está presente si el valor de channelDetails.channelType está establecido en SMS .
channelDetails.whatsAppDetails.phoneNumber Número de teléfono del destinatario con el prefijo internacional. Solo está presente si el valor de channelDetails.channelType está establecido en WHATSAPP .
message 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 autenticación fuerte.
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.
dataCollectionForm Uso del formulario de recogida de datos.
merchantComment Comentario.
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 servicio web 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 no es válido.
INT_836 Falta el objeto smsOptions .
INT_837 Falta el parámetro channelOptions.whatsAppOptions.phoneNumber .
INT_838 Falta el parámetro channelOptions.smsOptions.phoneNumber .
INT_839 Falta el objeto whatsAppOptions .
INT_841 Falta el objeto mailOptions .
INT_850 Falta el parámetro channelOptions.mailOptions.recipient .
INT_856 El parámetro locale no es válido.
INT_858 El parámetro taxRate no es válido.
INT_869 El parámetro taxAmount no es vá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 no disponible 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.