获取慧湖通二维码

bandit 发布于 2024-09-29 918 次阅读


原理:

在打开微信慧湖通小程序时会给慧湖通后端通过GET请求发送唯一open_id, 然后返回token值。

然后调用慧湖通的生成二维码API接口将token作为header的sa_token的值传入后发送GET请求, 即可在data种获取到二维码的内容。然后再根据内容生成二维码即可。

PHP83实现(CURL):

function getQrCode(&$qrcode_data) : bool
{
    $ch = curl_init();
    $open_id = OPENID;
    $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/pms/welcome/make-qrcode";
        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['data']))
        {
            return false;
        }
        if($arr['success'] != 'true')
        {
            return false;
        }
        $ret = $arr['data'];
        $qrcode_data = $ret;
        return true;
    }
    catch (Exception $e)
    {
        return false;
    }
}