Files
manjapro_v6/load/cronjob/create_link_paydisini.php
2026-08-20 18:39:37 +07:00

149 lines
4.8 KiB
PHP

<?php
// date_default_timezone_set('Asia/Jakarta');
include "/www/wwwroot/bilspro/config/connect.php";
require "/www/wwwroot/bilspro/payment/client/jwtoken/url_paymnet_encrypt.php";
function createUrlpaydisini($id)
{
if (empty($id) || !is_numeric($id)) {
return ["status" => false];
}
global $pdo;
try {
$stmt = $pdo->prepare("SELECT nama_server, nama FROM v_tagihan WHERE id = :id LIMIT 1");
if (!$stmt->execute(['id' => $id])) {
return ["status" => false];
}
$pelanggan = $stmt->fetch(PDO::FETCH_ASSOC);
if (!$pelanggan) {
return ["status" => false];
}
$namaServer = $pelanggan['nama_server'] ?? '';
$namaPelanggan = $pelanggan['nama'] ?? '';
$server = mb_strtolower(preg_replace('/[^a-zA-Z0-9]+/', '', (string)$namaServer));
$nama = mb_strtolower(preg_replace('/[^a-zA-Z0-9]+/', '', (string)$namaPelanggan));
if ($server === '' || $nama === '') {
return ["status" => false];
}
$encId = jwt_encrypt($id);
if (empty($encId) || !is_string($encId)) {
return ["status" => false];
}
return [
"status" => true,
"url" => "pay.manjapro.net/{$server}/{$nama}/{$encId}"
];
} catch (Throwable $e) {
// kalau mau log error: error_log($e->getMessage());
return ["status" => false];
}
}
try {
// Ambil data server yang menggunakan PayDisini
$stmt = $pdo->prepare("
SELECT id, nama_server, payment_gateway
FROM data_server
WHERE payment_gateway IN ('paydisini', 'winpay', 'doku')
AND status_payment_gateway = 'ACTIVE'
");
$stmt->execute();
$settings = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($settings as $pset) {
// Ambil tagihan status 'buat'
$stmt = $pdo->prepare("
SELECT id, id_pelanggan, nama
FROM v_tagihan
WHERE status = 'buat'
AND id_data_server = :id_data_server
AND transaction_link IS NULL
LIMIT 40
");
$stmt->bindParam(':id_data_server', $pset['id'], PDO::PARAM_INT);
$stmt->execute();
$remands = $stmt->fetchAll(PDO::FETCH_ASSOC);
echo "[" . date('d-m-Y H:i:s') . "] =>: Create Link Server {$pset['nama_server']} on prossesing.\n";
foreach ($remands as $presend) {
if ($pset['payment_gateway'] == 'paydisini') {
// Generate link Paydisini untuk tagihan ini
$link_paydisini = createUrlpaydisini($presend['id']);
if (!empty($link_paydisini['status']) && $link_paydisini['status'] === true) {
$transaction_link_paydisini = $link_paydisini['url'];
// Update tagihan
$stmt = $pdo->prepare("
UPDATE tagihan
SET transaction_link = :transaction_link
WHERE id = :idtag
");
$stmt->bindParam(':transaction_link', $transaction_link_paydisini);
$stmt->bindParam(':idtag', $presend['id']);
$stmt->execute();
echo "SUCCESS: Tagihan ID {$presend['nama']} berhasil dibuatkan link.\n";
} else {
echo "ERROR: Gagal membuat link PayDisini untuk tagihan ID {$presend['id']}.\n";
}
}
elseif ($pset['payment_gateway'] == 'winpay' || $pset['payment_gateway'] == 'doku') {
$usr = $pdo->prepare("SELECT token_id FROM pelanggan WHERE id = :id LIMIT 1");
$usr->bindParam(':id', $presend['id_pelanggan'], PDO::PARAM_INT);
$usr->execute();
$customer = $usr->fetch(PDO::FETCH_ASSOC);
if (!$customer || empty($customer['token_id'])) {
echo "ERROR: Token tidak ditemukan untuk pelanggan ID {$presend['nama']}.\n";
continue;
}
$transaction_link_simple = 'wp.manjapro.net/' . $customer['token_id'];
// Update tagihan
$stmt = $pdo->prepare("
UPDATE tagihan
SET transaction_link = :transaction_link
WHERE id = :idtag
");
$stmt->bindParam(':transaction_link', $transaction_link_simple);
$stmt->bindParam(':idtag', $presend['id']);
$stmt->execute();
echo "SUCCESS: Tagihan ID {$presend['nama']} berhasil dibuatkan link (WP/DOKU).\n";
}
else {
echo "[GAGAL] Create Link Tagihan " . $presend['nama'] . "\n";
}
}
}
} catch (Throwable $e) {
echo "SYSTEM ERROR: " . $e->getMessage() . "\n";
}
?>