点击事件
<div class="fenxiang-btn" onclick="fenxiang()">分享</div>
前端代码
function fenxiang(){
var user_id=sessionStorage.getItem('user_id')
var url = window.location.pathname + location.search //动态获取链接
$.post("{:url('api/jiedan/fenxiang')}",{user_id:user_id,url:url},function(res){
wx.config({
debug: false, // 开启调试模式,
appId: res.data.appid, // 必填,公众号的唯一标识
timestamp: res.data.timestamp, // 必填,生成签名的时间戳
nonceStr: res.data.noncestr, // 必填,生成签名的随机串
signature: res.data.signature,// 必填,签名
jsApiList: ['checkJsApi', 'onMenuShareAppMessage'] // 必填,需要使用的JS接口列表
});
wx.checkJsApi({
jsApiList: [
'checkJsApi','onMenuShareAppMessage',
], // 需要检测的JS接口列表,所有JS接口列表见附录2,
success:function(res){
//在这里提示点击右上角分享
}
});
wx.ready(function () {
wx.onMenuShareAppMessage({ //执行分享
title: res.data.name, // 分享标题
desc: '好画师', // 分享描述
link: res.data.url, // 分享链接
imgUrl: res.data.img, // 分享图标
type: '', // 分享类型,music、video或link,不填默认为link
dataUrl: '', // 如果type是music或video,则要提供数据链接,默认为空
success: function (res) {
var msg = res.errMsg.split(':') //这里很奇怪,在开发工具打出来值是onMenuShareAppMessage:ok,真机上打出来是sendAppMessage:ok,有大神了解其中原理的,评论一下,谢谢
if(msg[1] == "ok"){
//分享成功
var user_id = sessionStorage.getItem('user_id')
$.post('{:url("api/jiedan/fhuadou")}',{user_id:user_id},function(res)
})
}else{
layer.open({
content: '分享失败'
,btn: '确定'
})
}
},
cancel: function () {
}
});
})
})
}
php代码
//分享
public function fenxiang(){
$user_id = input('user_id');
$iurl = input('url');
$appid = Config::get('app.appid');
//分享链接
$urls = Config::get('app.url').$iurl;
//access_token
$token = $this->access_token();
//ticket票据
$url ="https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=".$token."&type=jsapi";
$res = $this->curl_get($url);
$res = json_decode($res, true);
$ticket = $res['ticket'];
//随机字符串
$str = Pay::getRand(16);
//时间戳
$time = time();
//签名
$signs = 'jsapi_ticket='.$ticket.'&noncestr='.$str.'×tamp='.$time.'&url='.$urls;
$sign = sha1($signs);
$data=[
'appid'=>$appid,
'name'=>'好画师',
'timestamp'=>$time,
'noncestr'=>$str,
'signature'=>$sign,
'url'=>$urls,
'img'=> Config::get('app.url').'/static/img/logo.jpg',
'ticket'=>$ticket
];
return $this->ajaxReturn($this->successCode,'返回成功',$data);
}
//分享成功处理
public function fhuadou(){
}