Form


Formularios personalizables. Registra tanto los formularios de pago como los formularios de pruebas de entrega.

El atributo name contiene el nombre del método de pago a mostrar en la lista.

Si el formulario está desactivado, tendrá disabled = true.

El atributo icon es un campo numérico que indica el icono a mostrar. La lista de iconos es fija y está previamente configurada.

currency contiene la información de la moneda a usar para el pago. Este objeto contiene dos atributos adicionales, tax_flat_e2 y tax_percent, que contienen información de las tarifas adicionales a cobrar por usar el método de pago. Si cualquiera de esos valores es mayor a cero, se debe mostrar una advertencia indicando que se cobrará una tarifa adicional. Por ejemplo: Si tax_flat_e2 = 50 se mostrara algo como: "Al seleccionar Pago Móvil, se cobrará un impuesto adicional de $0.50" (texto de ejemplo). Si tax_percent = 0.05 se mostrará "impuesto de 5%" o si ambos campos tienen valor, por ejemplo, tax_flat_e2 = 30; tax_percent = 0.03 se cobrará "3% + $0.30"

Por otra parte, el campo label_url muestra una imagen grande en el formulario. Útil para mostrar QR. Podría ser null.

El atributo data contiene los parámetros a mostrar del formulario. Se trata de un array de objetos que contienen un único atributo. Según el nombre de ese atributo, se debe mostrar un componente diferente en el formulario:

  • text: Se trata de un texto a mostrar. No se requiere respuesta del usuario. Útil para mostrar información como el número de pago móvil o cuenta bancaria para el depósito.
    • question: Título a mostrar.
    • content: Texto descriptivo.
  • input: Se trata de un campo de entrada de texto convencional.
    • question: Título de la pregunta.
    • required: Indica si es obligatorio para el servidor. Se debe mostrar un asterisco rojo y validar que no esté vacío al momento de enviar.
    • hint: El texto de ayuda a mostrar en el campo (placeholder).
    • regex: Regla para validar el campo. Se debe ignorar el primer y último caracter del regex para usar en JS.
    • type: El tipo de entrada. Podría ser: text (normal), text_area (multilinea), date (calendario), numeric (sólo números), bank (mostrar icono de banco).
    • key: Booleano que indica que el campo contiene el campo clave de identificador del pago. Se utiliza para la validación de pagos automatizada.
  • boolean: Se trata de un check. Útil para aceptar términos.
    • question: Título a mostrar.
    • required: Indica si es obligatorio estar checked == true para enviar el formulario.
  • option: Campo de selección de opciones. Se trata de un Select de elección simple. Útil para elegir el banco o el tipo de DNI (V, E, J, etc).
    • question: Título de la pregunta.
    • required: Indica si es obligatorio para el servidor. En cualquier caso se debe inicializar con un campo en blanco al estilo "Seleccione una opción: " y NO tener la primera opción por defecto. En caso de required == true se debe obligar a elegir una opción para enviar el formulario.
    • choices: un array de string con las distintas opciones a elegir,
    • type: puede ser text y bank
  • text_button: Botón de texto informativo, no hay que responder en el formulario (es informativo). Se muestra un título igualmente, una descripción y un botón debajo. Útil para mostrar información muy extensa.
    • question: Título a mostrar.
    • content: Texto descriptivo.
    • button_text: Texto a mostrar en el botón. Por ejemplo: "Ver cuentas bancarias".
    • button_content: Contenido a mostrar (en un diálogo) cuando presionas el botón. Como título del diálogo se puede usar el button_text y el contenido es button_content.
  • file: Campo para subir un archivo.
    • question: Título a mostrar.
    • required: Indica si es obligatorio para el servidor.
    • allowed_types: Array de tipos de archivos admitidos.
    • type: Indica si es un archivo cualquiera file o imagen image.

Modelo Form

