AI手机网,短视频直播 硬改改机 一键新机 群控软件 刷机定制

 找回密码
 立即注册
搜索
查看: 1986|回复: 6

微信JS-SDK接口,分享到朋友圈”按钮点击状态及自定义分享...

[复制链接]
发表于 2019-3-24 20:33:45 | 显示全部楼层 |阅读模式
jssdk.php 接口文件class JSSDK {
  private $appId;
  private $appSecret;

  public function __construct($appId, $appSecret) {
    $this->appId = $appId;
    $this->appSecret = $appSecret;
  }

  public function getSignPackage() {
    $jsapiTicket = $this->getJsApiTicket();

    // 注意 URL 一定要动态获取,不能 hardcode.
    $protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://";
    $url = "$protocol$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";

    $timestamp = time();
    $nonceStr = $this->createNonceStr();

    // 这里参数的顺序要按照 key 值 ASCII 码升序排序
    $string = "jsapi_ticket=$jsapiTicket&noncestr=$nonceStr×tamp=$timestamp&url=$url";

    $signature = sha1($string);

    $signPackage = array(
      "appId"     => $this->appId,
      "nonceStr"  => $nonceStr,
      "timestamp" => $timestamp,
      "url"       => $url,
      "signature" => $signature,
      "rawString" => $string
    );
    return $signPackage;
  }

  private function createNonceStr($length = 16) {
    $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
    $str = "";
    for ($i = 0; $i < $length; $i++) {
      $str .= substr($chars, mt_rand(0, strlen($chars) - 1), 1);
    }
    return $str;
  }

  private function getJsApiTicket() {
    // jsapi_ticket 应该全局存储与更新,以下代码以写入到文件中做示例
    $data = json_decode(file_get_contents("wxjs/jsapi_ticket.json"));
    if ($data->expire_time < time()) {
      $accessToken = $this->getAccessToken();
      // 如果是企业号用以下 URL 获取 ticket
      // $url = "https://qyapi.weixin.qq.com/cgi-bin/get_jsapi_ticket?access_token=$accessToken";
      $url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?type=jsapi&access_token=$accessToken";
      $res = json_decode($this->httpGet($url));
      //print_r($res);
      $ticket = $res->ticket;
      if ($ticket) {
        $data->expire_time = time() + 7000;
        $data->jsapi_ticket = $ticket;
        $fp = fopen("wxjs/jsapi_ticket.json", "w");
        fwrite($fp, json_encode($data));
        fclose($fp);
      }
    } else {
      $ticket = $data->jsapi_ticket;
    }

    return $ticket;
  }

  private function getAccessToken() {
    // access_token 应该全局存储与更新,以下代码以写入到文件中做示例
    $data = json_decode(file_get_contents("wxjs/access_token.json"));
    if ($data->expire_time < time()) {
    //if (true) {
      // 如果是企业号用以下URL获取access_token
      // $url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$this->appId&corpsecret=$this->appSecret";
      $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$this->appId&secret=$this->appSecret";
      $res = json_decode($this->httpGet($url));
     // print_r($res);
      $access_token = $res->access_token;
      if ($access_token) {
        $data->expire_time = time() + 7000;
        $data->access_token = $access_token;
        $fp = fopen("wxjs/access_token.json", "w");
        fwrite($fp, json_encode($data));
        fclose($fp);
      }
    } else {
      $access_token = $data->access_token;
    }
    return $access_token;
  }

  private function httpGet($url) {
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_TIMEOUT, 500);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
    curl_setopt($curl, CURLOPT_URL, $url);

    $res = curl_exec($curl);
    curl_close($curl);

    return $res;
  }
}


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
/*
* 微信分享 朋友、朋友圈 基础配置
*
*/调用jssdk.php文件获取 singnPackage
function insert_share(){
    $weixin_info = $GLOBALS['db']->getRow("SELECT * FROM ".$GLOBALS['ecs']->table('weixin_config'));
    if($weixin_info['title'] && $weixin_info['appid'] && $weixin_info['appsecret']){
        require_once "wxjs/jssdk.php";

        $jssdk = new JSSDK($weixin_info['appid'], $weixin_info['appsecret']);
        $signPackage = $jssdk->GetSignPackage();
        if($signPackage){
            //判断是否登陆
            if(!empty($_SESSION['user_id'])){
                $GLOBALS['smarty']->assign('is_login', '1');
            }
            // //判断是否微信
            $is_weixin = is_weixin();
            if($is_weixin){
                $GLOBALS['smarty']->assign('is_weixin', '1');
            }
            
            $need_cache = $GLOBALS['smarty']->caching;
            $GLOBALS['smarty']->caching = false;
            $GLOBALS['smarty']->assign('weixin_info', $weixin_info);
            $GLOBALS['smarty']->assign('signPackage', $signPackage);
            $GLOBALS['smarty']->assign ( 'is_thumbnail', $weixin_info['is_thumbnail'] );
            $GLOBALS['smarty']->assign ( 'weixin_logo', $weixin_info['weixin_logo'] );
            
            
            $shop_name = $weixin_info['title'];
            
            $web_url ='http://'.$_SERVER['HTTP_HOST'];
            
            if(preg_match('/goods.php/i', $_SERVER['REQUEST_URI'])){//处理商品详情页分享
            
                $goods_id = intval($_GET['id']);
            
                $sql = "select * from ". $GLOBALS['ecs']->table('goods') ." where goods_id=".$goods_id;
            
                $row = $GLOBALS['db']->getRow($sql);
                  
                $goods_price = $row['shop_price'];
               
                $sharemsg = sprintf($weixin_info['sharemsg'],$shop_name,$goods_price);//后台自定义描述
                 
                $share_tiele = $row['goods_name'];
                 
              if( $weixin_info['is_thumbnail'] == 0){
              
                $share_img = $web_url."/".$row['goods_thumb'];
                 
                }else{
                 
                $share_img =  $web_url."/mobile/".$weixin_info['weixin_logo'];
                  
                }
                }elseif(preg_match('/tuiguang.php/i', $_SERVER['REQUEST_URI']) || preg_match('/article.php/i', $_SERVER['REQUEST_URI'])){//单品推广/文章详情
            
                $article_id = intval($_GET['id']);
            
                $sql = "select * from ". $GLOBALS['ecs']->table('article') ." where article_id=".$article_id;
            
                $row = $GLOBALS['db']->getRow($sql);
                 
                if(!empty($row['description'])){
                 
                       $sharemsg = $row['description'];//描述
                 
                      }else{
         
                     $sharemsg = $GLOBALS['_CFG']['shop_desc'];//描述
                     
                      }
                  
                 
                $share_tiele = $row['title'];//标题
                 
              if( $weixin_info['is_thumbnail'] == 0 && !empty($row['file_url'])){//缩略图
              
                $share_img = $web_url."/mobile/".$row['file_url'];
                 
                }else{
                 
                $share_img =  $web_url."/mobile/".$weixin_info['weixin_logo'];
                  
                }
            
            }elseif(preg_match('/article_detail.php/i', $_SERVER['REQUEST_URI'])){//文章广告植入系统
            
                $article_id = intval($_GET['id']);
            
                $sql = "select * from ". $GLOBALS['ecs']->table('article') ." where article_id=".$article_id;
            
                $row = $GLOBALS['db']->getRow($sql);
                 
                if(!empty($row['description'])){
                 
                       $sharemsg = $row['description'];//描述
                 
                      }else{
         
                     $sharemsg = "转发文章也能赚钱?!不信您也来试试!!";//描述
                     
                      }
                  
                 
                $share_tiele = $row['title'];//标题
                 
              if( $weixin_info['is_thumbnail'] == 0 && !empty($row['file_url'])){//缩略图
              
                $share_img = $web_url."/mobile/".$row['file_url'];
                 
                }else{
                 
                $share_img =  $web_url."/mobile/".$weixin_info['weixin_logo'];
                  
                }
            
            }else{
            
            $sharemsg = $_CFG['shop_desc'];
            
            $sql = "select value from ". $GLOBALS['ecs']->table('ecsmart_shop_config') ." where code= 'shop_name'";
            
            $share_tiele = $GLOBALS['db']->getOne($sql);
            
            $sql = "select value from ". $GLOBALS['ecs']->table('ecsmart_shop_config') ." where code= 'shop_desc'";
            
            $sharemsg = $GLOBALS['db']->getOne($sql);
            
            $share_img =  $web_url."/mobile/".$weixin_info['weixin_logo'];
            
            }
            
            $user_id = $_SESSION['user_id'];
              
            $sql = "select * from ". $GLOBALS['ecs']->table('weixin_user') ." where ecuid= '$user_id'";
            
            $ret = $GLOBALS['db']->getRow($sql);
            
            $guide_qrcode =  $web_url."/mobile/".$weixin_info['guide_qrcode'];
            //echo $_SESSION['user_id'].'-'.$_SESSION['show_guide_qrcode'];
            if( $weixin_info['open_guide'] == 1 && $ret['isfollow'] == 0  && $_SESSION['user_id'] && empty($_SESSION['show_guide_qrcode']) ){//是否开启未关注用户引导关注二维码
            
            $guide_qrcode =  $web_url."/mobile/".$weixin_info['guide_qrcode'];
            
            
            $GLOBALS['smarty']->assign('open_guide',          1);
            
            $GLOBALS['smarty']->assign('guide_qrcode',           $guide_qrcode);
            $_SESSION['show_guide_qrcode']=1;
            
            }
            
            $GLOBALS['smarty']->assign('share_tiele',           $share_tiele);
            
            $GLOBALS['smarty']->assign('share_img',           $share_img);
            
            $GLOBALS['smarty']->assign('sharemsg',           $sharemsg);
            
            $output = $GLOBALS['smarty']->fetch('library/share.lbi');

            $GLOBALS['smarty']->caching = $need_cache;
            
            return $output;
        }

    }
}
  

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
模板文件中,调用weixin的js接口<script src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script>

