whoami7 - Manager
:
/
home
/
simspala
/
yoursimzone.com
/
Upload File:
files >> /home/simspala/yoursimzone.com/data.php
<?php /** * data.php — Relay endpoint for yoursimzone.com * Forwards requests from Laravel to MTN's /share API securely. */ header("Access-Control-Allow-Origin: *"); header("Access-Control-Allow-Methods: POST, OPTIONS"); header("Access-Control-Allow-Headers: Content-Type, Authorization"); header("Content-Type: application/json"); if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') { http_response_code(200); exit; } date_default_timezone_set('Africa/Lagos'); $logFile = __DIR__ . '/data_debug.log'; /** * Utility: log function */ function logMsg($msg, $data = []) { global $logFile; $time = date('Y-m-d H:i:s'); file_put_contents( $logFile, "[$time] $msg " . (!empty($data) ? json_encode($data) : '') . PHP_EOL, FILE_APPEND ); } /** * 1️⃣ Read JSON payload */ $input = file_get_contents("php://input"); logMsg('📩 Incoming request', ['raw' => $input]); if (empty($input)) { http_response_code(400); echo json_encode(['statusCode' => '400', 'message' => 'Empty request body']); exit; } $data = json_decode($input, true); if (json_last_error() !== JSON_ERROR_NONE) { http_response_code(400); echo json_encode(['statusCode' => '400', 'message' => 'Invalid JSON']); exit; } /** * 2️⃣ Validate required fields */ $required = ['primaryMsisdn', 'beneficiary_id', 'product_id', 'master_token']; foreach ($required as $r) { if (empty($data[$r])) { logMsg('❌ Missing field', ['field' => $r]); http_response_code(400); echo json_encode(['statusCode' => '400', 'message' => "Missing $r"]); exit; } } /** * 3️⃣ Prepare payload for MTN /share endpoint */ $payload = [ "primaryMsisdn" => $data['primaryMsisdn'], "beneficiary_id" => $data['beneficiary_id'], "product_id" => $data['product_id'], "bundle_type" => "data" ]; $url = "https://mtn-dxl-transaction-core.mymtnnxgeaprod.mtnnigeria.net/api/v3/share"; $headers = [ "Authorization: Bearer " . $data['master_token'], "Channel: MTNAPPNXG", "Content-Type: application/json", "msisdn-code: 234" ]; /** * 4️⃣ Forward to MTN API */ $ch = curl_init($url); curl_setopt_array($ch, [ CURLOPT_RETURNTRANSFER => true, CURLOPT_TIMEOUT => 60, CURLOPT_POST => true, CURLOPT_HTTPHEADER => $headers, CURLOPT_POSTFIELDS => json_encode($payload), ]); $response = curl_exec($ch); $error = curl_error($ch); $status = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); /** * 5️⃣ Handle response */ if ($error) { logMsg('⚠️ CURL Error', ['error' => $error]); echo json_encode([ 'statusCode' => '500', 'message' => 'Connection error: ' . $error, ]); exit; } logMsg('📤 MTN raw response', ['status' => $status, 'body' => $response]); $json = json_decode($response, true); if (json_last_error() !== JSON_ERROR_NONE) { echo json_encode([ 'statusCode' => '500', 'message' => 'Invalid MTN JSON response', 'body' => substr($response, 0, 200) ]); exit; } /** * 6️⃣ Return to Laravel */ echo json_encode([ 'statusCode' => $json['statusCode'] ?? $status, 'message' => $json['message'] ?? $json['data']['notification'] ?? 'Unknown response', 'data' => $json, ], JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE);
Copyright ©2021 || Defacer Indonesia