获取慧湖通余额

bandit 发布于 2024-10-03 423 次阅读


原理:

参考之前获取慧湖通二维码先获取satoken, 然后根据room_id获取对应房间余额。

实现(PHP83 CURL)

function get_balance() : float | false
{
    $ch = curl_init();
    $open_id = OPENID;
    $room_id = ROOMID;
    $get_satoken_url = "https://api.215123.cn/web-app/auth/certificateLogin?openId=".$open_id;
    curl_setopt($ch, CURLOPT_URL, $get_satoken_url);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,false);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    try
    {
        $ret = curl_exec($ch);
        $arr = json_decode($ret,true);
        if(!isset($arr['success']) || !isset($arr['data']['token']))
        {
            return false;
        }

        if($arr['success'] != 'true')
        {
            return false;
        }

        $sa_token = $arr['data']['token'];
        $headers = ["satoken:$sa_token"];
        $fee_url = "https://api.215123.cn/proxy/qy/sdcz/balance?roomId=".$room_id;
        curl_setopt($ch, CURLOPT_URL, $fee_url);
        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
        $ret = curl_exec($ch);
        $arr = json_decode($ret,true);
        if(!isset($arr['success']) || !isset($arr['result']))
        {
            return false;
        }
        if($arr['success'] != 'true')
        {
            return false;
        }
        if(!is_numeric($arr['result'])) return false;
        return $arr['result'];
    }
    catch (Exception)
    {
        return false;
    }
}