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"; } ?>