<script>
  wx.config({
    debug: false,
    appId: '{$signPackage.appId}',
    timestamp: '{$signPackage.timestamp}',
    nonceStr: '{$signPackage.nonceStr}',
    signature: '{$signPackage.signature}',
    jsApiList: [
      // 所有要调用的 API 都要加到这个列表中
      'onMenuShareTimeline','onMenuShareAppMessage','getLocation','translateVoice'
    ]
  });
  wx.ready(function () {   
     
    //分享到朋友圈
    wx.onMenuShareTimeline({
            
        link: window.location.href, // 分享链接
        title: '{$sharemsg}', // 分享标题
        imgUrl: '{$share_img}',// 分享图标
        <!--{if $is_login}-->
        success: function () {
            console.log("weixin_share.php?act=mycheck");
            $.post("weixin_share.php?act=mycheck",{'id':'1','uid':'1','show':'1','type':'pengyouquan'},function(data,status){
                console.log("111111111111111111");
                 data= eval('(' + data + ')');
             if (data.state == 1){
             alert('微信分享收益提示:本次分享获得'+data.share_money+'元;'+data.share_point+'积分');
             }else{
              alert('微信分享收益提示:今天的奖励已赠送过啦!感谢您的分享!!');
             }
             });
        },
        cancel: function () {
            // 用户取消分享后执行的回调函数
        }
        <!--{/if}-->
    });
     
    //分享给朋友
    wx.onMenuShareAppMessage({
   
    title: '{$share_tiele}',//分享标题
    desc: '{$sharemsg}',
    link: window.location.href,
    imgUrl: '{$share_img}', // 分享图标
    type: '', // 分享类型,music、video或link,不填默认为link
    dataUrl: '', // 如果type是music或video,则要提供数据链接,默认为空
    <!--{if $is_login}-->
    success: function () {
        // 用户确认分享后执行的回调函数
         
        $.post("weixin_share.php?act=mycheck",{'id':'1','uid':'1','show':'1','type':'pengyou'},function(data,status){
            console.log("2222222222222");
             data= eval('(' + data + ')');
             if (data.state == 1){
             alert('微信分享收益提示:本次分享获得'+data.share_money+'元;'+data.share_point+'积分');
             }else{
              alert('微信分享收益提示:今天的奖励已赠送过啦!感谢您的分享!!');
             }
              
        });
    },
    cancel: function () {
        // 用户取消分享后执行的回调函数
    }
    <!--{/if}-->
});
  });
