php获取小程序二维码

public function getWxcode($store_me, $user_me, $url,$status=1,$type=1){
   
    $ACCESS_TOKEN = $this->getWxAccessToken();
    $url_token = "https://api.weixin.qq.com/wxa/getwxacode?access_token=".$ACCESS_TOKEN['access_token'];
    $post_data = array(
        'path' => ''
    );        
    $post_data = json_encode($post_data);
    $data_send = $this->send_post($url_token,$post_data);//返回的数据为二进制数据流
}
public function getWxAccessToken(){
    $appid = '';
    $appsecret = '';
    if($_SESSION['access_token_'.$appid] && $_SESSION['expire_time_'.$appid]>time()){
        return $_SESSION['access_token_'.$appid];
    }else{
        $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);
        $_SESSION['access_token_'.$appid][$access_token];
        $_SESSION['expire_time_'.$appid][time()+7000];
        return $access_token;
    }
}
/**
 * 发起http请求
 * @param string $url 访问路径
 * @param array $params 参数,该数组多于1个,表示为POST
 * @param int $expire 请求超时时间
 * @param array $extend 请求伪造包头参数
 * @param string $hostIp HOST的地址
 * @return array    返回的为一个请求状态,一个内容
 */
public 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_token
 * @param $post_data
 * @return bool|string
 */
protected function send_post($url_token, $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_token, false, $context);       
    return $result;
}
生成小程序二维码可以通过微信官方提供的API实现,而PHP可以通过调用这个API来生成小程序二维码。具体步骤如下: 1. 获取access_token:调用微信官方提供的获取access_token的API,获取access_token。注意:access_token需要缓存,不要频繁调用该API获取。 2. 调用生成小程序二维码的API:调用微信官方提供的生成小程序二维码的API,传入必要的参数,比如path、width等。 3. 保存小程序二维码:把API返回的二进制流保存为图片即可。 下面是示例代码: ```php <?php $app_id = '你的小程序appid'; $app_secret = '你的小程序appsecret'; //获取access_token $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$app_id}&secret={$app_secret}"; $res = file_get_contents($url); $res = json_decode($res, true); $access_token = $res['access_token']; //调用生成小程序二维码的API $path = '/pages/index/index'; $width = 430; $url = "https://api.weixin.qq.com/wxa/getwxacode?access_token={$access_token}"; $data = array( 'path' => $path, 'width' => $width ); $data = json_encode($data); $options = array( 'http' => array( 'header' => "Content-type:application/json", 'method' => 'POST', 'content' => $data, 'timeout' => 60 ) ); $context = stream_context_create($options); $res = file_get_contents($url, false, $context); //保存小程序二维码 file_put_contents('./qrcode.jpg', $res); ``` 需要注意的是,生成小程序二维码的API有一些限制,比如只能生成已发布的小程序二维码有效期为30天等。具体详情可以参考微信官方文档。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值