小程序不能分享到朋友圈,这点可能让大家头疼,那直接把相应页面生成小程序码,再合成一张海报是不是就可以分享的朋友圈了,并且还很有档次。
下面说下如果调用微信接口,生成小程序码,先上代码吧。
第一种 生成小程序码保存到服务器
//调用接口生成页面小程序码 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 对应的页面。