update baru apk manjapro
This commit is contained in:
+338
-70
@@ -1,78 +1,346 @@
|
||||
<?php
|
||||
|
||||
include '../config/connect.php';
|
||||
|
||||
$response = ["success" => false, "message" => "Terjadi kesalahan"];
|
||||
header('Content-Type: application/json; charset=utf-8');
|
||||
|
||||
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
||||
$id = intval($_POST['id'] ?? 0);
|
||||
$response = [
|
||||
"success" => false,
|
||||
"message" => "Terjadi kesalahan"
|
||||
];
|
||||
|
||||
if ($id <= 0) {
|
||||
echo json_encode(["success" => false, "message" => "ID tidak valid"]);
|
||||
exit;
|
||||
}
|
||||
|
||||
if (!isset($_FILES['bukti_success']) || $_FILES['bukti_success']['error'] !== UPLOAD_ERR_OK) {
|
||||
echo json_encode(["success" => false, "message" => "File gambar tidak ditemukan"]);
|
||||
exit;
|
||||
}
|
||||
|
||||
$uploadDir = __DIR__ . "/../img/bukti_success/";
|
||||
if (!is_dir($uploadDir)) {
|
||||
mkdir($uploadDir, 0777, true);
|
||||
}
|
||||
|
||||
$ext = pathinfo($_FILES['bukti_success']['name'], PATHINFO_EXTENSION);
|
||||
$fileName = "bukti_" . $id . "_" . time() . "." . strtolower($ext);
|
||||
$filePath = $uploadDir . $fileName;
|
||||
|
||||
if (move_uploaded_file($_FILES['bukti_success']['tmp_name'], $filePath)) {
|
||||
// Update status transaksi withdraw
|
||||
$sql = "UPDATE transaksi_withdraw
|
||||
SET status = 'success', bukti_success = :bukti, update_time = :update_time
|
||||
WHERE id = :id";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->execute([
|
||||
":bukti" => "img/bukti_success/" . $fileName,
|
||||
":update_time" => date('Y-m-d H:i:s'),
|
||||
":id" => $id
|
||||
]);
|
||||
|
||||
// Ambil data transaksi_withdraw yang baru saja diupdate
|
||||
$stmt = $pdo->prepare("SELECT * FROM transaksi_withdraw WHERE id = :id");
|
||||
$stmt->bindParam(':id', $id, PDO::PARAM_INT);
|
||||
$stmt->execute();
|
||||
$row = $stmt->fetch(PDO::FETCH_ASSOC); // hanya satu baris
|
||||
|
||||
if ($row) {
|
||||
// Generate nomor unik 10 digit
|
||||
$numid = date('Y_md').$id;
|
||||
$keterangan = "Withdraw Pendapatan Voucher Auto Pilot reff_" . $numid;
|
||||
|
||||
// Cek apakah transaksi dengan keterangan tsb sudah ada
|
||||
$stmt = $pdo->prepare("SELECT keterangan FROM transaksi WHERE keterangan = :keterangan");
|
||||
$stmt->bindParam(':keterangan', $keterangan, PDO::PARAM_STR);
|
||||
$stmt->execute();
|
||||
$tagid = $stmt->fetchColumn();
|
||||
|
||||
if ($tagid === false) {
|
||||
$sql = "INSERT INTO transaksi
|
||||
(id_data_server, keterangan, pemasukan, start_time, metode_pembayaran, status)
|
||||
VALUES (:idds, :keterangan, :pemasukan, :start_time, :metode, 'Pendapatan Hotspot')";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->bindParam(':idds', $row['id_data_server'], PDO::PARAM_INT);
|
||||
$stmt->bindParam(':keterangan', $keterangan, PDO::PARAM_STR);
|
||||
$stmt->bindParam(':pemasukan', $row['nominal'], PDO::PARAM_STR);
|
||||
$stmt->bindValue(':start_time', date('Y-m-d H:i:s'));
|
||||
$stmt->bindValue(':metode', 'API Payment');
|
||||
$stmt->execute();
|
||||
}
|
||||
}
|
||||
|
||||
$response = ["success" => true, "message" => "Update berhasil"];
|
||||
} else {
|
||||
$response = ["success" => false, "message" => "Gagal upload file"];
|
||||
}
|
||||
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
|
||||
http_response_code(405);
|
||||
|
||||
echo json_encode([
|
||||
"success" => false,
|
||||
"message" => "Method tidak diizinkan"
|
||||
]);
|
||||
exit;
|
||||
}
|
||||
|
||||
echo json_encode($response);
|
||||
$id = intval($_POST['id'] ?? 0);
|
||||
|
||||
if ($id <= 0) {
|
||||
http_response_code(400);
|
||||
|
||||
echo json_encode([
|
||||
"success" => false,
|
||||
"message" => "ID tidak valid"
|
||||
]);
|
||||
exit;
|
||||
}
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Validasi upload
|
||||
|--------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
if (
|
||||
!isset($_FILES['bukti_success']) ||
|
||||
!is_array($_FILES['bukti_success']) ||
|
||||
$_FILES['bukti_success']['error'] !== UPLOAD_ERR_OK
|
||||
) {
|
||||
http_response_code(400);
|
||||
|
||||
echo json_encode([
|
||||
"success" => false,
|
||||
"message" => "File gambar tidak ditemukan atau gagal diupload"
|
||||
]);
|
||||
exit;
|
||||
}
|
||||
|
||||
$file = $_FILES['bukti_success'];
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Pastikan benar-benar file hasil HTTP upload
|
||||
|--------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
if (!is_uploaded_file($file['tmp_name'])) {
|
||||
http_response_code(400);
|
||||
|
||||
echo json_encode([
|
||||
"success" => false,
|
||||
"message" => "File upload tidak valid"
|
||||
]);
|
||||
exit;
|
||||
}
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Batasi ukuran file - maksimal 5 MB
|
||||
|--------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
$maxFileSize = 5 * 1024 * 1024;
|
||||
|
||||
if ($file['size'] <= 0 || $file['size'] > $maxFileSize) {
|
||||
http_response_code(400);
|
||||
|
||||
echo json_encode([
|
||||
"success" => false,
|
||||
"message" => "Ukuran gambar maksimal 5 MB"
|
||||
]);
|
||||
exit;
|
||||
}
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Validasi MIME berdasarkan ISI FILE
|
||||
| Jangan percaya extension / Content-Type dari browser
|
||||
|--------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
$finfo = new finfo(FILEINFO_MIME_TYPE);
|
||||
$mimeType = $finfo->file($file['tmp_name']);
|
||||
|
||||
$allowedMimeTypes = [
|
||||
'image/jpeg' => 'jpg',
|
||||
'image/png' => 'png',
|
||||
'image/webp' => 'webp',
|
||||
];
|
||||
|
||||
if (!isset($allowedMimeTypes[$mimeType])) {
|
||||
http_response_code(400);
|
||||
|
||||
echo json_encode([
|
||||
"success" => false,
|
||||
"message" => "Format file tidak diizinkan. Gunakan JPG, PNG, atau WEBP."
|
||||
]);
|
||||
exit;
|
||||
}
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Pastikan file memang dapat dibaca sebagai gambar
|
||||
|--------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
$imageInfo = @getimagesize($file['tmp_name']);
|
||||
|
||||
if ($imageInfo === false) {
|
||||
http_response_code(400);
|
||||
|
||||
echo json_encode([
|
||||
"success" => false,
|
||||
"message" => "File bukan gambar yang valid"
|
||||
]);
|
||||
exit;
|
||||
}
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Tentukan folder upload
|
||||
|--------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
$uploadDir = __DIR__ . '/../img/bukti_success/';
|
||||
|
||||
if (!is_dir($uploadDir)) {
|
||||
if (!mkdir($uploadDir, 0755, true)) {
|
||||
http_response_code(500);
|
||||
|
||||
echo json_encode([
|
||||
"success" => false,
|
||||
"message" => "Folder upload tidak dapat dibuat"
|
||||
]);
|
||||
exit;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Nama file dibuat SERVER
|
||||
| Extension berasal dari MIME hasil pemeriksaan server
|
||||
|--------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
$extension = $allowedMimeTypes[$mimeType];
|
||||
|
||||
try {
|
||||
$randomName = bin2hex(random_bytes(16));
|
||||
} catch (Exception $e) {
|
||||
http_response_code(500);
|
||||
|
||||
echo json_encode([
|
||||
"success" => false,
|
||||
"message" => "Gagal membuat nama file"
|
||||
]);
|
||||
exit;
|
||||
}
|
||||
|
||||
$fileName = 'bukti_' . $id . '_' . $randomName . '.' . $extension;
|
||||
$filePath = $uploadDir . $fileName;
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Simpan file
|
||||
|--------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
if (!move_uploaded_file($file['tmp_name'], $filePath)) {
|
||||
http_response_code(500);
|
||||
|
||||
echo json_encode([
|
||||
"success" => false,
|
||||
"message" => "Gagal upload file"
|
||||
]);
|
||||
exit;
|
||||
}
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Permission file hasil upload
|
||||
|--------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
chmod($filePath, 0644);
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Update transaksi withdraw
|
||||
|--------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
try {
|
||||
$sql = "UPDATE transaksi_withdraw
|
||||
SET status = 'success',
|
||||
bukti_success = :bukti,
|
||||
update_time = :update_time
|
||||
WHERE id = :id";
|
||||
|
||||
$stmt = $pdo->prepare($sql);
|
||||
|
||||
$stmt->execute([
|
||||
":bukti" => "img/bukti_success/" . $fileName,
|
||||
":update_time" => date('Y-m-d H:i:s'),
|
||||
":id" => $id
|
||||
]);
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Ambil transaksi yang baru diupdate
|
||||
|--------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
$stmt = $pdo->prepare(
|
||||
"SELECT * FROM transaksi_withdraw WHERE id = :id"
|
||||
);
|
||||
|
||||
$stmt->bindParam(':id', $id, PDO::PARAM_INT);
|
||||
$stmt->execute();
|
||||
|
||||
$row = $stmt->fetch(PDO::FETCH_ASSOC);
|
||||
|
||||
if ($row) {
|
||||
$numid = date('Y_md') . $id;
|
||||
|
||||
$keterangan =
|
||||
"Withdraw Pendapatan Voucher Auto Pilot reff_" . $numid;
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Cek transaksi duplikat
|
||||
|--------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
$stmt = $pdo->prepare(
|
||||
"SELECT keterangan
|
||||
FROM transaksi
|
||||
WHERE keterangan = :keterangan"
|
||||
);
|
||||
|
||||
$stmt->bindParam(
|
||||
':keterangan',
|
||||
$keterangan,
|
||||
PDO::PARAM_STR
|
||||
);
|
||||
|
||||
$stmt->execute();
|
||||
|
||||
$tagid = $stmt->fetchColumn();
|
||||
|
||||
if ($tagid === false) {
|
||||
|
||||
$sql = "INSERT INTO transaksi
|
||||
(
|
||||
id_data_server,
|
||||
keterangan,
|
||||
pemasukan,
|
||||
start_time,
|
||||
metode_pembayaran,
|
||||
status
|
||||
)
|
||||
VALUES
|
||||
(
|
||||
:idds,
|
||||
:keterangan,
|
||||
:pemasukan,
|
||||
:start_time,
|
||||
:metode,
|
||||
'Pendapatan Hotspot'
|
||||
)";
|
||||
|
||||
$stmt = $pdo->prepare($sql);
|
||||
|
||||
$stmt->bindParam(
|
||||
':idds',
|
||||
$row['id_data_server'],
|
||||
PDO::PARAM_INT
|
||||
);
|
||||
|
||||
$stmt->bindParam(
|
||||
':keterangan',
|
||||
$keterangan,
|
||||
PDO::PARAM_STR
|
||||
);
|
||||
|
||||
$stmt->bindParam(
|
||||
':pemasukan',
|
||||
$row['nominal'],
|
||||
PDO::PARAM_STR
|
||||
);
|
||||
|
||||
$stmt->bindValue(
|
||||
':start_time',
|
||||
date('Y-m-d H:i:s')
|
||||
);
|
||||
|
||||
$stmt->bindValue(
|
||||
':metode',
|
||||
'API Payment'
|
||||
);
|
||||
|
||||
$stmt->execute();
|
||||
}
|
||||
}
|
||||
|
||||
$response = [
|
||||
"success" => true,
|
||||
"message" => "Update berhasil"
|
||||
];
|
||||
|
||||
} catch (Throwable $e) {
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| DB gagal → hapus file yang tadi sudah terupload
|
||||
|--------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
if (is_file($filePath)) {
|
||||
unlink($filePath);
|
||||
}
|
||||
|
||||
http_response_code(500);
|
||||
|
||||
$response = [
|
||||
"success" => false,
|
||||
"message" => "Terjadi kesalahan saat menyimpan data"
|
||||
];
|
||||
}
|
||||
|
||||
echo json_encode($response);
|
||||
Reference in New Issue
Block a user