Inicio Integraciones airtable + gigstack

airtable + gigstack

Última actualización el Dec 16, 2024

Sabemos que airtable es una gran plataforma y que no estar conectados era un error, así que pusimos manos a la obra y creamos una conexión en la que podemos crear automatizaciones.

Primero vamos a crear las columnas necesarias para que gigstack pueda funcionar:

  • amount : Number (será el monto registrado en la venta o solicitud de pago)

  • description : String (será la razón/motivo del cobro)

  • customerEmail : Email (será el correo que utilizaremos para relacionar clientes y enviar el proceso de facturación o solicitud de pago)

  • automaticInvoice : Checkbox (si este valor se encuentra activo realizaremos el proceso de automatización, nuestra recomendación es que siempre esté activo)

  • paid : Checkbox (si el valor paid está marcado como true o activo, NO realizaremos la solicitud de pago, solo realizaremos el registro del mismo para inicializar el proceso de factura)

  • gigstackId : String (Dejar siempre en blanco, la automatización se encargará de popular los valores)

  • PaymentUrl: String (Dejar en blanco, la automatización se encargará de popular los valores)

    Para lograr la conexión vamos a necesitar ir a nuestra base de datos de Airtable y dar click en automatizaciones:

Podemos crear cualquier flujo de automatización, sin embargo nuestra recomendación es hacerlo cuando se crea un nuevo registro en la tabla:

Nosotros utilizamos el "trigger" cuando el record haga match con todos los siguientes valores (valores que adicionalmente vamos a necesitar para que la integración funcione):

En el siguiente paso vamos a seleccionar una acción y como acción vamos a buscar "Run a Script" para terminar de configurar el script vamos a copiar el siguiente Script

NOTA*
Necesitaremos nuestra APIKey de gigstack, en modo LIVE o modo TEST para que la integración funcione.

Ahora busquemos "PONER EL API KEY AQUÍ" y peguemos el API que acabamos de copiar (hacerlo entre "__").

Y busquemos el nombre de la tabla, que encontramos en:

Copiemos el nombre y peguémoslo en donde dice "PONER EL NOMBRE DE LA TABLA AQUÍ"

let APIKey = "${apiKey ?? 'Aquí debes colocar tu API Key'}"

var inputConfig = input.config();

let table = base.getTable("TableTest");

let fields = table.fields
let keyFields = fields.map((f) => f.name);
let queryResult = await table.selectRecordsAsync({fields});

let mappedAll = queryResult.records.map( (record) => { 
    var values = {} 
    for(const key of keyFields){ 
        values[key] = record.getCellValue(key) 
    } 
    return {...values, externalId:record.id}})

    console.log(mappedAll)

var currentRowValues = {};

var currentRecord = queryResult.getRecord( inputConfig.externalId)

for (const key of keyFields) { 
    currentRowValues[key] = currentRecord.getCellValue(key)
}

console.log(currentRowValues)

await table.updateRecordAsync(inputConfig.externalId, { "gigstackId": 'Processing...' })


const body = {
    "allData":currentRowValues,
    "items":[
      {
      "name": currentRowValues.description,
      "total": currentRowValues.amount,
      "quantity": 1,
      }
      ],
   
    
    'automaticInvoice': currentRowValues.automaticInvocie,
    'paid': currentRowValues.paid,
    "client":{
      "email": currentRowValues.customerEmail,
      "name": currentRowValues.Name
    },
    'action':'payment_request',
    'custom_method_types':["card","oxxo","bank"],
    'from':'airtable',
    "metadata": {
        "internalId":inputConfig.externalId
    }
  }




let response = await fetch('https://gigstack-cfdi-bjekv7t4.uc.gateway.dev/v1/hooks/push', 
    { 
        method: 'POST', 
        body:JSON.stringify(body), 
        headers:{ 
            'Content-Type': 'application/json', 
            'Authorization': 'Bearer ' + APIKey
        }
    });
const json = await response.json();
console.log(json)
if (json.id) { 
    await table.updateRecordAsync(json.metadata.internalId, 
        { "gigstackId": json.id, "PaymentUrl":json.shortUrl }
    )
}






Una vez realizado esto, podremos ver que cada registro (que cumple con las condiciones que pusimos inicialmente) se creará una solicitud de pago o un registro de pago en su caso.

Nota: Para utilizar la integración con Zapier, es necesario contar con una membresía "Growing" ó más grande.

Agendar llamada para integración