微信微信jssdk调用调用php实现代码(解决二次分享失败问题)与逻辑实现代码(解决二次分享失败问题)与逻辑
梳理梳理
微信微信jssdk调用调用
在网页中调用微信在网页中调用微信jssdk能够实现:能够实现:
1.使用拍照、选图、语音、位置等手机系统的能力。使用拍照、选图、语音、位置等手机系统的能力。
2.使用微信分享、扫一扫、卡券、支付等微信特有的能力。使用微信分享、扫一扫、卡券、支付等微信特有的能力。
调用步骤调用步骤
1.使用微信测试账号,需要关注测试账号对应公众号,测试页面别人想要浏览,同样需要关注测试公众号测试页面别人想要浏览,同样需要关注测试公众号。
2.接口配置信息,填写url来响应微信发送的Token验证。
token处填写你自己设定的处填写你自己设定的token值值
<?php
$nonce = $_GET['nonce'];
$token = '你设定的token';
$timestamp = $_GET['timestamp'];
$echostr = $_GET['echostr'];
$signature = $_GET['signature'];
//形成数组,然后按字典序排序
$array = array();
$array = array($nonce, $timestamp, $token);
sort($array);
//拼接成字符串,sha1加密 ,然后与signature进行校验
$str = sha1( implode( $array ) );
if( $str == $signature && $echostr ){
//第一次接入weixin api接口的时候
echo $echostr;
exit;
}
3.JS接口安全域名,设置完成后,即可在该域名下调用微信的jssdk。
域名与域名与url:域名对应ip地址,一般到一般到.com .net .org .cn就结束了就结束了,url是网络资源统一定位符,用来定位网页与文件,简单点简单点
url=网络传输协议网络传输协议+ip或域名或域名 + 端口号端口号 + 资源位置资源位置 + 参数参数 + 锚点锚点。
4.在服务器端实现签名算法,生成签名的逻辑:
(1)通过id与serect获得token;
(2)通过token获得tikect;
ps:由于token和tikect存在有效期且有访问次数限制,所以需要保存在本地,并定时更新。
这里采用保存在文件的方式,需要在网页同级目录下创这里采用保存在文件的方式,需要在网页同级目录下创wechat_token.txt与与wechat_ticket.txt两个文件。两个文件。
(3)将ticket与当前时间戳timestamp,随机数noncestr,url,按一定顺序排列成字符串
注意:在排列过程中不要使用注意:在排列过程中不要使用url转义,如将转义,如将&转义为转义为&;(带分号),浏览器会正确识别,但服务器不行,会导致加密出;(带分号),浏览器会正确识别,但服务器不行,会导致加密出
来的结果不一样来的结果不一样;
(4)通过sha1加密这个字符串,生成签名,推荐通过微信签名校验工具验证签名是否正确推荐通过微信签名校验工具验证签名是否正确
5.在需要调用在需要调用jssdk的网页中,通过的网页中,通过config接口注入权限验证接口注入权限验证,微信会通过你填写的id,随机数,时间戳去生成签名,再与你
注入的本地生成的签名进行比对。
备注备注:网页经微信分享给朋友或朋友圈后,微信会在网页url后加渠道标记,可能导致二次分享失败,在代码中已给出解决方
法
6.调用你需要的接口,有的接口如分享给好友,需要在页面加载时就调用好,需写在有的接口如分享给好友,需要在页面加载时就调用好,需写在ready函数中函数中。
代码复制就能用,在网页同级目录下创wechat_token.txt与wechat_ticket.txt两个文件,需要填写的已经用中文标注了
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
);
评论0
最新资源