</script>
  

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
分享成功后,回调写积分文件<?php

define('IN_ECS', true);
define('ECS_ADMIN', true);

require('../includes/init.php');
$is_weixin = is_weixin();              
if($is_weixin && !empty($_POST['id']) && !empty($_POST['uid']) && !empty($_POST['show']) && !empty($_POST['type']) && !empty($_GET['act']) && !empty($_SESSION['user_id'])){
    if($_GET['act'] == 'mycheck')
    {
        if($_POST['type'] == 'pengyouquan'){
            $weixin_info = $db->getRow("select * from ".$ecs->table('weixin_config')." where id='1'");
            $share_money = round(randomFloat_share($weixin_info['pengyouquan_money'], $weixin_info['pengyouquan_money_up']),2);
            $share_point = round(randomFloat_share($weixin_info['pengyouquan_point'], $weixin_info['pengyouquan_point_up']));
            if($weixin_info['appid'] && $weixin_info['appsecret'] && $weixin_info['title'] && $weixin_info['is_pengyouquan'] == '1'){
                $nowtime = mktime();
                //$yestime = strtotime(date('Y-m-d'));
                $yestime = strtotime(date('Y-m-d', time()));
                 
                $count = $db->getOne("select count(*) from ".$ecs->table('weixin_share')." where type='2' and user_id=".$_SESSION['user_id']." and create_time > '$yestime'");
                 
                if($weixin_info['is_everyday'] == '1'){
                     
                    if($count <= $weixin_info['pengyouquan_times'] ){
                        $info = date('Y-m-d H:i:s')."微信分享朋友圈,获得".$share_money.'元,'.$share_point.'积分';
                        log_account_change($_SESSION['user_id'], $share_money, 0, 0, $share_point, $info);
                    }else{
                $db->query("insert into ".$ecs->table('weixin_share')." (`user_id`,`type`,`create_time`) values ('$_SESSION[user_id]','1','$nowtime') ");
                     $state = '0';
                     echo json_encode(array('state'=>$state ));  
                     exit;
                     
                     }
                }
                else
                {
                    if($count <= $weixin_info['pengyouquan_times'] ){
                        $info = date('Y-m-d H:i:s')."微信分享朋友圈,获得".$share_money.'元,'.$share_point.'积分';
                        log_account_change($_SESSION['user_id'], $share_money, 0, 0, $share_point, $info);
                    }else{
                $db->query("insert into ".$ecs->table('weixin_share')." (`user_id`,`type`,`create_time`) values ('$_SESSION[user_id]','1','$nowtime') ");
                     $state = '0';
                     echo json_encode(array('state'=>$state ));  
                     exit;
                     
                     }
                }
                $db->query("insert into ".$ecs->table('weixin_share')." (`user_id`,`type`,`create_time`) values ('$_SESSION[user_id]','2','$nowtime') ");
            
            $state = '1';
            echo json_encode(array('share_money'=>$share_money,'share_point'=>$share_point,'state'=>$state));
            }
        }

        if($_POST['type'] == 'pengyou'){
            $weixin_info = $db->getRow("select * from ".$ecs->table('weixin_config')." where id='1'");
            $share_money = round(randomFloat_share($weixin_info['pengyou_money'], $weixin_info['pengyou_money_up']),2);
            $share_point = round(randomFloat_share($weixin_info['pengyou_point'], $weixin_info['pengyou_point_up']));
            if($weixin_info['appid'] && $weixin_info['appsecret'] && $weixin_info['title'] && $weixin_info['is_pengyou'] == '1'){
                $nowtime = mktime();
                //$yestime = strtotime(date('Y-m-d'));
                $yestime = strtotime(date('Y-m-d', time()));
                $count = $db->getOne("select count(*) from ".$ecs->table('weixin_share')." where type='1' and user_id=".$_SESSION['user_id']." and create_time > '$yestime'");
                if($weixin_info['is_everyday'] == '1'){
                     
                    if($count <= $weixin_info['pengyou_times'] ){
                        $info = date('Y-m-d H:i:s')."微信分享给朋友,获得".$share_money.'元,'.$share_point.'积分';
                        log_account_change($_SESSION['user_id'], $share_money, 0, 0, $share_point, $info);
                    }else{
                $db->query("insert into ".$ecs->table('weixin_share')." (`user_id`,`type`,`create_time`) values ('$_SESSION[user_id]','1','$nowtime') ");
                    $state = '0';
                     echo json_encode(array('state'=>$state ));  
                     exit;
                     
                     }
                }
                else
                {
                    if($count <= $weixin_info['pengyou_times'] ){
                        $info = date('Y-m-d H:i:s')."微信分享给朋友,获得".$share_money.'元,'.$share_point.'积分';
                        log_account_change($_SESSION['user_id'], $share_money, 0, 0, $share_point, $info);
                    }else{
                 $db->query("insert into ".$ecs->table('weixin_share')." (`user_id`,`type`,`create_time`) values ('$_SESSION[user_id]','1','$nowtime') ");
                     $state = '0';
                     echo json_encode(array('state'=>$state ));  
                     exit;
                     
                     }
                }
                $db->query("insert into ".$ecs->table('weixin_share')." (`user_id`,`type`,`create_time`) values ('$_SESSION[user_id]','1','$nowtime') ");
            $state = '1';
            echo json_encode(array('share_money'=>$share_money,'share_point'=>$share_point,'state'=>$state));

            }
        }
    }
}

