微信小程序js调取接口:
wx.request({
url: app.globalData.apiUrl + '/app/member_createcode',
data: {
token: wx.getStorageSync('token') || '',
scene: "shareuser="+that.data.uid,
page: "pages/index/index"
},
header: {
'content-type': 'application/json'
},
method: 'POST',
success: function (res) {
wx.hideLoading();
if(res.data.errorCode == 99999){
that.setData({
sharecode: res.data.data.pathimg,
})
}else{
// 生成分享码失败,关闭弹出层
wx.showToast({
title: '加载失败,请重试',
icon: 'none',
duration: 500,
})
return false;
}
},
fail: function (error) {
console.log(error)
}
})
PHP后端处理:
逻辑:判断图片是否存在,存在直接返回图片地址;不存在调取生成小程序码接口且将图片放置服务器上,返回图片地址;
public function createcode()
{
$uid = Token::getCurrentUid();
header('content-Type: image/png');
$path = 'uploads/sharecode/'.$uid.'.png';
// 判断图片是否存在
if(@fopen($path, 'r' ) )
{
response(['path' => $path, 'pathimg' =>C('xcx_yuming').'/'.$path,'from'=>'1']);
}else{
$mini_config = C('mini_c');
$url = sprintf(C('access_token_url'), $mini_config['mini_app_id'], $mini_config['mini_app_secret']);
$wx_data = httpGet($url);
$wx_data = json_decode($wx_data,true);
$access_token = $wx_data['access_token'];
$request = Request::instance();
$data['scene'] = $request->param('scene');
$data['page'] = $request->param('page');
$codeurl = "https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=".$access_token;
$codeinfo = httpPost($codeurl,json_encode($data)); //64位编码
file_put_contents($path, $codeinfo);
response(['path' => $path, 'pathimg' =>C('xcx_yuming').'/'.$path]);
}
}
说明:
1. $path = 'uploads/sharecode/'.$uid.'.png'; //图片地址
2. C('xcx_yuming') //小程序域名
3. 先获取token,再拿token获取getwxacodeunlimit返回的图片;官网文档说明:获取小程序码