sibs-payments
Version:
A payment system module for SIBS payments integration with card tokenization support
123 lines • 4.03 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Form = Form;
exports.generateSibsFormHTML = generateSibsFormHTML;
const types_1 = require("./types");
async function Form(iam, data) {
const now = new Date();
const auth = await (await fetch(types_1.API, {
method: 'POST',
headers: {
"Content-Type": "application/json",
"Authorization": `Bearer ${iam.bearerToken}`,
"X-IBM-Client-Id": iam.clientId
},
body: JSON.stringify({
"merchant": {
"terminalId": iam.terminalId,
"channel": "web",
"merchantTransactionId": data.id
},
"transaction": {
"transactionTimestamp": now.toISOString(),
"description": data.description,
"paymentType": "PURS",
"amount": {
"value": data.amount,
"currency": data.currency
},
"paymentMethod": [
"REFERENCE",
"CARD",
"MBWAY"
],
"paymentReference": {
"initialDatetime": now.toISOString(),
"finalDatetime": new Date(now.getTime() + 10 * 60 * 1000).toISOString(),
"maxAmount": {
"value": data.amount,
"currency": data.currency
},
"minAmount": {
"value": data.amount,
"currency": data.currency
},
"entity": data.entity
}
},
"customer": {
"customerInfo": {
"customerName": data.customerName,
"customerEmail": data.customerEmail,
"billingAddress": data.billingAddress
}
},
"tokenisation": {
"tokenisationRequest": {
"tokeniseCard": true
},
"paymentTokens": [{
"tokenType": "Card",
"value": data.token
}]
}
})
})).json();
const formConfig = JSON.stringify({
paymentMethodList: [],
amount: {
value: data.amount,
currency: data.currency
},
language: data.language || "en",
redirectUrl: "http://localhost:3000/success",
customerData: null
});
const formStyle = JSON.stringify({
"transaction": {
"layout": 'default',
"theme": 'default',
"color": {
"primary": "",
"secondary": "",
"border": "",
"surface": "",
"header": {
"text": "",
"background": ""
},
"body": {
"text": "",
"background": ""
}
}
},
"font": ""
});
// Return HTML with embedded variables
return {
transactionId: auth.transactionID,
formContext: auth.formContext,
formConfig,
formStyle,
language: data.language || "en",
};
}
async function generateSibsFormHTML(iam, data) {
const { transactionId, formContext, formConfig, formStyle, language } = await Form(iam, data);
return `
<!DOCTYPE html>
<html lang="${language}">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Payment Form</title>
</head>
<body>
<script src="https://spg.qly.site1.sibs.pt/assets/js/widget.js?id=${transactionId}"></script>
<form class="paymentSPG" spg-context="${formContext}" spg-config='${formConfig}' spg-style='${formStyle}'>
</form>
</body>
</html>`;
}
//# sourceMappingURL=form.js.map