Update Banyak
This commit is contained in:
+94
-58
@@ -1,96 +1,132 @@
|
||||
<?php
|
||||
// Aktifkan pelaporan kesalahan untuk pengembangan
|
||||
// Aktifkan error log (minimalis)
|
||||
error_reporting(E_ALL);
|
||||
ini_set('display_errors', 1); // Menampilkan kesalahan untuk pengembangan
|
||||
ini_set('display_errors', 0);
|
||||
ini_set('log_errors', 1);
|
||||
ini_set('error_log', __DIR__ . '/../logs/create_link_flip.log');
|
||||
|
||||
// Fungsi sanitasi string
|
||||
function sanitizeString($input) {
|
||||
$str01 = preg_replace('/[^a-zA-Z0-9\s]/', ' ', $input);
|
||||
$str02 = preg_replace('/\s+/', ' ', $str01);
|
||||
$str03 = trim($str02); // Perbaiki penamaan variabel di sini
|
||||
return $str03;
|
||||
return trim($str02);
|
||||
}
|
||||
|
||||
include "../config/connect.php";
|
||||
|
||||
try {
|
||||
$sqlData = "SELECT id, apikey_payment_gateway,url_payment_gateway FROM data_server WHERE status_payment_gateway = 'ACTIVE' AND apikey_payment_gateway != '' AND tokenkey_payment_gateway != '' AND url_payment_gateway != ''";
|
||||
$linkCreated = false; // Penanda apakah ada link yang berhasil dibuat
|
||||
|
||||
// Ambil semua server dengan payment gateway aktif
|
||||
$sqlData = "SELECT id, apikey_payment_gateway, url_payment_gateway
|
||||
FROM data_server
|
||||
WHERE status_payment_gateway = 'ACTIVE'
|
||||
AND apikey_payment_gateway != ''
|
||||
AND tokenkey_payment_gateway != ''
|
||||
AND url_payment_gateway != ''";
|
||||
$stmtData = $pdo->query($sqlData);
|
||||
|
||||
|
||||
while ($dataambil = $stmtData->fetch(PDO::FETCH_ASSOC)) {
|
||||
$idds = $dataambil['id'];
|
||||
|
||||
$idds = $dataambil['id'];
|
||||
$apiKey = $dataambil['apikey_payment_gateway'];
|
||||
$apiUrl = $dataambil['url_payment_gateway'];
|
||||
|
||||
$sqlProfil = "SELECT id, kirim_tagihan FROM profile_tagihan WHERE id_data_server = :id_data_server";
|
||||
// Ambil hanya 1 profile_tagihan untuk server ini
|
||||
$sqlProfil = "SELECT id, kirim_tagihan
|
||||
FROM profile_tagihan
|
||||
WHERE id_data_server = :id_data_server
|
||||
LIMIT 1";
|
||||
$stmtProfil = $pdo->prepare($sqlProfil);
|
||||
$stmtProfil->bindParam(':id_data_server', $idds, PDO::PARAM_INT);
|
||||
$stmtProfil->execute();
|
||||
|
||||
while ($dataprofil = $stmtProfil->fetch(PDO::FETCH_ASSOC)) {
|
||||
$sql = "SELECT * FROM v_tagihan WHERE id_data_server = :idds AND id_profile_tagihan = :idpt AND status = 'buat' AND transaction_id IS NULL AND transaction_link IS NULL AND transaction_status IS NULL AND verifikasi_tagihan > 1000 AND RIGHT(email, 10) = '@gmail.com'";
|
||||
if ($dataprofil = $stmtProfil->fetch(PDO::FETCH_ASSOC)) {
|
||||
// Ambil hanya 1 tagihan yang valid
|
||||
$sql = "SELECT * FROM v_tagihan
|
||||
WHERE id_data_server = :idds
|
||||
AND id_profile_tagihan = :idpt
|
||||
AND status = 'buat'
|
||||
AND transaction_id IS NULL
|
||||
AND transaction_link IS NULL
|
||||
AND transaction_status IS NULL
|
||||
AND verifikasi_tagihan > 1000
|
||||
AND RIGHT(email, 10) = '@gmail.com'
|
||||
ORDER BY id ASC
|
||||
LIMIT 1";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->execute([':idds' => $idds, ':idpt' => $dataprofil['id']]);
|
||||
$data = $stmt->fetch(PDO::FETCH_ASSOC);
|
||||
echo $dataprofil['id'];
|
||||
// Pastikan $data['limit_pembayaran'] ada dan tidak kosong
|
||||
if ($data && isset($data['limit_pembayaran'])) {
|
||||
$day = str_pad($dataprofil['kirim_tagihan'], 2, '0', STR_PAD_LEFT);
|
||||
$cekkirim = substr($data['limit_pembayaran'], 0, 8) . $day;
|
||||
$stmt->execute([
|
||||
':idds' => $idds,
|
||||
':idpt' => $dataprofil['id']
|
||||
]);
|
||||
|
||||
// Pastikan format tanggal valid
|
||||
if ($data = $stmt->fetch(PDO::FETCH_ASSOC)) {
|
||||
try {
|
||||
$date = new DateTime($cekkirim);
|
||||
$date->modify('-1 day');
|
||||
$cektanggal = $date->format('Y-m-d');
|
||||
$sekarang = date('Y-m-d');
|
||||
if (!empty($data['limit_pembayaran'])) {
|
||||
$day = str_pad($dataprofil['kirim_tagihan'], 2, '0', STR_PAD_LEFT);
|
||||
$cekkirim = substr($data['limit_pembayaran'], 0, 8) . $day;
|
||||
|
||||
if ($sekarang == $cektanggal) {
|
||||
// Kode untuk meng-create link payment gateway
|
||||
require '../payment/flip/Flip/Transaction.php';
|
||||
$flip = new FlipPaymentGateway($apiKey, $apiUrl);
|
||||
$date = new DateTime($cekkirim);
|
||||
$date->modify('-1 day');
|
||||
$cektanggal = $date->format('Y-m-d');
|
||||
$sekarang = date('Y-m-d');
|
||||
|
||||
$response = $flip->createBill(
|
||||
sanitizeString($data['keterangan']),
|
||||
sanitizeString($data['verifikasi_tagihan']),
|
||||
$data['email'],
|
||||
sanitizeString($data['nama']),
|
||||
sanitizeString($data['nomor_whatsapp']),
|
||||
sanitizeString($data['alamat'])
|
||||
);
|
||||
if ($sekarang === $cektanggal) {
|
||||
// Buat link payment gateway
|
||||
require '../payment/flip/Flip/Transaction.php';
|
||||
$flip = new FlipPaymentGateway($apiKey, $apiUrl);
|
||||
|
||||
if (!empty($response['link_id']) && !empty($response['link_url']) && !empty($response['status'])) {
|
||||
$transaction_id = $response['link_id'];
|
||||
$transaction_link = $response['link_url'];
|
||||
$transaction_status = $response['status'];
|
||||
$response = $flip->createBill(
|
||||
sanitizeString($data['keterangan']),
|
||||
sanitizeString($data['verifikasi_tagihan']),
|
||||
$data['email'],
|
||||
sanitizeString($data['nama']),
|
||||
sanitizeString($data['nomor_whatsapp']),
|
||||
sanitizeString($data['alamat'])
|
||||
);
|
||||
|
||||
$stmt = $pdo->prepare("UPDATE tagihan SET transaction_id = :transaction_id, transaction_link = :transaction_link, transaction_status = :transaction_status WHERE id = :idtag");
|
||||
$stmt->bindParam(':transaction_id', $transaction_id);
|
||||
$stmt->bindParam(':transaction_link', $transaction_link);
|
||||
$stmt->bindParam(':transaction_status', $transaction_status);
|
||||
$stmt->bindParam(':idtag', $data['id']);
|
||||
$stmt->execute();
|
||||
echo " =>Success ".$data['nama'].", SV :".$data['nama_server'];
|
||||
} else {
|
||||
echo " =>Error ".$data['nama'].", SV :".$data['nama_server'];
|
||||
print_r($response);
|
||||
if (!empty($response['link_id']) && !empty($response['link_url']) && !empty($response['status'])) {
|
||||
$transaction_id = $response['link_id'];
|
||||
$transaction_link = $response['link_url'];
|
||||
$transaction_status = $response['status'];
|
||||
|
||||
$update = $pdo->prepare("UPDATE tagihan
|
||||
SET transaction_id = :transaction_id,
|
||||
transaction_link = :transaction_link,
|
||||
transaction_status = :transaction_status
|
||||
WHERE id = :idtag");
|
||||
$update->execute([
|
||||
':transaction_id' => $transaction_id,
|
||||
':transaction_link' => $transaction_link,
|
||||
':transaction_status' => $transaction_status,
|
||||
':idtag' => $data['id']
|
||||
]);
|
||||
|
||||
echo "[SUCCESS] {$data['nama']} ({$data['id']}) link dibuat.\n";
|
||||
$linkCreated = true; // Set penanda ada link dibuat
|
||||
} else {
|
||||
error_log("[ERROR] Flip API gagal untuk tagihan ID {$data['id']}");
|
||||
}
|
||||
}
|
||||
} else {
|
||||
echo "No Data";
|
||||
}
|
||||
} catch (Exception $e) {
|
||||
echo "Tanggal tidak valid: " . $e->getMessage();
|
||||
error_log("[EXCEPTION] {$e->getMessage()} untuk tagihan ID {$data['id']}");
|
||||
}
|
||||
} else {
|
||||
echo "Data tidak ditemukan";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Jika tidak ada satupun link yang dibuat
|
||||
if (!$linkCreated) {
|
||||
// error_log("[INFO] Tidak ada tagihan yang perlu dibuat link Flip.");
|
||||
echo "[INFO] Tidak ada tagihan yang perlu dibuat link.\n";
|
||||
}
|
||||
|
||||
echo "[DONE] Proses selesai pada " . date('Y-m-d H:i:s') . "\n";
|
||||
} catch (PDOException $e) {
|
||||
error_log('Database Error: ' . $e->getMessage());
|
||||
echo "Database error occurred: " . $e->getMessage();
|
||||
error_log('[DB ERROR] ' . $e->getMessage());
|
||||
echo "[DB ERROR] " . $e->getMessage();
|
||||
} catch (Exception $e) {
|
||||
error_log('General Error: ' . $e->getMessage());
|
||||
echo "An error occurred: " . $e->getMessage();
|
||||
error_log('[GENERAL ERROR] ' . $e->getMessage());
|
||||
echo "[ERROR] " . $e->getMessage();
|
||||
}
|
||||
?>
|
||||
|
||||
Reference in New Issue
Block a user