{
    "id": 185,
    "type": 4,
    "data": [
        {
            "text": {
                "question": "Usuario del comercio",
                "content": ".Zen DEV"
            }
        },
        {
            "input": {
                "question": "¿Quién envia el pago?",
                "required": false,
                "hint": "Coloca tu usuario de Reserve",
                "regex": "^[a-zA-Z0-9_]*^",
                "type": "text"
            }
        }
    ],
    "name": "Reserve",
    "disabled": true,
    "created_at": "2021-05-19 16:59:16",
    "updated_at": "2023-07-07 12:58:57",
    "company_id": 116,
    "icon": 7,
    "currency": {
        "iso": "USD",
        "tax_flat_e2": 0,
        "tax_percent": 0,
        "id": 475,
        "enabled": true,
        "symbol": "$",
        "conversion_factor": 1,
        "related_iso": "USD",
        "decimals_count": 2,
        "format": "0.00$",
        "decimal_point": ".",
        "use_thousands_separator": true,
        "thousands_separator": ",",
        "is_local": true,
        "is_international": true,
        "created_at": "2021-07-15 19:16:41",
        "updated_at": "2024-02-22 13:34:01",
        "company_id": 116,
        "is_custom": true,
        "branch_id": 37,
        "auto_sync": false,
        "auto_sync_provider": "legacy",
        "use_conversion": false,
        "available": true,
        "related_iso_expected": "USD",
        "related_iso_error": false
    },
    "branch_id": 37,
    "label_url": "http://127.0.0.1:8000/storage/companies/69/form/form_label_185_1621458192.jpg",
    "internal_name": null
}
Atributo Tipo Descripción
id int -
type int -
data array -
name string\|null -
disabled bool -
created_at datetime\|null -
updated_at datetime\|null -
company_id int -
icon int -
currency array -
branch_id int\|null -
label_url string\|null -

Insertar Form

Insertar Form de Branch

Store a newly created resource in storage.

Método URI Cabeceras
PUT /companies/{company}/branches/{branchId}/forms/{form_type} Authorization
{
    "name": "string|max:32",
    "internal_name": "nullable|string|in:bancamiga_pm,bancamiga_ci",
    "icon": "integer",
    "currency": {
        "iso": "required_with:currency|min:3|max:8|string",
        "tax_percent": "required_with:currency|numeric|between:0.0000,1.0000",
        "tax_flat_e2": "required_with:currency|integer|min:0"
    },
    "branch_id": "integer|min:1",
    "form": [
        {
            "boolean": {
                "question": "required_with:form.*.boolean|max:64|string",
                "required": "required_with:form.*.boolean|boolean"
            },
            "option": {
                "question": "required_with:form.*.option|max:64|string",
                "required": "required_with:form.*.option|boolean",
                "choices": [
                    "required_with:form.*.option.choices|max:48|string"
                ],
                "type": "string|in:text,date,bank"
            },
            "input": {
                "question": "required_with:form.*.input|max:64|string",
                "hint": "max:32|string",
                "required": "required_with:form.*.input|boolean",
                "regex": "max:255|pattern",
                "type": "string|in:text,text_area,date,numeric,bank",
                "key": "boolean"
            },
            "text": {
                "question": "required_with:form.*.text|max:64|string",
                "content": "required_with:form.*.text|max:512|string"
            },
            "text_button": {
                "question": "required_with:form.*.text_button|max:64|string",
                "content": "required_with:form.*.text_button|max:255|string",
                "button_text": "required_with:form.*.text_button|max:48|string",
                "button_content": "required_with:form.*.text_button|max:1024|string"
            },
            "file": {
                "question": "required_with:form.*.file|string",
                "required": "required_with:form.*.file|boolean",
                "allowed_types": [
                    "required_with:form.*.file.allowed_types|max:128|string"
                ],
                "type": "string|in:file,image"
            }
        }
    ]
}

Insertar Form de Branch

Store a newly created resource in storage.

