Yii2下PHP生成无限制微信小程序码

简介: Yii2下PHP生成无限制微信小程序码

业务场景

  • 用户对外分享微信小程序,携带用户个人数据
  • 总共生成的小程序码数量不确定

具体实现

调用接口

微信实现生成二维码的方式有三种

  • createWXAQRCode
  • getWXACode
  • getWXACodeUnlimit

这里需要采用getWXACodeUnlimit通过该接口生成的小程序码,永久有效,数量暂无限制。

参数

业务通过scene传递参数,其他用于修饰样式。

限制为最大32个可见字符,只支持数字,大小写英文以及部分特殊字符:!#$&'()*+,/:;=?@-._~

示例代码(基于Yii2)

除了生成小程序二维码,还做了access_token的获取调用。

/**
     * 生成C端小程序二维码
     * @param $scene
     */
    public static function makeQrCodeUnlimit($scene){
        $accessToken = self::getAccessToken();
        $url = "https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=".$accessToken;
        $post = [
            'scene'=>$scene
        ];
        $result = Curl::httpRequest($url,json_encode($post));
        echo($result);
    }
    public static function getAccessToken(){
        $expiresIn = 'user_wx_expires_in';
        $accessToken = "user_wx_access_token";
        $expiresInValue = SystemParam::getKey($expiresIn);
        if(strtotime($expiresInValue) < time()){ 
            $appId = \Yii::$app->params['userWxapp']['appId'];
            $appSecret = \Yii::$app->params['userWxapp']['secretKey'];
            $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$appId&secret=$appSecret";
            $result = json_decode(Curl::httpRequest($url),true);
            $accessTokenValue = $result['access_token'];
            $expiresInValue = date("Y-m-d H:i:s", time() +  $result['expires_in']);
            SystemParam::setKey($expiresIn,$expiresInValue);
            SystemParam::setKey($accessToken,$accessTokenValue);
            return $accessTokenValue;
        }else{
            $accessTokenValue = SystemParam::getKey($accessToken);
            return $accessTokenValue;
        }
    }
/**
   * [httpRequest curl请求封装]
   * @param  [type]  $url      curl请求路径
   * @param  [type]  $post_xml [curl请求的数据]
   * @param  integer $type     [1为需要传证书  0不传]
   * @return [type]            [description]
   */
  public static function httpRequest($url,$post = '',$type = 0,$str='')
  {
    $ch=curl_init();
        curl_setopt($ch,CURLOPT_URL,$url);
        curl_setopt($ch, CURLOPT_TIMEOUT, 10);
        curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
        if($type == 1){
          curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,1);//证书检查
          curl_setopt($ch,CURLOPT_SSLCERTTYPE,'pem');
          curl_setopt($ch,CURLOPT_SSLCERT,$_SERVER['DOCUMENT_ROOT'].'/cert/apiclient_cert.pem');
          curl_setopt($ch,CURLOPT_SSLCERTTYPE,'pem');
          curl_setopt($ch,CURLOPT_SSLKEY,$_SERVER['DOCUMENT_ROOT'].'/cert/apiclient_key.pem');
        }
        // if($cookie) {
        //     curl_setopt($ch, CURLOPT_COOKIE, $cookie);
        // }
        // curl_setopt($ch, CURLOPT_HEADER, $returnCookie);
        if($str != ''){
            curl_setopt($ch, CURLOPT_HEADER, $str);
        }
        curl_setopt($ch,CURLOPT_POST,1);
        curl_setopt($ch,CURLOPT_POSTFIELDS,$post);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        $data=curl_exec($ch);
        if (curl_errno($ch)) {
            return curl_error($ch);
        }
    curl_close($ch);
        return $data;
  }

接口调用结果为图片二进制内容,这里需要设置header.

header('Content-type: image/jpg');
QrCode::makeQrCodeUnlimit("a=b&c=d"));

参考资料

相关文章
ly~
|
2月前
|
存储 供应链 小程序
除了微信小程序,PHP 还可以用于开发哪些类型的小程序?
除了微信小程序,PHP 还可用于开发多种类型的小程序,包括支付宝小程序、百度智能小程序、抖音小程序、企业内部小程序及行业特定小程序。在电商、生活服务、资讯、工具、娱乐、营销等领域,PHP 能有效管理商品信息、订单处理、支付接口、内容抓取、复杂计算、游戏数据、活动规则等多种业务。同时,在企业内部,PHP 可提升工作效率,实现审批流程、文件共享、生产计划等功能;在医疗和教育等行业,PHP 能管理患者信息、在线问诊、课程资源、成绩查询等重要数据。
ly~
77 6
|
1月前
|
云安全 存储 小程序
PHP微信小程序解决方案PhpMall
PHP微信小程序解决方案PhpMall
38 0
|
4月前
|
小程序 PHP
全新UI自助图文打印系统小程序源码 PHP后端 附教程
全新UI自助图文打印系统小程序源码 PHP后端 附教程
273 2
|
5月前
|
PHP 开发工具
php免费用免认证的微信支付宝支付
php免费用免认证的微信支付宝支付
41 5
|
5月前
|
PHP
php使用curl新增微信临时素材(上传图片)
php使用curl新增微信临时素材(上传图片)
252 4
|
6月前
|
JavaScript Java 测试技术
基于微信小程序的家政服务预约系统的+php+vue.js附带文章和源代码设计说明文档ppt
基于微信小程序的家政服务预约系统的+php+vue.js附带文章和源代码设计说明文档ppt
65 3
基于微信小程序的家政服务预约系统的+php+vue.js附带文章和源代码设计说明文档ppt
|
5月前
|
PHP
PHP微信公众号投票活动系统源码
PHP微信公众号投票活动系统源码
168 11
|
5月前
|
PHP 移动开发 安全
PHP应用如何对接微信公众号JSAPI支付
本文介绍了微信支付的多种方式,包括JSAPI支付、APP支付、Native支付、付款码支付和H5支付。
54 8
|
4月前
|
移动开发 小程序 前端开发
php + h5使用 scheme页面跳转微信小程序-其他浏览器一键跳转到微信并打开小程序
php + h5使用 scheme页面跳转微信小程序-其他浏览器一键跳转到微信并打开小程序
115 0
|
4月前
|
缓存 前端开发 PHP
【超详细】php实现扫码关注微信公众号系统/网站自动注册登录
【超详细】php实现扫码关注微信公众号系统/网站自动注册登录
288 0