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.
166 lines
8.4 KiB
166 lines
8.4 KiB
<?php
|
|
if (file_exists(__DIR__."/../pp-config.php")) {
|
|
if (file_exists(__DIR__.'/../maintenance.lock')) {
|
|
if (file_exists(__DIR__.'/../pp-include/pp-maintenance.php')) {
|
|
include(__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')) {
|
|
include(__DIR__."/../pp-include/pp-controller.php");
|
|
}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();
|
|
}
|
|
|
|
if (file_exists(__DIR__.'/../pp-include/pp-view.php')) {
|
|
include(__DIR__."/../pp-include/pp-view.php");
|
|
}else{
|
|
echo 'System is under maintenance. Please try again later.';
|
|
exit();
|
|
}
|
|
}
|
|
}else{
|
|
?>
|
|
<script>
|
|
location.href="https://<?php echo $_SERVER['HTTP_HOST']?>/install/";
|
|
</script>
|
|
<?php
|
|
exit();
|
|
}
|
|
|
|
if (!defined('pp_allowed_access')) {
|
|
die('Direct access not allowed');
|
|
}
|
|
|
|
header("Access-Control-Allow-Origin: *");
|
|
header("Access-Control-Allow-Methods: POST, GET, OPTIONS");
|
|
header("Access-Control-Allow-Headers: Content-Type");
|
|
|
|
if(isset($_GET['name'])){
|
|
$endpoint_type = escape_string($_GET['name']);
|
|
|
|
if($endpoint_type == "create-charge") {
|
|
$received_api_key = getAuthorizationHeader();
|
|
|
|
if ($received_api_key !== $global_setting_response['response'][0]['api_key']) {
|
|
http_response_code(400);
|
|
echo json_encode(["status" => false, "message" => "Unauthorized request. Invalid API key."]);
|
|
exit;
|
|
}
|
|
|
|
$json = file_get_contents("php://input");
|
|
$data = json_decode($json, true);
|
|
|
|
// Required field validation
|
|
$required_fields = ['full_name', 'email_mobile', 'amount', 'metadata', 'redirect_url', 'cancel_url', 'webhook_url', 'return_type', 'currency'];
|
|
$missing_fields = [];
|
|
|
|
foreach ($required_fields as $field) {
|
|
if (empty($data[$field])) {
|
|
$missing_fields[] = $field;
|
|
}
|
|
}
|
|
|
|
if (!empty($missing_fields)) {
|
|
http_response_code(400);
|
|
echo json_encode(["status" => false, "message" => "Missing required field(s): " . implode(', ', $missing_fields)]);
|
|
exit;
|
|
}
|
|
|
|
// Proceed if all fields are present
|
|
$full_name = escape_string($data['full_name']);
|
|
$email_mobile = escape_string($data['email_mobile']);
|
|
$amount = escape_string($data['amount']);
|
|
$meta_data = json_encode($data['metadata']);
|
|
$redirect_url = escape_string($data['redirect_url']);
|
|
$cancel_url = escape_string($data['cancel_url']);
|
|
$webhook_url = escape_string($data['webhook_url']);
|
|
$return_type = escape_string($data['return_type']);
|
|
$currency = escape_string($data['currency']);
|
|
|
|
$c_id = isset($data['c_id']) ? escape_string($data['c_id']) : '--';
|
|
$product_name = isset($data['product_name']) ? escape_string($data['product_name']) : '--';
|
|
$product_description = isset($data['product_description']) ? escape_string($data['product_description']) : '--';
|
|
$product_meta = isset($data['product_meta']) ? json_encode($data['product_meta']) : '--';
|
|
|
|
$pp_id = rand();
|
|
|
|
$columns = ['pp_id', 'c_id', 'c_name', 'c_email_mobile', 'transaction_amount', 'transaction_fee', 'transaction_refund_amount', 'transaction_currency', 'transaction_redirect_url', 'transaction_return_type', 'transaction_cancel_url', 'transaction_webhook_url', 'transaction_metadata', 'transaction_status', 'transaction_product_name', 'transaction_product_description', 'transaction_product_meta', 'created_at'];
|
|
$values = [$pp_id, $c_id, $full_name, $email_mobile, safeNumber($amount), 0, 0, $currency, $redirect_url, $return_type, $cancel_url, $webhook_url, $meta_data, 'initialize', $product_name, $product_description, $product_meta, getCurrentDatetime('Y-m-d H:i:s')];
|
|
|
|
insertData($db_prefix.'transaction', $columns, $values);
|
|
|
|
http_response_code(200);
|
|
echo json_encode(["status" => true, "pp_id" => $pp_id, "pp_url" => "https://".$_SERVER['HTTP_HOST']."/payment/".$pp_id]);
|
|
}
|
|
|
|
if($endpoint_type == "verify-payments"){
|
|
$received_api_key = getAuthorizationHeader();
|
|
|
|
if ($received_api_key !== $global_setting_response['response'][0]['api_key']) {
|
|
http_response_code(400);
|
|
echo json_encode(["status" => false, "message" => "Unauthorized request. Invalid API key.".$received_api_key]);
|
|
exit;
|
|
}
|
|
|
|
// Get JSON raw input
|
|
$json = file_get_contents("php://input");
|
|
$data = json_decode($json, true);
|
|
|
|
// Validate required data
|
|
if (!empty($data['pp_id'])) {
|
|
$pp_id = escape_string($data['pp_id']);
|
|
|
|
$transaction_details = pp_get_transation($pp_id);
|
|
|
|
if($transaction_details['status'] == true){
|
|
if($transaction_details['response'][0]['transaction_status'] !== "initialize"){
|
|
http_response_code(200);
|
|
|
|
$meta = json_decode($transaction_details['response'][0]['transaction_metadata'], true) ?? [];
|
|
|
|
$payload = [
|
|
'pp_id' => $transaction_details['response'][0]['pp_id'],
|
|
'customer_name' => $transaction_details['response'][0]['c_name'],
|
|
'customer_email_mobile' => $transaction_details['response'][0]['c_email_mobile'],
|
|
'payment_method' => $transaction_details['response'][0]['payment_method'],
|
|
'amount' => safeNumber($transaction_details['response'][0]['transaction_amount']),
|
|
'fee' => safeNumber($transaction_details['response'][0]['transaction_fee']),
|
|
'refund_amount' => safeNumber($transaction_details['response'][0]['transaction_refund_amount']),
|
|
'total' => safeNumber($transaction_details['response'][0]['transaction_amount']) + safeNumber($transaction_details['response'][0]['transaction_fee']) - safeNumber($transaction_details['response'][0]['transaction_refund_amount']),
|
|
'currency' => $transaction_details['response'][0]['transaction_currency'],
|
|
'metadata' => $meta,
|
|
'sender_number' => $transaction_details['response'][0]['payment_sender_number'],
|
|
'transaction_id' => $transaction_details['response'][0]['payment_verify_id'],
|
|
'status' => $transaction_details['response'][0]['transaction_status'],
|
|
'date' => $transaction_details['response'][0]['created_at']
|
|
];
|
|
|
|
echo json_encode($payload);
|
|
}else{
|
|
http_response_code(400);
|
|
echo json_encode(["status" => false, "message" => "Invalid Transaction"]);
|
|
}
|
|
}else{
|
|
http_response_code(400);
|
|
echo json_encode(["status" => false, "message" => "Invalid Transaction"]);
|
|
}
|
|
} else {
|
|
http_response_code(400);
|
|
echo json_encode(["status" => false, "message" => "Missing required fields"]);
|
|
}
|
|
}
|
|
}else{
|
|
echo 'System is under maintenance. Please try again later.';
|
|
exit();
|
|
}
|