prepare("SELECT * FROM master_template_pesan WHERE id = :id");
$stmt3->execute([':id' => $page[1]]);
$pesan = $stmt3->fetch(PDO::FETCH_ASSOC);
$pesanDb = json_decode($pesan['pesan_official'], true);
if ($pesan['nama'] == 'Pesan Melunasi Tagihan' OR
$pesan['nama'] == 'Pesan Isolir Pelanggan' OR
$pesan['nama'] == 'Pesan Peringatan Tagihan' OR
$pesan['nama'] == 'Pesan Kirim Tagihan') {
$baseVariable = [
[ "key" => "#usr", "label" => "Nama Pelanggan" ],
[ "key" => "#add", "label" => "Alamat Pelanggan" ],
[ "key" => "#ppp", "label" => "PPPOE Pelanggan / ID Pelanggan" ],
[ "key" => "#lyn", "label" => "Paket Berlangganan" ],
[ "key" => "#hly", "label" => "Harga Layanan" ],
[ "key" => "#jns", "label" => "Jenis Layanan" ],
[ "key" => "#ket", "label" => "Keterangan Tagihan" ],
[ "key" => "#jum", "label" => "Jumlah Tagihan" ],
[ "key" => "#ppn", "label" => "PPN" ],
[ "key" => "#unk", "label" => "Kode Unik (for payment gateway)" ],
[ "key" => "#tot", "label" => "Total Tagihan" ],
[ "key" => "#lmt", "label" => "Limit Pembayaran" ],
[ "key" => "#lnk", "label" => "Link Payment Gateway" ],
[ "key" => "#kwt_link", "label" => "Url Gambar Kwitansi" ]
];
} else {
$baseVariable = [
[ "key" => "#usr", "label" => "Nama Pelanggan" ],
[ "key" => "#add", "label" => "Alamat Pelanggan" ],
[ "key" => "#ppp", "label" => "PPPOE Pelanggan / ID Pelanggan" ],
[ "key" => "#lyn", "label" => "Paket Berlangganan" ],
[ "key" => "#hly", "label" => "Harga Layanan" ],
[ "key" => "#jns", "label" => "Jenis Layanan" ]
];
}
?>
prepare($sql);
$stmt3->execute($ids);
$wacapi = $stmt3->fetch(PDO::FETCH_ASSOC);
$accessToken = $wacapi['token_access'];
$phoneNumberId = $wacapi['waba_id'];
// URL endpoint template
$url = "https://graph.facebook.com/v17.0/$phoneNumberId/message_templates";
// Request ke Cloud API
$ch = curl_init();
curl_setopt_array($ch, [
CURLOPT_URL => $url,
CURLOPT_HTTPHEADER => ["Authorization: Bearer $accessToken"],
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 15
]);
$response = curl_exec($ch);
if (curl_errno($ch)) {
throw new Exception("cURL Error: " . curl_error($ch));
}
curl_close($ch);
// Decode JSON
$data = json_decode($response, true);
if (!isset($data['data'])) {
throw new Exception("Gagal mengambil template dari Cloud API. Response: " . $response);
}
// Ambil list template
$templates = $data['data'] ?? [];
// echo "
";
// print_r($templates);
// echo "";
// Template yang terpilih (dari GET)
$selectedTemplate = $_GET['template'] ?? '';
} catch (Exception $e) {
echo "
Error: " . htmlspecialchars($e->getMessage()) . "
";
$templates = [];
$selectedTemplate = '';
}
?>
PERHATIAN..!
Untuk memposisikan data dari pelanggan silahkan isi dengan Variabel di bawah ini :
| Variabel |
|
Label |
' . $base['key'] . ' |
: |
' . $base['label'] . ' |
';
}
?>
prepare("SELECT * FROM master_template_pesan WHERE id = :id");
$stmt3->execute([':id' => $page[1]]);
$pesan = $stmt3->fetch(PDO::FETCH_ASSOC);
$stmt3 = $pdo->prepare("SELECT status_payment_gateway FROM data_server WHERE id = :ids");
$stmt3->execute([':ids' => $pesan['id_data_server']]);
$server = $stmt3->fetch(PDO::FETCH_ASSOC);
// print_r($_SESSION);
?>
Warning..!!
Untuk memposisikan data dari pelanggan silahkan isi dengan Variabel di bawah ini :
#usr => Nama Pelanggan
#add => Alamat Pelanggan
#ppp => PPPOE Pelanggan / ID Pelanggan
#lyn => Paket Berlangganan
#hly => Harga Layanan
#jns => Jenis Layanan
#ket => Keterangan Tagihan
#jum => Jumlah Tagihan
#ppn => PPN
#unk => Kode Unik (for payment gateway)
#tot => Total Tagihan
#lmt => Limit Pembayaran
#lnk => Link Payment Gateway
Contoh :
*Tagihan layanan internet*
Nama : #usr
Jumlah Tagihan : #jum
PPN 11% : #ppn
Total Tagihan : #tot
PERHATIAN..!!
Jika Status Pesan Aktif dan Interval di isi, maka pelanggan yang aktif dan koneksi nya mati akan di beri pesan otomatis setelah Interval yang telah anda tentukan
$maxFileSize
) {
sweetAlert("Ukuran gambar maksimal 5 MB", "error");
return;
}
// ========================================================
// DETEKSI MIME DARI ISI FILE
// ========================================================
$finfo = new finfo(FILEINFO_MIME_TYPE);
$mimeType = $finfo->file($file['tmp_name']);
// Hanya format berikut yang diperbolehkan
$allowedMimeTypes = [
'image/jpeg' => 'jpg',
'image/png' => 'png',
'image/webp' => 'webp',
];
if (
$mimeType === false ||
!isset($allowedMimeTypes[$mimeType])
) {
sweetAlert(
"File tidak diizinkan. Hanya JPG, PNG, dan WEBP.",
"error"
);
return;
}
// ========================================================
// PASTIKAN BENAR-BENAR GAMBAR
// ========================================================
$imageInfo = @getimagesize($file['tmp_name']);
if ($imageInfo === false) {
sweetAlert("File bukan gambar yang valid", "error");
return;
}
// MIME hasil getimagesize harus sama
if (($imageInfo['mime'] ?? '') !== $mimeType) {
sweetAlert("Format gambar tidak valid", "error");
return;
}
// ========================================================
// EXTENSION DITENTUKAN SERVER
// BUKAN DARI NAMA FILE USER
// ========================================================
$extension = $allowedMimeTypes[$mimeType];
try {
$randomName = bin2hex(random_bytes(16));
} catch (Throwable $e) {
sweetAlert("Gagal membuat nama file", "error");
return;
}
$nameFile = 'kwitansi_' . $randomName . '.' . $extension;
// Gunakan absolute filesystem path
$targetDir = __DIR__ . '/img/';
// Buat folder jika belum tersedia
if (!is_dir($targetDir)) {
if (!mkdir($targetDir, 0755, true)) {
sweetAlert("Folder upload tidak dapat dibuat", "error");
return;
}
}
$targetFile = $targetDir . $nameFile;
// ========================================================
// UPLOAD
// ========================================================
if (!move_uploaded_file(
$file['tmp_name'],
$targetFile
)) {
sweetAlert("Gagal menyimpan gambar", "error");
return;
}
// Permission file
chmod($targetFile, 0644);
$SqlPost = ", backround_kwitansi = :nameFile";
}
// ============================================================
// PESAN KONEKSI OFF
// ============================================================
if (
isset($pesan['nama']) &&
$pesan['nama'] === 'Pesan Koneksi Off'
) {
$status_koneksi_off =
$_POST['status_koneksi_off'] ?? '';
$interval = preg_replace(
"/[^0-9]/",
"",
$_POST['interval'] ?? ''
);
$sqlPostOff = "
, status_koneksi_off = :status_koneksi_off
, interval_koneksi_off = :interval_koneksi_off
";
}
// ============================================================
// UPDATE DATABASE
// ============================================================
$query = "
UPDATE master_template_pesan
SET pesan = :pesan
$SqlPost
$sqlPostOff
WHERE nama = :nama
AND id_data_server IN ($SvId)
";
$stmt = $pdo->prepare($query);
$stmt->bindValue(
':pesan',
$_POST['fpesan'] ?? '',
PDO::PARAM_STR
);
// Jika gambar berhasil diupload
if ($SqlPost !== '') {
$stmt->bindValue(
':nameFile',
$nameFile,
PDO::PARAM_STR
);
}
// Jika Pesan Koneksi Off
if ($sqlPostOff !== '') {
$stmt->bindValue(
':status_koneksi_off',
$status_koneksi_off,
PDO::PARAM_STR
);
$stmt->bindValue(
':interval_koneksi_off',
$interval,
PDO::PARAM_STR
);
}
$stmt->bindValue(
':nama',
$pesan['nama'],
PDO::PARAM_STR
);
try {
$stmt->execute();
$rows = $stmt->rowCount();
if ($rows > 0) {
sweetAlert(
"Data telah diubah ($rows baris terpengaruh)",
"success"
);
} else {
sweetAlert(
"Tidak ada data yang berubah",
"info"
);
}
} catch (PDOException $e) {
// Jangan tampilkan detail database ke browser
error_log(
'Update master_template_pesan gagal: ' .
$e->getMessage()
);
sweetAlert(
"Gagal memperbarui data",
"error"
);
}
}
?>
prepare("SELECT id FROM pelanggan WHERE status = 'aktif' AND id_data_server = '$SvId'");
$stmt->execute();
$data = $stmt->fetchAll();
$id = $data[0]['id'];
$url = "";
$APIwa->Create_Pesan($SvId,$id,$pesan['nama']);
} elseif ($pesan['nama'] == 'Pesan Melunasi Tagihan' || $pesan['nama'] == 'Pesan Isolir Pelanggan' || $pesan['nama'] == 'Pesan Peringatan Tagihan' || $pesan['nama'] == 'Pesan Kirim Tagihan') {
if($server['status_payment_gateway'] == 'ACTIVE' AND $pesan['nama'] == 'Pesan Kirim Tagihan') {
$sqldata = "SELECT id,img_invoice FROM tagihan WHERE transaction_link != '' AND id_data_server = '$SvId'";
} else {
$sqldata = "SELECT id,img_invoice FROM tagihan WHERE status = 'lunas' AND id_data_server = '$SvId'";
}
$stmt = $pdo->prepare($sqldata);
$stmt->execute();
$data = $stmt->fetchAll();
$id = $data[0]['id'];
$url = baseurl()."/invoice/".$data[0]['img_invoice'];
$APIwa->Create_Pesan($SvId,$id,$pesan['nama'],'tag');
}
$Pesan = $APIwa->Get_Pesan();
if ($pesan['nama'] == 'Pesan Melunasi Tagihan') {
$APIwa->Send_Pesan($SvId,'sendMediaFromUrl',[$_POST['nomor']],$Pesan, $url);
} else {
$APIwa->Send_Pesan($SvId,'sendMessage',[$_POST['nomor']],$Pesan);
}
sweetAlert("Pesan akan segera di kirim ke nomor ".$_POST['nomor'],"success");
}
?>