千家信息网

微信小程序如何生成带参数的小程序二维码

发表于:2025-01-23 作者:千家信息网编辑
千家信息网最后更新 2025年01月23日,微信小程序如何生成带参数的小程序二维码,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。官方提供生成小程序码的两种方式:ht
千家信息网最后更新 2025年01月23日微信小程序如何生成带参数的小程序二维码

微信小程序如何生成带参数的小程序二维码,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

官方提供生成小程序码的两种方式:https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/qr-code.html

https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/qr-code/wxacode.getUnlimited.html

服务端生成小程序码

//小程序码public function getWxcode(){    $ACCESS_TOKEN = $this->getWxAccessToken();    $url = "https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=" . $ACCESS_TOKEN['access_token'];    $post_data =        array(            'page' => 'pages/my/my', //扫码跳转页面            'scene' => input('invite_code') //用户邀请码        );    $post_data = json_encode($post_data);    $data = $this->send_post($url, $post_data);    $result = $this->data_uri($data, 'image/png');    return '';    //return $result;}private function getWxAccessToken(){    $appid = '******';    $appsecret = '*******';    $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" . $appid . "&secret=" . $appsecret;    $access_token = $this->makeRequest($url);    $access_token = json_decode($access_token['result'], true);    return $access_token;}/** * 发起http请求 * @param string $url 访问路径 * @param array $params 参数,该数组多于1个,表示为POST * @param int $expire 请求超时时间 * @param array $extend 请求伪造包头参数 * @param string $hostIp HOST的地址 * @return array    返回的为一个请求状态,一个内容 */private function makeRequest($url, $params = array(), $expire = 0, $extend = array(), $hostIp = ''){    if (empty($url)) {        return array('code' => '100');    }    $_curl = curl_init();    $_header = array(        'Accept-Language: zh-CN',        'Connection: Keep-Alive',        'Cache-Control: no-cache'    );    // 方便直接访问要设置host的地址    if (!empty($hostIp)) {        $urlInfo = parse_url($url);        if (empty($urlInfo['host'])) {            $urlInfo['host'] = substr(DOMAIN, 7, -1);            $url = "http://{$hostIp}{$url}";        } else {            $url = str_replace($urlInfo['host'], $hostIp, $url);        }        $_header[] = "Host: {$urlInfo['host']}";    }    // 只要第二个参数传了值之后,就是POST的    if (!empty($params)) {        curl_setopt($_curl, CURLOPT_POSTFIELDS, http_build_query($params));        curl_setopt($_curl, CURLOPT_POST, true);    }    if (substr($url, 0, 8) == 'https://') {        curl_setopt($_curl, CURLOPT_SSL_VERIFYPEER, FALSE);        curl_setopt($_curl, CURLOPT_SSL_VERIFYHOST, FALSE);    }    curl_setopt($_curl, CURLOPT_URL, $url);    curl_setopt($_curl, CURLOPT_RETURNTRANSFER, true);    curl_setopt($_curl, CURLOPT_USERAGENT, 'API PHP CURL');    curl_setopt($_curl, CURLOPT_HTTPHEADER, $_header);    if ($expire > 0) {        curl_setopt($_curl, CURLOPT_TIMEOUT, $expire); // 处理超时时间        curl_setopt($_curl, CURLOPT_CONNECTTIMEOUT, $expire); // 建立连接超时时间    }    // 额外的配置    if (!empty($extend)) {        curl_setopt_array($_curl, $extend);    }    $result['result'] = curl_exec($_curl);    $result['code'] = curl_getinfo($_curl, CURLINFO_HTTP_CODE);    $result['info'] = curl_getinfo($_curl);    if ($result['result'] === false) {        $result['result'] = curl_error($_curl);        $result['code'] = -curl_errno($_curl);    }    curl_close($_curl);    return $result;}/** * 消息推送http * @param $url * @param $post_data * @return bool|string */private function send_post($url, $post_data){    $options = array(        'http' => array(            'method' => 'POST',            'header' => 'Content-type:application/json',            //header 需要设置为 JSON            'content' => $post_data,            'timeout' => 60            //超时时间        )    );    $context = stream_context_create($options);    $result = file_get_contents($url, false, $context);    return $result;}//二进制转图片image/pngprivate function data_uri($contents, $mime){    $base64 = base64_encode($contents);    return (_'data:' . $mime . ';base64,' . $base64);}

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。

0