勤奋鸟旗下 软件定制开发 安全交付平台!一次合作,终身售后!全程项目经理一对一跟进测试!公司以自研团队结合搭档圈,为用户提供安全快速稳定的软件源码开发服务!

微信分享JSSDK 开发+tp5

2024-09-04 17:20:53
复制链接

7863

jssdk tp5

关于微信jssdk的使用一般遇到问题都是第一时间去查官方文档,但是官方文档也只是告诉你基本的步骤剩下的还是需要你去查资料或者问度娘。这篇文章主要说下微信公众号的分享功能.

 先看看官方文档中给的提示吧。这五条步骤是没错的

步骤一:绑定域名

步骤二:引入js接口

步骤三:通过config接口注入权限验证配置

步骤四:通过ready接口处理成功验证

步骤五:通过error接口处理失败验证

步骤一和步骤二看文档相信大家都能看懂,到步骤三问题来了这些数据从哪来话不多说直接上代码


 public function get_sign(){

        // 微信 JS 接口签名校验工具: https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapisign

        $appid = 'wx*************19d2d';

        $secret = '66d**************4d4a9cf848';

        // 获取token

        $token_data = file_get_contents(__DIR__.'\wechat_token.txt');

        $time = 7200;

        if (!empty($token_data)) {

            $token_data = json_decode($token_data, true);

            $time  = time() - $token_data['time'];

        }

        if ($time > 3600) {

            $token_url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$appid}&secret={$secret}";

            $token_res = $this->https_request($token_url);

            $token_res = json_decode($token_res, true);

            $token = $token_res['access_token'];

            $data = array(

                'time' =>time(),

                'token' =>$token

            );

 

            $res = file_put_contents(__DIR__.'\wechat_token.txt', json_encode($data));

            if ($res) {

                echo '更新 token 成功';

            }

        } else {

            $token = $token_data['token'];

        }

        // 获取ticket

        $ticket_data = file_get_contents(__DIR__.'\wechat_ticket.txt');

        $time1 = 7200;

        if (!empty($ticket_data)) {

            $ticket_data = json_decode($ticket_data, true);

            $time1  = time() - $ticket_data['time'];

        }

        if ($time1 > 3600) {

            $ticket_url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token={$token}&type=jsapi";

            $ticket_res = $this->https_request($ticket_url);

            $ticket_res = json_decode($ticket_res, true);

            $ticket = $ticket_res['ticket'];

            $data = array(

                'time'    =>time(),

                'ticket'  =>$ticket

            );

            $res = file_put_contents(__DIR__.'\wechat_ticket.txt', json_encode($data));

            if ($res) {

                echo '更新 ticket 成功';

            }

        } else {

            $ticket = $ticket_data['ticket'];

        }

        // 进行sha1签名

        $timestamp = time();

        $nonceStr = $this->createNonceStr();

        // 注意 URL 建议动态获取(也可以写死).

        $protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://";

        $url = "$protocol$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]"; // 调用JSSDK的页面地址

        //$url = $_SERVER['HTTP_REFERER']; // 前后端分离的, 获取请求地址(此值不准确时可以通过其他方式解决)

        $str = "jsapi_ticket={$ticket}&noncestr={$nonceStr}×tamp={$timestamp}&url={$url}";

        $sha_str = sha1($str);

        $signPackage = array(

            "appId" =>  $appid,

            "nonceStr" => $nonceStr,

            "timestamp" => $timestamp,

            "signature" => $sha_str,

        );

        return $signPackage;

    }

    //随机字符串

    public 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;

    }

    // 模拟 http 请求

    public function https_request($url, $data = null){

        // curl 初始化

        $curl = curl_init();

        // curl 设置

        curl_setopt($curl, CURLOPT_URL, $url);

        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);

        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);

        // 判断 $data get  or post

        if ( !empty($data) ) {

            curl_setopt($curl, CURLOPT_POST, 1);

            curl_setopt($curl, CURLOPT_POSTFIELDS, $data);

        }

        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

        // 执行

        $res = curl_exec($curl);

        curl_close($curl);

        return $res;

    }
注意换上自己的项目参数,在你需要用到参数的方法中这样写就能用啦(如下)


data=array();

      $wx_config =$this->get_sign();

       $data=array_merge($data,$wx_config);

   

       $this->assign('data',$data);

前端部分的代码我也附上吧,谁叫我这么好心呢。哪个页面用就放到那个页面里面



有的同事到这可能会遇到些问题,放心我会出手。
wx.ready在你wx.config验证成功后无论验证失败或者成功都会执行的,
那如何区别你的项目是否成功了呢,加上wx.error
在wx.ready和wx.error都打印下看看哪个会先执行,error先执行的那就是验证失败了,就是后台代码的毛病
用微信中新的接口就行,即将废弃的就不要用了吧省得以后维护也麻烦。


享出去的链接需要注意下
微信开放全域名访问后出现的限制。目前可从 公众号菜单进入分享、扫描二维码后分享、添加到收藏,
从微信我的收藏进入分享 是正常的。其他地方进入分享都是链接
链接中的参数自己在方法中设置就行根据客户需求来设置


