Ir al contenido principal
airtable + gigstack

Configura tu integración con gigstack+airtable.

Actualizado hace más de una semana

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.



¿Ha quedado contestada tu pregunta?