Integration as SuperManager
This document describes how a SuperManager manages the full hierarchy and payment flow, from creating a Manager to initiating a payment session using a Collector.
Last updated
const childManager = await axios.post(L
`${BASE_URL}/companies/me/childs`,
{
companyName: "childCompany",
firstName: "Jean",
lastName: "Mopaz" + randomNumber,
email: email,
password: password,
iban: generateValidIBAN("FR", 27),
siretNumber: generateSIRET(),
address: address,
city: city,
zipcode: zipcode,
},
{
headers: {
"Content-Type": "application/json",
"x-api-key": apiKey,
"x-api-secret": apiSecret,
},
}
);
const managerId = childManager.data.data._id;
const managerCompanyId = childManager.data.data.company._id;const { lat, lng } = await getLatLongFromShopName(
"Decathlon Cannes",
"cannes"
);
const salespoint = await axios.post(
`${BASE_URL}/sales-points`,
{
name: name,
city: city,
country: country,
zipCode: zipCode,
street: street,
childManager: managerId,
...(logoUrl && { logoUrl }),
...(lat && { lat }),
...(lng && { lng }),
},
{
headers: {
"Content-Type": "application/json",
"x-api-key": apiKey,
"x-api-secret": apiSecret,
},
}
);function getCollectorInfo(
name,
companyName,
companyId,
salespointId
) {
const UUID = companyId;
const POS_UUID = salespointId;
const BRANDNAME = name.replace(/\s/g, "").toUpperCase();
const COMPANYNAME = companyName.replace(/\s/g, "").toUpperCase();
const GEN = Math.floor(10000000 + Math.random() * 90000000);
return {
identifier: `${UUID}_${POS_UUID}-${BRANDNAME}-${COMPANYNAME}-${GEN}`,
uuid: UUID,
salePoint: salespointId,
};
}const collector = await axios.post(
`${BASE_URL}/collectors/add`,
{
...getCollectorInfo(
name,
companyName,
managerCompanyId,
salespoint.data.data._id
),
childManager: managerId,
},
{
headers: {
"Content-Type": "application/json",
"x-api-key": apiKey,
"x-api-secret": apiSecret,
},
}
);
const collectorId = collector.data.data._id;const paymentSession = await axios.post(
`${BASE_URL}/confirm_conversion/request`,
{
merchantIdentifier: identifier,
amount: Joi.required(),
fromAsset: Joi.string().valid('EUR', 'CHF', 'XPF').insensitive().required(),
toAsset: Joi.string().valid('USDC').insensitive().required(),
webhookUrl: Joi.string().allow(null, ''),
cancelUrl: Joi.string().allow(null, '').max(256),
returnUrl: Joi.string().allow(null, '').max(256),
anonymous: Joi.boolean(),
goods: Joi.object({
goodsName: Joi.string(),
goodsType: Joi.string().valid('01', '02'),
goodsCategory: Joi.string().valid('0000', '1000', '2000', '3000', '4000', '5000', '6000', '7000', '8000', '9000', 'A000', 'B000', 'C000', 'D000', 'E000', 'F000', 'Z000'),
goodsDetail: Joi.string().max(256).allow('', null),
goodsQuantity: Joi.string().max(256).allow('', null)
}),
},
{
headers: {
"Content-Type": "application/json",
"x-api-key": apiKey,
"x-api-secret": apiSecret,
},
}
);