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.