Genera la información de un pago con los parámetros de la solicitud.
| Nombre del campo | Descripción | Reglas |
|---|---|---|
| payment | Requerido | required, Object |
| payment.description | Requerido. Debe ser una cadena y debe tener entre 4 y 191 caracteres | required, min:4, max:191, string |
| payment.amount | Requerido. Debe ser un valor numérico, al menos 1, máximo de 2 decimales y entre 1 y 10 dígitos | required, numeric, min:1, decimal:0,2, regex:/^\d{1,10}(.\d{0,2})?\$/i |
| payment.selected_taxes | Opcional, puede ser una matriz | nullable, array |
| payment.selected_taxes. | Requerido, su valor es 19 y debe existir en la tabla de impuestos con estado activo | required, el ID existe en la tabla de impuestos activos |
| payment.currency_type | Requerido. Debe ser una cadena y uno de los valores de la enumeración (COP, USD, EUR) | required, string, en enumeración (COP, USD, EUR) |
| payment.checkout_type | Requerido. Debe ser una cadena y uno de los valores de la enumeración (redirect, api) | required, string, en enumeración (redirect, api) |
| payment.checkout_template_id | Hace referencia al ID de tu plantilla de checkout. Puede ser nulo. | nullable, el ID existe en la tabla de Plantillas de Checkout |
| office | Hace referencia al ID de tus sucursales | required, el ID existe en la tabla de Sucursales, filtra los resultados según usuario autenticado |
Descripción: Genera la información de un pago con los parámetros adicionales a la solicitud.
| Nombre del campo | Descripción | Reglas |
|---|---|---|
| advanced_options | Objeto opcional con información adicional para customizar el pago a generar | nullable, Object |
| advanced_options.picture | Muestra la imagen en el checkout del comprador | nullable, image, max:5120 |
| advanced_options.limit_date | Limita el tiempo para recibir una transacción aprobada del pago generado | nullable, date, after_or_equal:today |
| advanced_options.references | Contenedor para las referencias de pago | nullable, array, max:3 |
| advanced_options.references.* | Referencia de pago para identificar la trx | required, string, max:50 |
| advanced_options.result_urls | Contenedor para las Url de retorno | nullable, object |
| advanced_options.result_urls.approved | URL activa para el retorno de una trx aprobada | required_with:result_urls, url, active_url |
| advanced_options.result_urls.rejected | URL activa para el retorno de una trx rechazada | required_with:result_urls, url, active_url |
| advanced_options.result_urls.pending | URL activa para el retorno de una trx pendiente | required_with:result_urls, url, active_url |
| advanced_options.result_urls.webhook | URL activa para la notificación de cambio de estado de una trx via webhook, la url debe ser de tipo post ver mas | required_with:result_urls, url, active_url, tipo post |
| advanced_options.delivery_service | Contenedor para agregar información de servicio de envio | nullable, Object |
| advanced_options.delivery_service.type | Tipo de servicio de envio, peude ser gratis o con valor | nullable, enumeración (gratis, con valor) |
| advanced_options.delivery_service.value | Indica el valor a cobrar sobre el monto actual cuando el tipo es "con valor" | nullable, required_if:advanced_options.delivery_service.type,Value, numeric, decimal:0,2 |
| advanced_options.request_address_delivery | Indica si se debe solicitar dirección de envio en Colombia | nullable, boolean |
| advanced_options.payment_methods | Contenedor para indicar los métodos de pago que estaran disponibles en el checkout | nullable, Object, métodos de pago disponibles |
| advanced_options.payment_methods.credit | Indicar las tarjetas que se aceptaran en el checkout | sometimes, required_with:advanced_options.payment_methods, array |
| advanced_options.payment_methods.pse | Indicar pse que se aceptaran en el checkout | sometimes, required_with:advanced_options.payment_methods, array |
| advanced_options.payment_methods.cash | Indicar los efectivos que se aceptaran en el checkout | sometimes, required_with:advanced_options.payment_methods, array |
| advanced_options.discount | Contenedor para indicar si aplica descuento sobre el monto | nullable, Object |
| advanced_options.discount.before_on | Indica hasta que fecha aplica el descuento | nullable, date, after_or_equal:today |
| advanced_options.discount.type | Indica el tipo del descuento que puede ser por "valor" o "porcentaje" | nullable, enumeración (value, percentage) |
| advanced_options.discount.value | Indica el valor del descuento de acuerdo al tipo escogidó | nullable, numeric, decimal:0,2 |
| advanced_options.cash_expired_period | Indica si se desea customizar el tiempo de expiración de un cupon en efectivo, se debe llenar tambien el campo cash_expired_interval | nullable, integer, min:1, max:31 |
| advanced_options.cash_expired_interval | Indica si se desea customizar el tiempo de expiración de un cupon en efectivo, se debe llenar tambien el campo cash_expired_period | nullable, enumeración (minute, hour, day, week, month, year) |
| advanced_options.has_comments | Indica si se desean recibir comentarios en el checkout de la trx | required, boolean |
| advanced_options.credibanco_gateway | Si deseas que la transacción sea agregadora y tienes tu propia terminal para Credibanco puedes poner tus codigos aquí | nullable, array |
| advanced_options.credibanco_gateway.code | Aquí debes poner el código único correspondiente a Credibanco. | required_with:advanced_options.credibanco_gateway, string, min:3, max:15 |
| advanced_options.credibanco_gateway.terminal | Aquí debes poner el código de terminal correspondiente a Credibanco. | required_with:advanced_options.credibanco_gateway, string, min:3, max:15 |
| advanced_options.redeban_gateway | Si deseas que la transacción sea agregadora y tienes tu propia terminal para Redeban puedes poner tus codigos aquí. | nullable, array |
| advanced_options.redeban_gateway.code | Aquí debes poner el código único correspondiente a Redeban. | required_with:advanced_options.redeban_gateway, string, min:3, max:15 |
| advanced_options.redeban_gateway.terminal | Aquí debes poner el código de terminal correspondiente a Redeban. | required_with:advanced_options.redeban_gateway, string, min:3, max:15 |
| advanced_options.pse_gateway | Si deseas que la transacción sea agregadora y tienes tu propia terminal para Pse puedes poner tus codigos aquí. | nullable, array |
| advanced_options.pse_gateway.code | Aquí debes poner el código único correspondiente a Pse. | required_with:advanced_options.pse_gateway, string, min:3, max:15 |
| advanced_options.pse_gateway.nit | Aquí debes poner el número Nit de tu comercio. | required_with:advanced_options.pse_gateway, string, min:8, max:11 |
Descripción: Objeto opcional que solo aplica cuando payment.checkout_type es redirect. Si lo envías, los datos del pagador llegan precargados en el checkout y el pagador puede modificarlos antes de pagar. Si no lo envías, el checkout se comporta igual que hasta ahora y solicita los datos en blanco. Si lo envías junto a checkout_type: api la solicitud es rechazada.
Todos los campos son opcionales, así que puedes enviar solo los que tengas (por ejemplo únicamente name y email). Los siguientes pares se exigen juntos: identification_type con id_number, dialling_code con cellphone y country con state.
| Nombre del campo | Descripción | Reglas |
|---|---|---|
| customer_information | Contenedor opcional con los datos del pagador para precargar el checkout. Solo aplica para checkout_type: redirect |
nullable, Object, prohibido cuando checkout_type es api |
| customer_information.name | Nombre completo del pagador | nullable, string, min:5, max:255 |
| customer_information.email | Correo electrónico del pagador | nullable, email, max:255 |
| customer_information.identification_type | Tipo de documento del pagador. Requerido si envías id_number | nullable, required_with:customer_information.id_number, enumeración (CC, CE, TI, PPT, DNI, NIT, Pasaporte, Otro) |
| customer_information.id_number | Número de documento. Las reglas dependen del tipo enviado: CC (numérico, 6 a 10 dígitos), TI (numérico, 10 a 11), CE (alfanumérico, 6 a 15), PPT (numérico, 7 a 15), DNI (alfanumérico, 6 a 20), NIT (numérico, 9 a 10), Pasaporte (alfanumérico, 6 a 20), Otro (string, max 30) | nullable, required_with:customer_information.identification_type, reglas según identification_type |
| customer_information.dialling_code | Indicativo telefónico del país, con el signo más. Requerido si envías cellphone | nullable, required_with:customer_information.cellphone, regex:/^+\d{1,3}\$/i |
| customer_information.cellphone | Número de celular, solo dígitos. Requerido si envías dialling_code | nullable, required_with:customer_information.dialling_code, numeric, digits_between:5,15 |
| customer_information.country | País del pagador en formato ISO3. Requerido si envías state | nullable, required_with:customer_information.state, string, en lista de países (campo iso3_code) |
| customer_information.city | Ciudad del pagador. Para que coincida con el checkout usa el nombre exacto de la lista de ciudades (/api/v1/resources/get-cities/{department}) |
nullable, string, max:100 |
| customer_information.state | Departamento del pagador. Cuando country es COL debe ser uno de los nombres de la lista de departamentos (/api/v1/resources/get-departments); para otros países es texto libre |
nullable, string, max:100, existe en la lista de departamentos cuando country es COL |
| customer_information.address_1 | Dirección de residencia del pagador | nullable, string, min:5, max:100 |
{info} Los nombres de departamento y ciudad deben coincidir con los que devuelven
/api/v1/resources/get-departmentsy/api/v1/resources/get-cities/{department}. Si el departamento no coincide con ninguno de esa lista la solicitud es rechazada.
Ejemplo de solicitud por redirect:
curl -X POST\
"/api/v1/payment/generate-payment"\
-H 'Authorization: Bearer ACCESS_TOKEN' \
-H "Content-type: application/json" \
-d '{
"payment" : {
"description": "Prueba Efipay",
"amount": 20000,
"currency_type": "COP",
"checkout_type": "redirect"
},
"advanced_options": {
"picture": "https://learn.g2.com/hubfs/G2CM_GI041_Checkout_process_V1b.png",
"limit_date": "2023-12-24",
"references": [
"123455678",
"1234556789",
"1234556780"
],
"result_urls": {
"approved": "https://www.ted.com/",
"rejected": "https://www.ted.com/",
"pending": "https://www.ted.com/"
},
"delivery_service": {
"type": "Con Valor",
"value": 2000
},
"request_address_delivery": true,
"discount": {
"before_on": "2023-12-07",
"type": "Valor",
"value": "2000"
},
"has_comments": true,
"comments_label": "Aqui tu comentario",
"redeban_gateway": {
"code": "12349876",
"terminal": "DRA12335"
}
},
"customer_information": {
"name": "Juan Pérez",
"email": "juan@correo.com",
"identification_type": "CC",
"id_number": "1020304050",
"dialling_code": "+57",
"cellphone": "3001234567",
"country": "COL",
"state": "Antioquia",
"city": "Medellín",
"address_1": "Calle 10 #43-25"
},
"office": 1
}'
Ejemplo de solicitud por api:
curl -X POST\
"/api/v1/payment/generate-payment"\
-H 'Authorization: Bearer ACCESS_TOKEN' \
-H "Content-type: application/json" \
-d '{
"payment" : {
"description": "Ejemplo generar payment",
"amount": 20000,
"currency_type": "COP",
"checkout_type": "api"
},
"advanced_options": {
"picture": "https://learn.g2.com/hubfs/G2CM_GI041_Checkout_process_V1b.png",
"limit_date": "2023-12-24",
"references": [
"123455678",
"1234556789",
"1234556780"
],
"result_urls": {
"approved": "https://www.ted.com/",
"rejected": "https://www.ted.com/",
"pending": "https://www.ted.com/"
},
"delivery_service": {
"type": "Con Valor",
"value": 2000
},
"request_address_delivery": true,
"discount": {
"before_on": "2023-12-07",
"type": "Valor",
"value": "2000"
},
"has_comments": true,
"comments_label": "Aqui tu comentario",
"redeban_gateway": {
"code": "12349876",
"terminal": "DRA12335"
}
},
"office": 1
}'
curl -X POST\
"/api/v1/payment/generate-payment"\
-H 'Authorization: Bearer ACCESS_TOKEN' \
-H "Content-type: application/json" \
-d '{
"saved": true,
"payment_id": "9dc12b03-5833-496a-83e6-4dfb8eb2570b",
"url": "https://sag.efipay.co/Checkout/PaymentGateway/9dc12b03-5833-496a-83e6-4dfb8eb2570b?signature=e7e33380957f87b98dab2353ccb7b3c5aed4387c44297fdefe03594b2ae17d79"
}'
curl -X POST\
"/api/v1/payment/generate-payment"\
-H 'Authorization: Bearer ACCESS_TOKEN' \
-H "Content-type: application/json" \
-d '{
"saved": true,
"payment_id": "9dc12b26-dc55-474c-8602-5d9e00af129e",
"token": "ZQZ82Ifn5fAuzKL"
}'