17330196230 13230981129

多线程同步开发
项目经理1v1跟进
源码定制交付
一次合作/终身售后

微信扫码登录/注册

提示

您的诉求已经提交请等待工作人员联系,快速通过请联系管理员

微信扫一扫快速联系

用户协议

欢迎访问我们的网站!我们非常重视用户的隐私权和信息安全,因此制定了以下用户协议,以明确我们与您之间的关系以及您在使用本网站时应遵守的条款。请您仔细阅读并同意本协议的所有条款,以便您能够合法、安全地使用本网站。如果您不同意本协议的任何内容,请立即停止使用本网站。

  1. 服务说明:本网站是一个提供定制软件开发服务和在线找技术搭档的互联网平台。我们保留随时更改、更新或暂停本网站的权利。我们会尽力确保网站的正常运行,但对于因技术问题、系统维护或其他原因导致的网站暂时不可用,我们不承担任何责任。

  2. 用户注册:用户需要通过提供手机号、微信扫码和其他必要信息来注册一个账户。您有责任保护您的用户名和密码,不得将其透露给任何第三方。对于因您的用户名和密码被泄露而导致的任何损失或损害,我们将不承担责任。

  3. 用户行为规范:用户应遵守中华人民共和国相关法律法规,不得发布或传播违法信息、侵犯他人权益的内容。用户应对其发布的内容负责,并承担因发布不当内容而引起的任何法律责任。

  4. 版权声明:本网站所包含的所有文字、图片、音频、视频等素材的著作权均归本网站所有(会员用户上传的默认承诺为不侵权的合法自有技术成果,本网站审核信息后可展示,所有权不归本网站)。未经本网站书面许可,任何单位或个人不得以任何形式复制、转载、修改或传播本网站的任何内容。对于侵犯本网站知识产权的行为,将依法追究其法律责任。

  5. 免责声明:本网站不对因使用本网站而引起的任何直接、间接、偶然、特殊或后果性的损害承担责任。包括但不限于利润损失、数据丢失、业务中断等。

  6. 适用法律和争议解决:本协议的签订、履行、解释及争议解决均适用中华人民共和国法律。如发生争议,双方应首先协商解决;协商不成的,任何一方均有权向有管辖权的人民法院提起诉讼。

  7. 本协议的解释权归本网站所有。如有未尽事宜,本网站保留最终解释权。

  8. 本协议自用户点击“同意”或“接受”按钮时生效。

同意

隐私政策

欢迎访问我们的网站!我们致力于为您提供一个安全、可靠的在线环境。本隐私政策旨在说明我们在您使用我们的网站时如何收集、使用和保护您的个人信息。请仔细阅读以下内容,以了解我们的隐私政策。

  1. 信息收集

在使用我们的网站时,我们可能会收集以下类型的信息:

a) 个人识别信息:如姓名、电子邮件地址、电话号码等。 b) 非个人识别信息:如浏览器类型、操作系统、设备类型、IP地址等。 c) 用户行为信息:如访问页面、点击链接、搜索查询等。

  1. 信息使用

我们收集的信息将用于以下目的:

a) 提供、改进和个性化我们的服务。 b) 与您联系,回应您的询问和请求。 c) 发送您请求的或我们认为对您有帮助的信息。 d) 进行市场调研和分析,以改进我们的产品和服务。 e) 防止欺诈和其他非法活动。

  1. 信息共享

我们不会出售、出租或以其他方式与第三方共享您的个人信息,除非:

a) 获得您的明确同意。 b) 与可信赖的合作伙伴共享,以提供您请求的服务。 c) 根据法律要求或政府机关的要求。 d) 为保护我们的权利、财产或安全。

  1. 信息安全

我们采取合理的安全措施,以保护您的个人信息不受未经授权的访问、披露、更改或破坏。然而,请注意,没有任何一种电子存储方法是100%安全的。

  1. Cookie和跟踪技术

我们的网站使用Cookie和类似的跟踪技术来收集有关您使用我们网站的信息。这些信息有助于我们分析和改进我们的网站,以及提供个性化的内容和广告。您可以通过浏览器设置拒绝接受Cookie,但这可能会影响您使用我们网站的能力。

  1. 第三方链接

我们的网站可能包含指向其他网站的链接。请注意,我们对其他网站的隐私政策和实践不承担任何责任。我们建议您在访问这些网站时查看其隐私政策。

  1. 隐私政策的变更

我们可能会不时更新本隐私政策。请定期查看此页面,以确保您了解我们对个人信息的最新政策。

  1. 联系我们

如果您对我们的隐私政策有任何疑问或建议,请通过以下联系方式与我们联系:

电子邮件:[wangye-101@163.com]

电话:+86-173-3019-6230

地址:中国石家庄市长安区吾悦广场2010室

感谢您的信任和支持!我们将竭诚为您提供更优质的服务。

同意