Sage MicrOpay Example
The code below is a simple example of a process connecting to Sage MicrOpay (Micropay Cloud API). It authenticates with Basic Auth plus a separate API key header rather than MODLR's built-in OAuth 2.0 flow, so this is an Advanced Integration.
INFO
This process requires Sage MicrOpay credentials (user, password and API token) per instance/region, stored as Secrets rather than hardcoded in the process.
Library Code
A small helper for querying the Micropay Cloud API. Save this as a Process Library (e.g. libraries/micropay.js) and load it with script.library.
js
const MICROPAY_URL = "https://api.cloud.micropay.com.au/api/";
function micropayQuery(instance, path) {
const credentials = {
user: security.getSecret(`MICROPAY_${instance.toUpperCase()}_USER`),
password: security.getSecret(`MICROPAY_${instance.toUpperCase()}_PASSWORD`),
token: security.getSecret(`MICROPAY_${instance.toUpperCase()}_TOKEN`)
};
const response = web.get(MICROPAY_URL + path, {
"Authorization": "Basic " + script.base64(`${credentials.user}:${credentials.password}`, "utf8"),
"Api-Key": script.base64(credentials.token, "utf8"),
"Accept": "application/json"
});
if (response.status >= 200 && response.status < 300) {
return JSON.parse(response.body);
} else {
console.log(`Request failed. Status ${response.status}. Body:`, response.body);
return null;
}
}Process Code
js
script.library("libraries/micropay.js");
function pre() {
// This function is called once before the process is executed.
// Use this to setup prompts.
script.log('process pre-execution parameters parsed.');
}
function begin() {
// This function is called once at the start of the process
script.log('process execution started.');
const result = micropayQuery("au", "PublicHolidays");
console.log(result);
}
function data(record) {
// This function is called once for each line of data on the second cycle
// Use this to build dimensions and push data into cubes
}
function end() {
// This function is called once at the end of the process
script.log('process execution finished.');
}