UNPKG

sibs-payments

Version:

A payment system module for SIBS payments integration with card tokenization support

123 lines 4.03 kB
"use strict"; 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