You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

405 lines
24 KiB

<?php
if (file_exists(__DIR__."/../../pp-config.php")) {
if (file_exists(__DIR__.'/../../maintenance.lock')) {
if (file_exists(__DIR__.'/../../pp-include/pp-maintenance.php')) {
}else{
die('System is under maintenance. Please try again later.');
}
exit();
}else{
if (file_exists(__DIR__.'/../../pp-include/pp-controller.php')) {
if (file_exists(__DIR__.'/../../pp-include/pp-view.php')) {
}else{
echo 'System is under maintenance. Please try again later.';
exit();
}
}else{
echo 'System is under maintenance. Please try again later.';
exit();
}
if (file_exists(__DIR__.'/../../pp-include/pp-model.php')) {
include(__DIR__."/../../pp-include/pp-model.php");
}else{
echo 'System is under maintenance. Please try again later.';
exit();
}
}
}else{
echo 'System is under maintenance. Please try again later.';
exit();
}
if (!defined('pp_allowed_access')) {
die('Direct access not allowed');
}
if(isset($global_user_login) && $global_user_login == true){
if(isset($_GET['ref'])){
$ref = escape_string($_GET['ref']);
$response_transaction_checker = json_decode(getData($db_prefix.'transaction','WHERE id= "'.$ref.'" AND transaction_status NOT IN ("initialize")'),true);
if($response_transaction_checker['status'] == true){
}else{
?>
<script>
load_content('Transaction','transaction','nav-btn-transaction');
</script>
<?php
exit();
}
}else{
echo 'System is under maintenance. Please try again later.';
exit();
}
?>
<!-- Page Header -->
<div class="page-header">
<div class="row align-items-end">
<div class="col-sm mb-2 mb-sm-0">
<h1 class="page-header-title">View Transaction</h1>
</div>
<!-- End Col -->
<div class="col-auto">
<div class="d-sm-flex justify-content-lg-end align-items-sm-center">
<a class="btn btn-outline-danger btn-sm mb-2 mb-sm-0 me-2 btn-bulk-action-delete" href="javascript:void(0)" onclick="bulk_action('btn-bulk-action-delete', 'delete')">
<i class="bi-trash"></i> Delete
</a>
<a class="btn btn-primary btn-sm mb-2 mb-sm-0 me-2 btn-bulk-action-approved" href="javascript:void(0)" onclick="bulk_action('btn-bulk-action-approved', 'approved')">
<i class="bi-check-circle"></i> Approved
</a>
<a class="btn btn-warning btn-sm mb-2 mb-sm-0 me-2 btn-bulk-action-refund" href="javascript:void(0)" onclick="bulk_action('btn-bulk-action-refund', 'refund')">
<i class="bi-arrow-90deg-left"></i> Refund
</a>
<a class="btn btn-success btn-sm mb-2 mb-sm-0 me-2 btn-bulk-action-send-ipn" href="javascript:void(0)" onclick="bulk_action('btn-bulk-action-send-ipn', 'send-ipn')">
<i class="bi-send"></i> Send IPN
</a>
</div>
</div>
</div>
<!-- End Row -->
</div>
<!-- End Page Header -->
<div class="row justify-content-center">
<div class="col-lg-9">
<div class="d-grid gap-3 gap-lg-5">
<!-- Card -->
<span class="response-bulk-action"></span>
<div class="card">
<div class="card-header">
<h2 class="card-title h4">Transaction Status</h2>
</div>
<!-- Body -->
<div class="card-body">
<!-- Form -->
<!-- Form -->
<div class="row">
<div class="col-sm-4 mb-3">
<label class="form-label fw-medium text-dark">Payment ID</label>
<div class="fw-bold text-dark"><?php echo $response_transaction_checker['response'][0]['pp_id']?></div>
</div>
<div class="col-sm-4 mb-3">
<label class="form-label fw-medium text-dark">Date</label>
<div class="fw-bold text-dark"><?php echo convertDateTime($response_transaction_checker['response'][0]['created_at'])?></div>
</div>
<div class="col-sm-4">
<label class="form-label fw-medium text-dark">Status</label>
<div>
<?php
if ($response_transaction_checker['response'][0]['transaction_status'] == 'completed') {
echo '<span class="badge bg-primary">Completed</span>';
} elseif ($response_transaction_checker['response'][0]['transaction_status'] == 'pending') {
echo '<span class="badge bg-warning text-dark">Pending</span>';
} elseif ($response_transaction_checker['response'][0]['transaction_status'] == 'failed') {
echo '<span class="badge bg-danger">Failed</span>';
} elseif ($response_transaction_checker['response'][0]['transaction_status'] == 'refunded') {
echo '<span class="badge bg-warning text-dark">Refunded</span>';
} else {
echo '<span class="badge bg-dark">Unknown</span>';
}
?>
</div>
</div>
</div>
<!-- End Form -->
</div>
<!-- End Body -->
</div>
<!-- End Card -->
<!-- Card -->
<div class="card">
<div class="card-header">
<ul class="nav nav-pills justify-content-left" role="tablist">
<li class="nav-item">
<a class="nav-link active" id="nav-one-transaction-details-tab" data-bs-toggle="pill" href="#nav-one-transaction-details" role="tab" aria-controls="nav-one-transaction-details" aria-selected="true" style="padding: 10px;">
<div class="d-flex align-items-center">
<i class="bi-receipt" style="margin-right: 5px;"></i> Transaction Details
</div>
</a>
</li>
<li class="nav-item">
<a class="nav-link" id="nav-two-customer-tab" data-bs-toggle="pill" href="#nav-two-customer" role="tab" aria-controls="nav-two-customer" aria-selected="false" style="padding: 10px;">
<div class="d-flex align-items-center">
<i class="bi-people" style="margin-right: 5px;"></i> Customer
</div>
</a>
</li>
<?php
if($response_transaction_checker['response'][0]['transaction_product_name'] !== "--"){
?>
<li class="nav-item">
<a class="nav-link" id="nav-two-product-tab" data-bs-toggle="pill" href="#nav-two-product" role="tab" aria-controls="nav-two-product" aria-selected="false" style="padding: 10px;">
<div class="d-flex align-items-center">
<i class="bi-handbag-fill" style="margin-right: 5px;"></i> Product
</div>
</a>
</li>
<?php
}
?>
</ul>
</div>
<!-- Body -->
<div class="card-body">
<div class="tab-content">
<div class="tab-pane fade show active" id="nav-one-transaction-details" role="tabpanel" aria-labelledby="nav-one-transaction-details-tab">
<div class="card">
<div class="card-header">
<h2 class="card-title h4">Transaction Information</h2>
</div>
<div class="card-body">
<div class="row">
<div class="col-sm-4 mb-3">
<label class="form-label fw-medium text-dark">Payment Method</label>
<div class="fw-bold text-dark"><?php echo $response_transaction_checker['response'][0]['payment_method']?></div>
</div>
<div class="col-sm-4 mb-3">
<label class="form-label fw-medium text-dark">Payment Curreny</label>
<div class="fw-bold text-dark"><?php echo $response_transaction_checker['response'][0]['transaction_currency']?></div>
</div>
<div class="col-sm-4 mb-3">
<label class="form-label fw-medium text-dark">Sender</label>
<div class="fw-bold text-dark"><?php echo $response_transaction_checker['response'][0]['payment_sender_number']?></div>
</div>
<?php
if($response_transaction_checker['response'][0]['payment_verify_way'] == "slip"){
?>
<div class="col-sm-4 mb-3">
<label class="form-label fw-medium text-dark">Transaction Slip</label><br>
<button class="btn btn-primary btn-sm" data-bs-toggle="modal" data-bs-target="#transaction-slip">View</button>
</div>
<div class="modal fade" id="transaction-slip" tabindex="-1" role="dialog" aria-labelledby="transaction-slip" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="transaction-slip">Transaction Slip</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<span class="response-transaction-slip"></span>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-white" data-bs-dismiss="modal">Close</button>
</div>
</div>
</div>
</div>
<script>
function load_transaction_slip(){
$('.response-transaction-slip').html('<center><img src="<?php if(isset($response_transaction_checker['response'][0]['payment_verify_id'])){if($response_transaction_checker['response'][0]['payment_verify_id'] == "--"){echo 'https://cdn.piprapay.com/media/favicon.png';}else{echo $response_transaction_checker['response'][0]['payment_verify_id'];};}else{echo 'https://cdn.piprapay.com/media/favicon.png';}?>" style="margin-top: 10px;max-width: 200px;"></center>');
}
load_transaction_slip();
</script>
<?php
}else{
?>
<div class="col-sm-4 mb-3">
<label class="form-label fw-medium text-dark">Transaction Id</label>
<div class="fw-bold text-dark"><?php echo $response_transaction_checker['response'][0]['payment_verify_id']?></div>
</div>
<?php
}
?>
</div>
<!-- End Form -->
</div>
</div>
<div class="card mt-3">
<div class="card-header">
<h2 class="card-title h4">Financial Details</h2>
</div>
<div class="card-body">
<div class="row">
<div class="col-sm-4 mb-3">
<label class="form-label fw-medium text-dark">Amount</label>
<div class="fw-bold text-dark"><?php echo $response_transaction_checker['response'][0]['transaction_currency'].' '.number_format($response_transaction_checker['response'][0]['transaction_amount'],2)?></div>
</div>
<div class="col-sm-4 mb-3">
<label class="form-label fw-medium text-dark">Processing Fee</label>
<div class="fw-bold text-dark"><?php echo $response_transaction_checker['response'][0]['transaction_currency'].' '.number_format($response_transaction_checker['response'][0]['transaction_fee'],2)?></div>
</div>
<div class="col-sm-4 mb-3">
<label class="form-label fw-medium text-dark">Total amount</label>
<div class="fw-bold text-dark"><?php echo $response_transaction_checker['response'][0]['transaction_currency'].' '.number_format($response_transaction_checker['response'][0]['transaction_amount']+$response_transaction_checker['response'][0]['transaction_fee'],2)?></div>
</div>
<div class="col-sm-4 mb-3">
<label class="form-label fw-medium text-dark">Refunded amount</label>
<div class="fw-bold text-dark"><?php echo $response_transaction_checker['response'][0]['transaction_currency'].' '.number_format($response_transaction_checker['response'][0]['transaction_refund_amount'],2)?></div>
</div>
<div class="col-sm-4 mb-3">
<label class="form-label fw-medium text-dark">Net Amount</label>
<div class="fw-bold text-dark"><strong><?php echo $response_transaction_checker['response'][0]['transaction_currency'].' '.number_format($response_transaction_checker['response'][0]['transaction_amount']+$response_transaction_checker['response'][0]['transaction_fee']-$response_transaction_checker['response'][0]['transaction_refund_amount'],2)?></strong></div>
</div>
</div>
</div>
</div>
</div>
<div class="tab-pane fade" id="nav-two-customer" role="tabpanel" aria-labelledby="nav-two-customer-tab">
<div class="row">
<div class="col-sm-4 mb-3">
<label class="form-label fw-medium text-dark">Name</label>
<div class="fw-bold text-dark"><?php echo $response_transaction_checker['response'][0]['c_name']?></div>
</div>
<div class="col-sm-4 mb-3">
<label class="form-label fw-medium text-dark">Email or Mobile</label>
<div class="fw-bold text-dark"><?php echo $response_transaction_checker['response'][0]['c_email_mobile']?></div>
</div>
</div>
</div>
<?php
if($response_transaction_checker['response'][0]['transaction_product_name'] !== "--"){
?>
<div class="tab-pane fade" id="nav-two-product" role="tabpanel" aria-labelledby="nav-two-product-tab">
<div class="row">
<div class="col-sm-6 mb-3">
<label class="form-label fw-medium text-dark">Name</label>
<div class="fw-bold text-dark"><?php echo $response_transaction_checker['response'][0]['transaction_product_name']?></div>
</div>
<div class="col-sm-6 mb-3">
<label class="form-label fw-medium text-dark">Description</label>
<div class="fw-bold text-dark"><?php echo $response_transaction_checker['response'][0]['transaction_product_description']?></div>
</div>
<?php
$raw = $response_transaction_checker['response'][0]['transaction_product_meta'];
$first_decode = json_decode($raw, true);
// Handle possible double-encoding
if (is_string($first_decode)) {
$transaction_product_meta = json_decode($first_decode, true);
} else {
$transaction_product_meta = $first_decode;
}
if (is_array($transaction_product_meta)) {
foreach ($transaction_product_meta as $key => $value) {
?>
<div class="col-sm-6 mb-3">
<label class="form-label fw-medium text-dark"><?php echo htmlspecialchars(str_replace('_', ' ', $key)); ?></label>
<div class="fw-bold text-dark">
<?php
if (is_array($value)) {
// Handle arrays like Screenshot
foreach ($value as $item) {
if (filter_var($item, FILTER_VALIDATE_URL)) {
echo "<a href='" . htmlspecialchars($item) . "' target='_blank'>View Image</a><br>";
} else {
echo htmlspecialchars(json_encode($item));
}
}
} else {
echo htmlspecialchars($value);
}
?>
</div>
</div>
<?php
}
} else {
echo "<div class='text-danger'>Invalid transaction product meta data.</div>";
}
?>
</div>
</div>
<?php
}
?>
</div>
</div>
</div>
<!-- End Card -->
<div id="stickyBlockEndPoint"></div>
</div>
</div>
<!-- End Row -->
<script>
function bulk_action(bclass, action){
var btn_value = document.querySelector("."+bclass).innerHTML;
$("."+bclass).html('<div class="spinner-border spinner-border-sm" role="status"> <span class="visually-hidden">Loading...</span> </div>');
$("."+bclass).prop("disabled", true);
var ids = [<?php echo $_GET['ref'];?>];
var formData = new FormData();
formData.append('action', 'pp_bulk_action_transaction');
formData.append('action_name', action);
formData.append('ids', ids);
$.ajax({
type: "POST",
url: "/admin/transaction",
data: formData,
processData: false,
contentType: false,
success: function (data) {
console.log(data);
$("."+bclass).prop("disabled", false);
$("."+bclass).html(btn_value);
var response = JSON.parse(data);
if (response.status === "false") {
$(".response-bulk-action").html('<div class="alert alert-danger" style="margin-top: 20px; margin-bottom: -1px;" role="alert">'+response.message+'</div>');
} else {
$(".response-bulk-action").html('');
load_content('Transaction','view-transaction?ref=<?php echo $_GET['ref'];?>','nav-btn-transaction');
}
}
});
}
</script>
<?php
}
?>