Copyright © 2026 Big Domain Sdn Bhd (1255428-V). All Rights Reserved. Malaysia SST Number P13-2106-32000002
All price listed before SST* . SST will be added in the invoice during checkout for payment.
(function () {
'use strict';
var box = document.createElement('div');
box.id = 'bdgf-checkout-data';
box.setAttribute('data-bdgf', '{"mode":"inline","rows":[{"gw":"paypal","name":"PayPal(Visa\/Master)","fee":"Fixed 2 + 3%"}]}');
box.style.display = 'none';
document.body.appendChild(box);
var dataEl = box;
var data;
try { data = JSON.parse(dataEl.getAttribute('data-bdgf')); } catch (e) { return; }
var rows = data.rows || [];
if (!rows.length) { return; }
var style = document.createElement('style');
style.textContent = '#bdgf-table{max-width:520px;margin:14px auto}#bdgf-table p{text-align:center;margin:0 0 6px;font-weight:600}#bdgf-table table{width:100%;border-collapse:collapse;background:#fff;border:1px solid #e3e8ef;border-radius:10px;overflow:hidden}#bdgf-table th{background:#f4f7fb;padding:8px 12px;text-align:left;font-size:13px}#bdgf-table td{padding:8px 12px;border-top:1px solid #eef1f5;font-size:13px}#bdgf-inline{font-size:13px;color:#5a6572;margin-top:6px}#bdgf-inline b{color:#1366E9}';
document.head.appendChild(style);
function feeFor(gw) {
for (var i = 0; i < rows.length; i++) { if (rows[i].gw === gw) { return rows[i]; } }
return null;
}
function esc(s) { var d = document.createElement('div'); d.textContent = s; return d.innerHTML; }
function injectTable(container) {
var wrap = document.createElement('div');
wrap.id = 'bdgf-table';
var html = 'Transaction Fees
| Name | Services Fee | Calculated |
';
rows.forEach(function (r) {
html += '| ' + esc(r.name) + ' | ' + esc(r.fee) + ' | |
';
});
html += '
';
wrap.innerHTML = html;
if (container && container.parentNode) {
container.parentNode.insertBefore(wrap, container.nextSibling);
} else {
document.body.appendChild(wrap);
}
}
function syncInline(container) {
var boxEl = document.getElementById('bdgf-inline');
var sel = null;
if (container) {
var checked = container.querySelector('input[name="paymentmethod"]:checked');
if (checked) { sel = checked.value; }
}
var f = sel ? feeFor(sel) : null;
if (!f) { if (boxEl) { boxEl.remove(); } return; }
if (!boxEl) {
boxEl = document.createElement('div');
boxEl.id = 'bdgf-inline';
var total = locateTotal();
if (total && total.parentNode) { total.parentNode.insertBefore(boxEl, total.nextSibling); }
else if (container && container.parentNode) { container.parentNode.insertBefore(boxEl, container.nextSibling); }
else { document.body.appendChild(boxEl); }
}
boxEl.innerHTML = 'Transaction fees: ' + esc(f.fee) + ' will be added to your invoice.';
}
function locate() {
// Try the canonical WHMCS checkout id first.
return document.getElementById('paymentGatewaysContainer')
|| document.querySelector('[id*="paymentGateways"]')
|| document.querySelector('.payment-methods')
|| document.querySelector('#paymentGateways')
// Heuristic fallback: anchor to the first payment radio.
|| (function () {
var r = document.querySelector('input[name="paymentmethod"]');
if (!r) return null;
return r.closest('div.payment-methods, form, div')
|| r.parentNode;
})();
}
// Locate the "Total Due Today" card so the inline note can sit next to it.
function locateTotal() {
var nodes = document.querySelectorAll('*');
for (var i = 0; i < nodes.length; i++) {
var n = nodes[i];
if (n.childNodes && n.childNodes.length === 1 && n.childNodes[0].nodeType === 3
&& /Total Due Today/i.test(n.textContent)) {
return n.parentNode;
}
}
return null;
}
function boot() {
var container = locate();
if (!container) { return; }
if (data.mode === 'table') {
if (!document.getElementById('bdgf-table')) { injectTable(container); }
} else {
syncInline(container);
}
}
document.addEventListener('change', function (e) {
var t = e.target;
if (t && t.name === 'paymentmethod' && data.mode !== 'table') { syncInline(locate()); }
});
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', boot);
} else {
boot();
}
})();