晚9点开始,11点结束,踩坑2个小时精华总结

废话不多说,直接上代码

前端

<style>.launch_btn_2{position: fixed;top: 200px;right:-50px;width: 145px;height: 45px;z-index:999;borde;radius: 25px;background: transparent;display:block;}
</style>
<div class="launch_btn_2"><wx-open-launch-weapp id="launch-btn" username="gh_xxxxx" path="/pages/home/index.html" style="display: block;"><template><style>.btn {width: 80px; height: 30px;border-radius: 25px;background: #085B27;display:block;border:0px;color:white;}</style><div style="text-align: center;align-items: center;margin: 10px;"><button class="btn btn-open-weapp">进入小程序</button></div></template></wx-open-launch-weapp><script>var btn = document.getElementById('launch-btn');btn.addEventListener('launch', function (e) {console.log('success');});btn.addEventListener('error', function (e) {console.log('fail', e.detail);});</script>
</div>// 最后
<script src="https://res.wx.qq.com/open/js/jweixin-1.6.0.js"></script>
<script type="text/javascript">wx.config({debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。appId: 'xxxxxxx', // 必填,公众号的唯一标识timestamp: '<!--{$timestamp}-->', // 必填,生成签名的时间戳nonceStr: '<!--{$nonceStr}-->', // 必填,生成签名的随机串signature: '<!--{$sha_str}-->',// 必填,签名jsApiList: ['onMenuShareTimeline', 'scanQRCode','openLocation'],// 必填,需要使用的JS接口列表,openTagList: ['wx-open-launch-weapp']});wx.ready(function () {console.log('接口配置成功');});
</script>

php服务端

//add// 微信 JS 接口签名校验工具: https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapisign
$appid = xxxxx'; //填入服务号AppID
$secret = 'xxxxxxxx'; //填入服务号AppSecret// 获取token
$token_data = file_get_contents('./wechat_token.txt');
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 = 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('./wechat_token.txt', json_encode($data));if ($res) {
//        echo '更新 token 成功';}
} else {$token = $token_data['token'];
}// 获取ticket
$ticket_data = file_get_contents('./wechat_ticket.txt');
if (!empty($ticket_data)) {$ticket_data = json_decode($ticket_data, true);
}
$time = time() - $ticket_data['time'];
if ($time > 3600) {$ticket_url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token={$token}&type=jsapi";$ticket_res = 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('./wechat_ticket.txt', json_encode($data));if ($res) {
//        echo '更新 ticket 成功';}
} else {$ticket = $ticket_data['ticket'];
}// 进行sha1签名
$timestamp = time();
$nonceStr = 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}&timestamp={$timestamp}&url={$url}";
$sha_str = sha1($str);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 请求* @param  String $url 请求网址* @param  Array $data 数据*/
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 postif (!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;
}
//end

ps:
1.wx-open-launch-weapp标签 username填写的是小程序源氏ID
2.给button标签添加 display:block;属性
3.微信开发者工具无法调试,按钮不会显示,只能在微信内打开测试(按钮只会在手机微信内访问H5显示)。
4.openTagList: [‘wx-open-launch-weapp’]
5.js接口列表填写openLocation。
6.欢迎各位大大补充~~

如果对你有帮助,小手一扫,给孩子口饭吃吧~~

微信公众号跳转小程序,详细教程相关推荐

  1. 微信公众号跳转小程序 wx-open-launch-weapp (最全指南及坑)

    微信公众号使用 wx-open-launch-weapp 开放标签跳转小程序 注意事项 微信开放标签有最低的微信版本要求,以及最低的系统版本要求. 微信版本要求为:7.0.12及以上 系统版本要求为: ...

  2. php 微信公众号跳转小程序,微信公众号菜单添加小程序miniprogrampagepath参数详解php开发公众号-小程序怎么放到公众号菜单里-公众号菜单链接小程序...

    1. 随着微信小程序功能的开发,2. 已经可以跟公众号打通了,3. 主要有两种方式:4. 1)在公众号文章中插入小程序5. 2)在公众号菜单中添加小程序6. 第一种方式,7. 子恒老师在前面的课程已经 ...

  3. 微信公众号跳转小程序方法

    1 公众号需要关联小程序 2 跳转方法: wx.navigateToMiniProgram(Object object)  打开另一个小程序 wx.navigateToMiniProgram({app ...

  4. 微信公众号跳转小程序流程简单梳理(未完待续)

    功能需求:公众号跳转至小程序 一.准备工作 1.申请测试号 http://mp.weixin.qq.com/debug/cgi-bin/sandboxinfo?action=showinfo& ...

  5. uniapp 微信公众号跳转小程序的各种坑

    一.引进js http://res2.wx.qq.com/open/js/jweixin-1.6.0.js import wx from "jweixin-module"; let ...

  6. php 微信公众号跳转小程序,微信小程序页面跳转功能

    本文主要介绍微信小程序页面跳转功能之从列表的item项跳转到下一个页面的方法,结合具体实例形式总结分析了微信小程序页面跳转及列表item项跳转页面的相关操作技巧,需要的朋友可以参考下. 一.效果图 从 ...

  7. 微信公众号跳转小程序 wx-open-launch-weapp(h5)

    一:在vue3中使用 <wx-open-launch-weapp@launch="onlaunch"@error="onerror"path=" ...

  8. 微信小程序如何跳转到微信公众号文章,小程序如何关联公众号或订阅号

    微信小程序如何跳转到微信公众号文章,小程序如何关联公众号或订阅号 前置条件 公众号最高管理权限(或能与最高权限管理者配合操作) 小程序开发权限或最高管理权限 小程序方面 根据官方资料描述,小程序中展示 ...

  9. 微信公众号菜单添加小程序,miniprogram,pagepath参数详解,php开发公众号

    随着微信小程序功能的开发, 已经可以跟公众号打通了, 主要有两种方式: 1) 在公众号文章中插入小程序 2) 在公众号菜单中添加小程序 第一种方式, 子恒老师在前面的课程已经详细介绍过, 今天来讲第二 ...

  10. vue代码怎么变成小程序_使用vue编写h5公众号跳转小程序的实现代码

    前言:我使用vue编写的h5公众号,实现点击小程序入口,打开小程序,微信官方文档:https://developers.weixin.qq.com/doc/offiaccount/OA_Web_App ...