Método URI Cabeceras
PUT /companies/{company}/branches/{branchId}/forms/{form_type} Authorization
{
    "name": "string|max:32",
    "internal_name": "nullable|string|in:bancamiga_pm,bancamiga_ci",
    "icon": "integer",
    "currency": {
        "iso": "required_with:currency|min:3|max:8|string",
        "tax_percent": "required_with:currency|numeric|between:0.0000,1.0000",
        "tax_flat_e2": "required_with:currency|integer|min:0"
    },
    "branch_id": "integer|min:1",
    "form": [
        {
            "boolean": {
                "question": "required_with:form.*.boolean|max:64|string",
                "required": "required_with:form.*.boolean|boolean"
            },
            "option": {
                "question": "required_with:form.*.option|max:64|string",
                "required": "required_with:form.*.option|boolean",
                "choices": [
                    "required_with:form.*.option.choices|max:48|string"
                ],
                "type": "string|in:text,date,bank"
            },
            "input": {
                "question": "required_with:form.*.input|max:64|string",
                "hint": "max:32|string",
                "required": "required_with:form.*.input|boolean",
                "regex": "max:255|pattern",
                "type": "string|in:text,text_area,date,numeric,bank",
                "key": "boolean"
            },
            "text": {
                "question": "required_with:form.*.text|max:64|string",
                "content": "required_with:form.*.text|max:512|string"
            },
            "text_button": {
                "question": "required_with:form.*.text_button|max:64|string",
                "content": "required_with:form.*.text_button|max:255|string",
                "button_text": "required_with:form.*.text_button|max:48|string",
                "button_content": "required_with:form.*.text_button|max:1024|string"
            },
            "file": {
                "question": "required_with:form.*.file|string",
                "required": "required_with:form.*.file|boolean",
                "allowed_types": [
                    "required_with:form.*.file.allowed_types|max:128|string"
                ],
                "type": "string|in:file,image"
            }
        }
    ]
}

Listar Form

Listar Form de Branch

Muestra los formularios de pago de la Company

Sólo aplica si la Company tiene is_marketplace = true

Método URI Cabeceras
GET /companies/{company}/branches/{branchId}/forms Authorization

Listar Form de Branch

Muestra los formularios de pago de la Company

Sólo aplica si la Company tiene is_marketplace = true

Método URI Cabeceras
GET /companies/{company}/branches/{branchId}/forms Authorization

Mostrar Form

Mostrar Form de Branch

Display the specified resource.

Método URI Cabeceras
GET /companies/{company}/branches/{branchId}/forms/{form_type} Authorization

Mostrar Form de Branch

Display the specified resource.

Método URI Cabeceras
GET /companies/{company}/branches/{branchId}/forms/{form_type} Authorization

Eliminar Form

Eliminar Form de Branch

Remove the specified resource from storage.

Método URI Cabeceras
DELETE /companies/{company}/branches/{branchId}/forms/{form_type} Authorization

Eliminar Form de Branch

Remove the specified resource from storage.

Método URI Cabeceras
DELETE /companies/{company}/branches/{branchId}/forms/{form_type} Authorization

Acciones de Form

Show Tax

Display the specified resource.

Método URI Cabeceras
GET /companies/{company}/branches/{branchId}/forms/{form_type}/get-tax Authorization
{
    "order_e2": "required|integer|min:0",
    "tip_e2": "required|integer|min:0",
    "currency_to_use": "string|min:3|max:8",
    "branch_id": "nullable|integer"
}

Store For Payment

Store a newly created resource in storage.

Método URI Cabeceras
POST /companies/{company}/branches/{branchId}/forms/payment Authorization
{
    "name": "string|max:32",
    "internal_name": "nullable|string|in:bancamiga_pm,bancamiga_ci",
    "icon": "integer",
    "currency": {
        "iso": "required_with:currency|min:3|max:8|string",
        "tax_percent": "required_with:currency|numeric|between:0.0000,1.0000",
        "tax_flat_e2": "required_with:currency|integer|min:0"
    },
    "branch_id": "integer|min:1",
    "form": [
        {
            "boolean": {
                "question": "required_with:form.*.boolean|max:64|string",
                "required": "required_with:form.*.boolean|boolean"
            },
            "option": {
                "question": "required_with:form.*.option|max:64|string",
                "required": "required_with:form.*.option|boolean",
                "choices": [
                    "required_with:form.*.option.choices|max:48|string"
                ],
                "type": "string|in:text,date,bank"
            },
            "input": {
                "question": "required_with:form.*.input|max:64|string",
                "hint": "max:32|string",
                "required": "required_with:form.*.input|boolean",
                "regex": "max:255|pattern",
                "type": "string|in:text,text_area,date,numeric,bank",
                "key": "boolean"
            },
            "text": {
                "question": "required_with:form.*.text|max:64|string",
                "content": "required_with:form.*.text|max:512|string"
            },
            "text_button": {
                "question": "required_with:form.*.text_button|max:64|string",
                "content": "required_with:form.*.text_button|max:255|string",
                "button_text": "required_with:form.*.text_button|max:48|string",
                "button_content": "required_with:form.*.text_button|max:1024|string"
            },
            "file": {
                "question": "required_with:form.*.file|string",
                "required": "required_with:form.*.file|boolean",
                "allowed_types": [
                    "required_with:form.*.file.allowed_types|max:128|string"
                ],
                "type": "string|in:file,image"
            }
        }
    ]
}

