H5页面设置微信分享

article/2025/9/13 18:44:34

H5页面设置微信分享


写代码之前的准备工作
1、登录微信公众号(需要已经认证过的公众号),进入“设置与开发”→“公众号设置”→“功能设置”→“JS接口安全域名”,将文件下载下来,上传至与将要分享的页面相同的域名服务器中,上传成功后再在下面填写你的域名。在这里插入图片描述
2、在“设置与开发”→“基本配置”→“IP白名单”中配置你的IP地址,这里的IP地址是获取签名步骤时需要访问的IP地址。
在这里插入图片描述
3、在“设置与开发”→“基本配置”中拿到APPID及密钥(也就是开发者密码AppSecret),这里在获取签名时需要用到。
在这里插入图片描述
4、这时候可以开始获取签名了,在生成签名之前必须先了解一下jsapi_ticketjsapi_ticket是公众号用于调用微信JS接口的临时票据。正常情况下,jsapi_ticket的有效期为7200秒,通过access_token来获取。由于获取jsapi_ticket的api调用次数非常有限,频繁刷新jsapi_ticket会导致api调用受限,影响自身业务,开发者必须在自己的服务全局缓存jsapi_ticket 。

通过官方给出的信息,我们需要先获取access_token(有效期7200秒,2个小时开发者必须在自己的服务全局缓存access_token),access_token是公众号的全局唯一接口调用凭据,公众号调用各接口时都需使用access_token

/*  这部分其实大部分都是后台协助开发的,因为要服务器缓存前端可以了解下逻辑采用http GET方式请求https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=你的APPID&secret=你的AppSecret返回结果如下:
*/
{"access_token":"此处返回的是你的access_token","expires_in":7200}

