微信h5分享给好友

点击事件

<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.'&timestamp='.$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(){
        
    }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值