/***
@ Base: https://www.hotelmurah.com/
@ Author: Shannz
@ Note: Check postpaid PLN bills
***/
import axios from 'axios';
import qs from 'qs';
const CONFIG = {
URL_INIT: 'https://www.hotelmurah.com/pulsa/pln',
URL_CHECK: 'https://www.hotelmurah.com/pulsa/pln/cari_id_android',
HEADERS: {
'User-Agent': 'Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Mobile Safari/537.36',
'Accept': 'application/json, text/javascript, */*; q=0.01',
'sec-ch-ua-platform': '"Android"',
'sec-ch-ua-mobile': '?1',
'origin': 'https://www.hotelmurah.com',
'referer': 'https://www.hotelmurah.com/pulsa/pln',
'x-requested-with': 'XMLHttpRequest'
}
};
export const pln = {
check: async (customerId, phoneNumber = '081234567890') => {
try {
const initRes = await axios.get(CONFIG.URL_INIT, {
headers: CONFIG.HEADERS
});
const rawCookies = initRes.headers['set-cookie'];
if (!rawCookies) return { status: false, msg: 'Gagal mengambil cookie.' };
const getCookieValue = (name) => {
const found = rawCookies.find(c => c.startsWith(name));
return found ? found.split(';')[0].split('=')[1] : null;
};
const csrfToken = getCookieValue('hotelmurah_csrf_cookie_name');
const ciSession = getCookieValue('ci_session');
if (!csrfToken || !ciSession) return { status: false, msg: 'Token CSRF tidak ditemukan.' };
const postData = qs.stringify({
'id': customerId,
'jenis': '1',
'kode': 'TU',
'nomer_hp': phoneNumber,
'hm_csrf_hash_name': csrfToken
});
const checkRes = await axios.post(CONFIG.URL_CHECK, postData, {
headers: {
...CONFIG.HEADERS,
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
'Cookie': `hotelmurah_csrf_cookie_name=${csrfToken}; ci_session=${ciSession}`
}
});
return checkRes.data;
} catch (error) {
return { status: false, msg: error.message };
}
}
};