Transacciones

Overview

Genera la información de un pago con los parámetros de la solicitud.

Ejemplo

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

Datos del pagador

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-departments y /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
}'

Respuesta redirect

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"
}'

Respuesta Full API

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"
}'