Enable

Enables the specified resource

Método URI Cabeceras
PATCH /companies/{company}/branches/{branchId}/forms/{form_type}/enable Authorization

Disable

Disables the specified resource

Método URI Cabeceras
PATCH /companies/{company}/branches/{branchId}/forms/{form_type}/disable Authorization

Show Tax

Display the specified resource.

Método URI Cabeceras
GET /companies/{company}/branches/{branchId}/forms/{form_type}/get-tax Authorization
{
    "order_e2": "required|integer|min:0",
    "tip_e2": "required|integer|min:0",
    "currency_to_use": "string|min:3|max:8",
    "branch_id": "nullable|integer"
}

Store For Payment

Store a newly created resource in storage.

Método URI Cabeceras
POST /companies/{company}/branches/{branchId}/forms/payment Authorization
{
    "name": "string|max:32",
    "internal_name": "nullable|string|in:bancamiga_pm,bancamiga_ci",
    "icon": "integer",
    "currency": {
        "iso": "required_with:currency|min:3|max:8|string",
        "tax_percent": "required_with:currency|numeric|between:0.0000,1.0000",
        "tax_flat_e2": "required_with:currency|integer|min:0"
    },
    "branch_id": "integer|min:1",
    "form": [
        {
            "boolean": {
                "question": "required_with:form.*.boolean|max:64|string",
                "required": "required_with:form.*.boolean|boolean"
            },
            "option": {
                "question": "required_with:form.*.option|max:64|string",
                "required": "required_with:form.*.option|boolean",
                "choices": [
                    "required_with:form.*.option.choices|max:48|string"
                ],
                "type": "string|in:text,date,bank"
            },
            "input": {
                "question": "required_with:form.*.input|max:64|string",
                "hint": "max:32|string",
                "required": "required_with:form.*.input|boolean",
                "regex": "max:255|pattern",
                "type": "string|in:text,text_area,date,numeric,bank",
                "key": "boolean"
            },
            "text": {
                "question": "required_with:form.*.text|max:64|string",
                "content": "required_with:form.*.text|max:512|string"
            },
            "text_button": {
                "question": "required_with:form.*.text_button|max:64|string",
                "content": "required_with:form.*.text_button|max:255|string",
                "button_text": "required_with:form.*.text_button|max:48|string",
                "button_content": "required_with:form.*.text_button|max:1024|string"
            },
            "file": {
                "question": "required_with:form.*.file|string",
                "required": "required_with:form.*.file|boolean",
                "allowed_types": [
                    "required_with:form.*.file.allowed_types|max:128|string"
                ],
                "type": "string|in:file,image"
            }
        }
    ]
}

Enable

Enables the specified resource

Método URI Cabeceras
PATCH /companies/{company}/branches/{branchId}/forms/{form_type}/enable Authorization

Disable

Disables the specified resource

Método URI Cabeceras
PATCH /companies/{company}/branches/{branchId}/forms/{form_type}/disable Authorization

Upload

Método URI Cabeceras
POST /companies/{company}/forms/{formId}/upload-label Authorization
{
    "image": "nullable|image|mimes:jpeg,png|max:2048"
}

Enlaces de Form