最新文章

  1. 统计s=hello alex alex hello haiyan cc haiyan com中每个单词的个数
  2. 2020腾讯广告算法大赛十强名单出炉!
  3. Sql2000命名中的’_’好象会引发问题
  4. usb传输标准和接口标准
  5. ITK:使用最小最大曲率流平滑图像
  6. 处于RUNNABLE状态的Java线程未真正运行
  7. nltkdata路径设置linux,NLTK data路径设置
  8. android byte转string_Dig101 - Go之string那些事
  9. Android AP模式下获取SSID/PASSWORD
  10. 火狐浏览器常用插件的使用
  11. java 订单编号_生成订单编号 用java怎么处理
  12. SpringBoot + Vue 前后端分离的小案例
  13. 微信小程序-收藏功能
  14. 3D和2D游戏开发技术里的坐标系总结
  15. 使用时testng报错问题解决方案
  16. SpringCloud疑难杂症
  17. 【论文阅读】Text Gestalt: Stroke-Aware Scene Text Image Super-Resolution
  18. html form 提交json数据格式,表单提交时编码类型enctype详解
  19. 面试中的操作系统知识
  20. python财务案例分析考试答案_《财务案例分析》作业及答案(三次)

热门文章

  1. win10计算机怎么计算根号,详细介绍win10系统自带的计算器的功能,经验告诉你该这样...
  2. 修改U盘、移动硬盘时提示目标文件夹访问被拒绝的问题解决思路
  3. 微博登录及删除粉丝/转发/评论的脚本[更新中]
  4. 文件夹批量重命名方法
  5. PTA2017年天梯赛题目整理
  6. VMware虚拟机安装ghost win7系统方法
  7. 基于文本语义的智能问答机器人——工业应用
  8. wieshark导出ftp文件_【FTP】Wireshark学习FTP流程
  9. pyodbc linux 乱码,关于python:无法在Linux上安装pyodbc
  10. pyodbc mysql_Robot Framework 通过pyodbc连接Mysql