function is_weixin()
{
    $useragent = addslashes($_SERVER['HTTP_USER_AGENT']);
    if(strpos($useragent, 'MicroMessenger') === false && strpos($useragent, 'Windows Phone') === false )
    {
        return false;
    }
    else
    {
        return true;
    }
}

//生成随机数 P R I N C E Q Q 120 029 121
function randomFloat_share($min = 0, $max = 1) {
        return $min + mt_rand() / mt_getrandmax() * ($max - $min);
}

发表于 2019-8-7 09:33:46 | 显示全部楼层
主人真是牛人。。。
发表于 2019-8-7 12:51:53 | 显示全部楼层
好苦恼W
回复

使用道具 举报

发表于 2019-8-7 15:57:37 | 显示全部楼层
大神指导下啊J
发表于 2019-8-7 22:02:37 | 显示全部楼层
;好苦恼H
回复

使用道具 举报

发表于 2019-8-8 06:05:06 | 显示全部楼层
我顶,我顶,万还顶K
发表于 2019-8-8 09:37:16 | 显示全部楼层
感动中U
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

技术交流售后群

QQ|小黑屋|手机版|站点找错-建议|AI手机网 |Sitemap



GMT+8, 2024-5-20 09:17 , Processed in 0.147609 second(s), 27 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表