thinkPHP5.0开发微信H5页面分享接口signature验证失败,signature与微信 JS 接口签名校验工具返回结果不一致

简介: thinkPHP5.0开发微信H5页面分享接口signature验证失败,signature与微信 JS 接口签名校验工具返回结果不一致

在使用微信js开发过程中页面提示 config:invalid signature


原因:

tp会自动转移html字符,比如’”’转成了 &quote; ,所以导致了失败:


错误代码

    $access_token = new WeChat();
        $url = '' ;
        $ticket = $access_token->getJsapiTicket();
        $ticket = json_decode($ticket)->ticket;
        $noncestr = $this->createNonceStr();
        $timestamp = time();
        $string = 'jsapi_ticket=' . $ticket . '&noncestr=' . $noncestr . '&timestamp=' . $timestamp . '&url=' . $url;
        $signature = sha1($string);


正确代码

    $access_token = new WeChat();
        $url = '' ;
        $ticket = $access_token->getJsapiTicket();
        $ticket = json_decode($ticket)->ticket;
        $noncestr = $this->createNonceStr();
        $timestamp = time();
        $string = 'jsapi_ticket=' . $ticket . '&noncestr=' . $noncestr . '&timestamp=' . $timestamp . '&url=' . $url;
        $signature1 = sha1(htmlspecialchars_decode($string));


解决思路

使用htmlspecialchars_decode()函数把一些预定义的HTML实体转换为字符,返回转换后的字符串,原字符串不变;

目录
相关文章
|
8天前
|
数据可视化 前端开发 JavaScript
可视化工具D3.js
可视化工具D3.js
|
6天前
|
JSON 小程序 前端开发
微信小程序的目录结构及页面结构的说明
本文详细介绍了微信小程序的目录结构、页面组成部分以及项目的全局配置文件,阐述了小程序的宿主环境和运行机制,包括小程序启动和页面渲染的过程。
微信小程序的目录结构及页面结构的说明
|
6天前
|
小程序 JavaScript API
微信小程序开发学习之页面导航(声明式导航和编程式导航)
这篇文章介绍了微信小程序中页面导航的两种方式:声明式导航和编程式导航,包括如何导航到tabBar页面、非tabBar页面、后退导航,以及如何在导航过程中传递参数和获取传递的参数。
微信小程序开发学习之页面导航(声明式导航和编程式导航)
|
17天前
|
JavaScript Linux 开发者
一个用于管理多个 Node.js 版本的安装和切换开源工具
【9月更文挑战第14天】nvm(Node Version Manager)是一个开源工具,用于便捷地管理多个 Node.js 版本。其特点包括:版本安装便捷,支持 LTS 和最新版本;版本切换简单,不影响开发流程;多平台支持,包括 Windows、macOS 和 Linux;社区活跃,持续更新。通过 nvm,开发者可以轻松安装、切换和管理不同项目的 Node.js 版本,提高开发效率。
|
25天前
|
小程序 前端开发 生物认证
微信小程序如何将一个按钮放到页面的最底下?
微信小程序如何将一个按钮放到页面的最底下?
33 5
|
4天前
|
C++
HTML+JavaScript构建一个将C/C++定义的ANSI字符串转换为MASM32定义的DWUniCode字符串的工具
HTML+JavaScript构建一个将C/C++定义的ANSI字符串转换为MASM32定义的DWUniCode字符串的工具
|
6天前
|
JSON 小程序 JavaScript
微信小程序页面事件,下拉刷新事件和上拉触底事件
这篇文章介绍了微信小程序中如何实现下拉刷新和上拉触底事件,包括开启下拉刷新、配置下拉刷新样式、监听下拉刷新事件,以及监听上拉触底事件和配置上拉触底的距离。
|
2月前
|
JavaScript 前端开发 安全
前程无忧搜索接口 JS 逆向:阿里系acw_sc__v2和Sign加密
前程无忧搜索接口 JS 逆向:阿里系acw_sc__v2和Sign加密
30 0
|
移动开发 JavaScript 前端开发
ESLint – 可扩展的 JavaScript & JSX 校验工具
  ESLint 是一个开源的 JavaScript 代码校验工具,最初是由 Nicholas C. Zakas 在2013年创建的。经常被用来发现问题的模式或代码,不符合特定的风格准则。   ESLint 创建的首要原因是为了让开发人员创建自己的校验规则,ESLint 的目的是让所有的规则完全可插拔。
1023 0
|
3月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的客户关系管理系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的客户关系管理系统附带文章源码部署视频讲解等
76 2
下一篇
无影云桌面