feat: include balance for home page
This commit is contained in:
@@ -0,0 +1,62 @@
|
||||
<?php
|
||||
declare(strict_types=1);
|
||||
|
||||
require_once __DIR__ . '/db.php';
|
||||
|
||||
if ($_SERVER['REQUEST_METHOD'] !== 'GET') {
|
||||
error_out('Method not allowed', 405);
|
||||
}
|
||||
|
||||
$db = db();
|
||||
$row = $db->query(
|
||||
"SELECT setting_value FROM `system` WHERE setting_name = 'clickatell_api_key'"
|
||||
)->fetch();
|
||||
|
||||
$api_key = $row['setting_value'] ?? '';
|
||||
if ($api_key === '') {
|
||||
json_out(['error' => 'API key not configured', 'balance' => null]);
|
||||
}
|
||||
|
||||
$ch = curl_init('https://platform.clickatell.com/public-client/balance');
|
||||
curl_setopt_array($ch, [
|
||||
CURLOPT_RETURNTRANSFER => true,
|
||||
CURLOPT_TIMEOUT => 10,
|
||||
CURLOPT_HTTPHEADER => [
|
||||
'Authorization: ' . $api_key,
|
||||
'Accept: application/json',
|
||||
'Content-Type: application/json',
|
||||
],
|
||||
]);
|
||||
|
||||
$body = curl_exec($ch);
|
||||
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
|
||||
$err = curl_error($ch);
|
||||
curl_close($ch);
|
||||
|
||||
if ($err !== '') {
|
||||
json_out(['error' => 'Request failed: ' . $err, 'balance' => null]);
|
||||
}
|
||||
|
||||
$data = json_decode($body ?: '', true);
|
||||
|
||||
if ($status !== 200 || $data === null) {
|
||||
json_out(['error' => 'Unexpected response (HTTP ' . $status . ')', 'balance' => null, 'raw' => $body]);
|
||||
}
|
||||
|
||||
$credit = null;
|
||||
$currency = $data['currency'] ?? null;
|
||||
|
||||
if (isset($data['balance']) && is_numeric($data['balance'])) {
|
||||
// Flat format: {"balance": 89.99, "currency": "GBP"}
|
||||
$credit = $data['balance'];
|
||||
} elseif (isset($data['balance']) && is_array($data['balance']) && isset($data['balance'][0]['credit'])) {
|
||||
// Array format: {"balance": [{"credit": "99.50", ...}]}
|
||||
$credit = $data['balance'][0]['credit'];
|
||||
$currency = $currency ?? ($data['balance'][0]['currency'] ?? null);
|
||||
} elseif (isset($data['credit'])) {
|
||||
$credit = $data['credit'];
|
||||
} elseif (isset($data['data']['credit'])) {
|
||||
$credit = $data['data']['credit'];
|
||||
}
|
||||
|
||||
json_out(['balance' => $credit, 'currency' => $currency]);
|
||||
Reference in New Issue
Block a user