5、通过access_token获取jsapi_ticket(有效期7200秒,2个小时,开发者必须在自己的服务全局缓存jsapi_ticket

/*  这部分其实大部分都是后台协助开发的,因为要服务器缓存前端可以了解下逻辑采用http GET方式请求https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=你的access_token&type=jsapi返回结果如下:
*/
{"errcode":0,"errmsg":"ok","ticket":"bxLdikRXVbTPdHSM05e5u5sUoXNKd8-41ZO3MhKoyN5OfkWITDGgnr2fwJ0m9E8NYzWKVZvdVtaUgWvsdshFKA","expires_in":7200
}

6、生成签名
参与签名的字段包括noncestr(随机字符串), 有效的jsapi_ticket, timestamp(时间戳), url(当前网页的URL,不包含#及其后面部分) 。

首先:对所有待签名参数按照字段名的ASCII 码从小到大排序(字典序)后,使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串string1

顺序依次为:jsapi_ticket,noncestr,timestamp,url

jsapi_ticket=sM4AOVdWfPE4DxkXGEs8VMCPGGVi4C3VM0P37wVUCFvkVAy_90u5h9nbSlYy3-Sl-HhTdfl2fzFy1AOcHKP7qg&noncestr=Wm3WZYTPz0wzccnW&timestamp=1414587457&url=http://mp.weixin.qq.com?params=value

然后:对string1进行sha1签名,得到signature

signature=sha1(string1) // 0f9de62fce790f9a083d5c99e95740ceb90c27ed

注意!!!
签名用的noncestr和timestamp必须与wx.config中的nonceStr和timestamp相同。
签名用的url必须是调用JS接口页面的完整URL。
出于安全考虑,开发者必须在服务器端实现签名的逻辑。

拿到签名后就可以正式开始撸代码了~~

前端代码
通过后台给出的接口获取到签名的具体信息,然后开始配置分享相关内容

/*  在需要调用JS接口的页面引入如下JS文件,(支持https):http://res.wx.qq.com/open/js/jweixin-1.6.0.js如需进一步提升服务稳定性,当上述资源不可访问时,可改访问:http://res2.wx.qq.com/open/js/jweixin-1.6.0.js (支持https)如果遇到某些不支持的情况,也可以降低版本使用
*/
<script tpye="text/javascript" src="http://res.wx.qq.com/open/js/jweixin-1.6.0.js"></script>
<script tpye="text/javascript">// 如果使用$.ajax,需要先引入jquery$.ajax({type:"Get",url: `后台获取的接口URL + 你的本地url地址`, // 因为签名要根据页面URL来自动获取success: function(res){// 分享配置wx.config({debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。appId: res.data.appId, // 必填,公众号的唯一标识timestamp: res.data.timestamp, // 必填,生成签名的时间戳nonceStr: res.data.nonceStr, // 必填,生成签名的随机串signature: res.data.signature,// 必填,签名jsApiList: ['updateAppMessageShareData', 'updateTimelineShareData'] // 必填,需要使用的JS接口列表   我这里配置的是分享给好友、分享到朋友圈});// 在配置分享内容之前,还可以先检测一下jsApi是否可用wx.checkJsApi({jsApiList: ['updateAppMessageShareData', 'updateTimelineShareData'], // 需要检测的JS接口列表,所有JS接口列表见附录2,success: function(res) {// 以键值对的形式返回,可用的api值true,不可用为false// 如:{"checkResult":{"chooseImage":true},"errMsg":"checkJsApi:ok"}}});wx.ready(function () {   //需在用户可能点击分享按钮前就先调用wx.updateAppMessageShareData({ title: '', // 分享标题desc: '', // 分享描述link: '', // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致imgUrl: '', // 分享图标success: function () {// 设置成功}})wx.updateTimelineShareData({ title: '', // 分享标题link: '', // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致imgUrl: '', // 分享图标success: function () {// 设置成功}})});// 这里可以写也可以不写,主要是用来测试看看config信息有没有通过的wx.error(function(res){// config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开			config的debug模式查看,也可以在返回的res参数中查看,对于SPA可以在这里更新签名。});}})
</script>

到这里就全部配置完成啦,可以通过微信开发者工具去调试
点击公众号网页,就可以跳转到公众号网页的页面,然后填上你的地址就可以了~~
在这里插入图片描述
在这里插入图片描述


http://chatgpt.dhexx.cn/article/BBB9iTnU.shtml

相关文章

闲置电视盒子不要扔!搭建Blynk物联网服务器,太香了!

之前写过WINDOS搭建blynk物联网的教程&#xff0c;由于电脑一直开机功耗太大&#xff0c;现在终于找到了用电视机顶盒刷linux系统安装服务器的方法&#xff0c;先一睹为快 在开始今天的折腾前&#xff0c;自备一个刷好linux系统的电视机顶盒&#xff0c;可以按神雕的教程来 地…

学会搭建小程序生鲜商城,开启生鲜电商新模式

电商平台的出现&#xff0c;为人们带来了极大的便利。然而&#xff0c;传统的电商平台已经不能满足消费者对于购物体验的要求。如今&#xff0c;小程序生鲜商城因其轻量化、高效率等特点&#xff0c;成为了众多卖家的首选。本文将介绍如何学会搭建小程序生鲜商城&#xff0c;并…

【HTML+CSS】实现小盒子水平垂直居中大盒子

小div在大div中如何水平垂直居中 关于如何设置小盒子在大盒子里面水平垂直方向同时居中的实现方法有很多种&#xff0c;下面仅列举了常用 的几种。 首先看一下要实现的效果图及对应的html代码&#xff1a; // 大盒子嵌套小盒子 小盒子水平垂直居中 <div class"big&qu…

Docker网络---容器互联

前言&#xff1a; 虽然每个docker容器之间都能通过ip来进行互联&#xff0c;但当容器重新启动&#xff0c;ip就会被重新分配给重新启动的容器&#xff0c;这时同个容器由于重启导致ip不一样了&#xff0c;这时就会导致开发和运维的困难程度大大增加&#xff0c;这时候就要考虑…

京东首页静态页面html+css

个人名片&#xff1a; &#x1f60a;作者简介&#xff1a;一名大一在校生&#xff0c;web前端开发专业 &#x1f921; 个人主页&#xff1a; python学不会 &#x1f43c;第一次写博客&#xff0c;写的不好望指正 &#x1f385;学习目标: 坚持每一次的学习打卡 项目介绍&#xf…

Java-微信H5分享功能

操作前必看 微信自带的点击按钮分享已经下架了&#xff0c;目前只支持在微信浏览器点击右上角的分享&#xff0c;自己配置分享参数&#xff0c;而且目前分享参数也无法使用。 原因&#xff1a;响应国家反垄断规章&#xff0c;微信调整可实现访问外链&#xff1b; 异常&#x…

计算机考证照片尺寸规格

1&#xff09;照片应为考生本人近期正面免冠彩色证件照。 2&#xff09;成像区上下要求头上部空1/10&#xff0c;头部占7/10&#xff0c;肩部占1/5&#xff0c;左右各空1/10。采集的图象大小最小为192144&#xff08;高宽&#xff09;&#xff0c;成像区大小为48mm33mm&#x…

2016 PayPal商家账户界面 如何设置开启IPN

登陆账户到www.paypal.com点击右上方“用户信息”〉“用户信息与设置”&#xff0c;在打开的页面中&#xff0c;点击左侧“销售工具”菜单页面右侧找到“即使付款通知”&#xff0c;点击“更新”链接勾选“接收即使付款通知消息&#xff08;已启用&#xff09;”&#xff0c;并…

paypal IPN and PDT

paypal IPN and PDT 相关文档说明&#xff1a; https://developer.paypal.com/docs/classic/ipn/gs_IPN/ https://developer.paypal.com/docs/classic/ipn/integration-guide/IPNTesting/ https://developer.paypal.com/docs/classic/ipn/integration-guide/IPNPDTAnAltern…

paypal付款通知IPN

什么是即时付款通知IPN 当您收到新的付款交易或者已发生的付款交易的状态发生变化时&#xff0c;PayPal都将异步&#xff08;即不作为网站付款流程的一部分&#xff09; 发送付款详细数据到您所指定的URL&#xff0c;以便您了解买家付款的具体情况并做出相应的响应。这个过程我…

paypal 新注册帐号有哪些问题,paypal EC 和paypal checkout 如何设置账户IPN\签名等

一、IPN如何设置 IPN的设置 https://www.paypal.com/cgi-bin/customerprofileweb?cmd_profile-ipn-notify 二、paypal EC的用户名、密码、签名的设置 https://www.paypal.com/businessprofile/mytools/apiaccess/firstparty/signature 三、新账户提示该商家目前无法接收pa…

paypal的IPN机制

paypal对接时发现有这么一个机制&#xff0c;看起来还不错&#xff0c;起到了防止篡改欺诈行为&#xff0c;保证了通信的安全性&#xff0c;但会增加几次通信。

paypal IPN返回

1.设定返回的地址 目标&#xff1a;登录paypal-->用户信息-->我的销售工具-->即时付款通知-->编辑并填写url 填写的URL必须为公网的&#xff0c;不能为局域网&#xff0c;要不就无法接收到paypal发送的信息 2.编写IPN.jsp (此代码为官方代码) //从 PayPal 出读取 P…

沙箱环境和正式环境【PayPal接入(java)】【IPN通知问题】项目实战干货总结记录!

如果你是第一次接入paypal&#xff0c;相信本文的每一个地方都会对你有帮助的&#xff01;&#xff01;因为这篇文章都是一个一个的坑踩出来的&#xff01; 一、接入paypal环境准备&#xff1a; 1、注册paypal账号 https://www.paypal.com 注册“商家账号”&#xff0c;完成…

php paypal ipn,PHP 开发详解:PayPal Instant Payment Notification (IPN)

上次在 PHP 开发详解&#xff1a;PayPal Payment Data Transfer (PDT) 一文中介绍了网站集成 Paypal 付款功能并如何将付款数据返回&#xff0c;能够使得用户在付款完成后继续回到网站上来&#xff0c;并将付款信息告知用户。但是 PayPal Payment Data Transfer 这样的数据返回…

【Paypal】即时付款通知IPN

什么是即时付款通知IPN 当您收到新的付款交易或者已发生的付款交易的状态发生变化时&#xff0c;PayPal都将异步&#xff08;即不作为网站付款流程的一部分&#xff09; 发送付款详细数据到您所指定的URL&#xff0c;以便您了解买家付款的具体情况并做出相应的响应。这个过程我…

java集成paypal ipn响应问题

在集成paypal 测试ipn如果不回复会多次调用ipn 直到上限或者得到响应。 发现一个非常奇怪的问题代码中未返回响应码&#xff0c;但是paypal那边却显示响应成功&#xff1f; 求大神指点&#xff0c;是因为服务器接收成了吗&#xff1f;所以自动回复了200&#xff1f; spring …

paypal消息通知IPN

paypal支付成功时会实时的把支付交易信息返回给我们&#xff0c;java会返回一个payment对象&#xff0c;里面有交易的信息包含付款人&#xff0c;订单费用&#xff0c;订单的收货地址&#xff0c;收款人&#xff0c;交易号等信息。我们拿到了这个payment就表示支付成功了&#…

paypal资料

什么是即时付款通知IPN 当您收到新的付款交易或者已发生的付款交易的状态发生变化时&#xff0c;PayPal都将异步&#xff08;即不作为网站付款流程的一部分&#xff09; 发送付款详细数据到您所指定的URL&#xff0c;以便您了解买家付款的具体情况并做出相应的响应。这个过程我…