小程序页面生成相应小程序码

小程序不能分享到朋友圈,这点可能让大家头疼,那直接把相应页面生成小程序码,再合成一张海报是不是就可以分享的朋友圈了,并且还很有档次。

下面说下如果调用微信接口,生成小程序码,先上代码吧。

第一种 生成小程序码保存到服务器

//调用接口生成页面小程序码 path可以通过参数传递进来
public function getwxaqrcode()
    {
        $access_token = $this->AccessToken();
        $url = 'https://api.weixin.qq.com/wxa/getwxacode?access_token='.$access_token;
        $path="pages/mine/mine/mine?query=1";
        $width=430;
        $data='{"path":"'.$path.'","width":'.$width.'}';
        $return = $this->request_post($url,$data);
        //将生成的小程序码存入相应文件夹下
        file_put_contents('./public/wxcode/img/'.time().'.jpg',$return);
    }
//获取accesstoken
    public function AccessToken()
    {
       $url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$appid&secret=appsecret';
        $AccessToken = $this->request_post($url);
        $AccessToken = json_decode($AccessToken , true);
        $AccessToken = $AccessToken['access_token'];
        return $AccessToken;
    }
//请求函数
    public function request_post($url, $data){
            $ch = curl_init();
            $header = "Accept-Charset: utf-8";
            curl_setopt($ch, CURLOPT_URL, $url);
            curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
            curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
            curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
            curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; MSIE 5.01; Windows NT 5.0)');
            curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
            curl_setopt($ch, CURLOPT_AUTOREFERER, 1);
            curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
            $tmpInfo = curl_exec($ch);
            if (curl_errno($ch)) {
                return false;
            }else{
                return $tmpInfo;
            }
        }
    }

第二种 JS直接生成当前页面小程序码

首先获取access_token 第一种方法里有获取办法

 
//注意:以下参数值不可以直接复制粘贴使用,需要自己根据上面的链接+参数获取使用
{
  "access_token": "12_fbGiPb3QuOW9M6n-Abg0ik4My2NocTJZZiAIAEUU",  
  "expires_in": 7200
}

获取完access_token,下面开始正式我们的请求:

//index.js
//获取应用实例
const app = getApp()
 
Page({
  data: {
  },
  onLoad: function (options) {
    var that = this;
    var scene = decodeURIComponent(options.scene)
 
    // 生成页面的二维码
    wx.request({
//注意:下面的access_token值不可以直接复制使用,需要自己请求获取。严谨作法应该把TOKEN和过期时间做个本地缓存,有的话两小时内直接用缓存,否则再调用获取TOKEN接口获取
      url: 'https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=AbgEb2z0il9eIsqn6pWJTmSkvTcJhtb1As38-',
      data: {
        scene: '000',
        page: "pages/index/index"  //这里按照需求设置值和参数   
      },
      method: "POST",
      responseType: 'arraybuffer',  //设置响应类型
      success(res) {
        console.log(res)
        var src2 = wx.arrayBufferToBase64(res.data);  //对数据进行转换操作
        that.setData({
          src2
        })
      },
      fail(e) {
        console.log(e)
      }
    })
 
 
  },
 
})

 最后把生成的小程序码展示到页面上

<view>
   <view class='img'>
    <image src='data:image/png;base64,{
   
   {src2}}'></image>
   </view>
</view>

小程序码分两种:前面一种为菊花式小程序码(接口A和接口B),另一种是狗皮膏药式QR码(接口C)

接口A:适用于需要的码数量较少的业务场景 接口地址:

https://api.weixin.qq.com/wxa/getwxacode?access_token=ACCESS_TOKEN

注意:通过该接口生成的小程序码,永久有效,数量限制见文末说明,请谨慎使用。用户扫描该码进入小程序后,将直接进入 path 对应的页面。

接口B:适用于需要的码数量极多的业务场景

接口地址:

https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=ACCESS_TOKEN

注意:通过该接口生成的小程序码,永久有效,数量暂无限制。用户扫描该码进入小程序后,开发者需在对应页面获取的码中 scene 字段的值,再做处理逻辑。使用如下代码可以获取到二维码中的 scene 字段的值。调试阶段可以使用开发工具的条件编译自定义参数 scene=xxxx 进行模拟。首页onLoad的时候获取参数需var scene = decodeURIComponent(options.scene)

接口C:适用于需要的码数量较少的业务场景

接口地址:

https://api.weixin.qq.com/cgi-bin/wxaapp/createwxaqrcode?access_token=ACCESS_TOKEN

注意:通过该接口生成的小程序二维码,永久有效,数量限制见文末说明,请谨慎使用。用户扫描该码进入小程序后,将直接进入 path 对应的页面。

猜你喜欢

转载自blog.csdn.net/qq_28471389/article/details/110475911