php微信签名_PHP微信接口签名算法
一、参数说明
二、安全规范
1、签名算法
签名生成的通用步骤如下:
第一步,设所有发送或者接收到的数据为集合M,将集合M内非空参数值的参数按照参数名ASCII码从小到大排序(字典序),使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA。
特别注意以下重要规则:
◆ 参数名ASCII码从小到大排序(字典序);
◆ 如果参数的值为空不参与签名;
◆ 参数名区分大小写;
◆ 验证调用返回或微信主动通知签名时,传送的sign参数不参与签名,将生成的签名与该sign值作校验。
◆ 微信接口可能增加字段,验证签名时必须支持增加的扩展字段
第二步,在stringA最后拼接上key得到stringSignTemp字符串,并对stringSignTemp进行MD5运算,再将得到的字符串所有字符转换为大写,得到sign值signValue。
key设置路径:微信商户平台(pay.weixin.qq.com)–>账户设置–>API安全–>密钥设置
举例:
假设传送的参数如下:appid: wxd930ea5d5a258f4f
mch_id: 10000100
device_info: 1000
body: test
nonce_str: ibuaiVcKdpRxkhJA
第一步:对参数按照key=value的格式,并按照参数名ASCII字典序排序如下:stringA="appid=wxd930ea5d5a258f4f&body=test&device_info=1000&mch_id=10000100&nonce_str=ibuaiVcKdpRxkhJA";
第二步:拼接API密钥:stringSignTemp="stringA&key=192006250b4c09247ec02edce69f6a2d"
sign=MD5(stringSignTemp).toUpperCase()="9A0A8659F005D6984697E2CA0A9CF3B7"
最终得到最终发送的数据:
wxd930ea5d5a258f4f
10000100
1000
ibuaiVcKdpRxkhJA
9A0A8659F005D6984697E2CA0A9CF3B7
微信提供相关接口在线签名验证工具:点击进入。
2、生成随机数算法
微信支付API接口协议中包含字段nonce_str,主要保证签名不可预测。我们推荐生成随机数算法如下:调用随机数函数生成,将得到的值转换为字符串。//生成数字和字母组合随机数
function randomkeys($length) {
$returnStr='';
$pattern = '1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
for($i = 0; $i < $length; $i ++) {
$returnStr .= $pattern {mt_rand ( 0, 61 )};
}
return $returnStr;
}//签名算法
function makeSignature($args,$key)
{
ksort($args);
$stringA = '';
$stringSignTemp = '';
foreach($args as $k => $v) {
$stringA .= $k . '=' . $v . '&';
}
$stringSignTemp = $stringA.'key='.$key;
$signature = strtoupper(md5($stringSignTemp));
$newString = $stringA.'signature='.$signature;
$newSign = base64_encode($newString);
return $newSign;
}
本文由【waitig】发表在等英博客 本文固定链接:PHP微信接口签名算法 欢迎关注本站官方公众号,每日都有干货分享!
点赞 (0)赏分享 (0)
php微信签名_PHP微信接口签名算法相关推荐
- c# sha1签名 微信_C#微信公众号JS接口签名算法
以下内容是微信官方开发文档,注意标红文字 附录1-JS-SDK使用权 限签名算法 jsapi_ticket 生成签名之前必须先了解一下jsapi_ticket,jsapi_ticket是公众号用于调用 ...
- php微信生成签名_php 微信支付签名快速生成
数组转xml可以封装到common中,重要代码以下2行 //排序 ksort($post); //生成sign $str = urldecode(http_build_query($post)).'& ...
- VUE解决微信签名,SPA微信invalid signature问题,完美处理
深度解决方案,包教不包会,只因为踩坑无数,希望大家能有所收获 前端小菜鸟,因为项目要对接微信的jssdk,对接就需要签名认证,但是无奈安卓和IOS各有各的坑,本篇文章只讨论签名,和一个分享的坑,希望大 ...
- ios不行安卓可以 微信签名_微信支付-支付验证签名失败(iOS)
在项目中添加微信支付,iOS端的所有东西都已经按照文档搞好了,可就是跳转到微信的时候显示"支付验证签名失败",可是安卓端的都没有问题,就很郁闷了. 后来在对文档的时候发现... 6 ...
- android 微信签名,Android微信签名知识的总结
前言 最近遇到一个项目的应用要上微信登录,大家都知道微信登录是需要开放平台上申请的,在微信开发平台创建移动应用后,需要填写: 需要填写的内容 问题 这里的应用签名是keystore的证书的md5,但是 ...
- 【微信支付】微信端的手机网页支付 开发流程
-----------------------------------------------------------------------------------------------1.微信 ...
- 微信小程序支付返回签名错误_PHP微信小程序支付——签名错误
先分清几个概念:微信公众平台.微信开放平台.微信商户平台 1.微信公众平台.微信开放平台.微信商户平台是三个不同的平台 2.微信公众平台:用于公众号.小程序等等的设置平台,包括APPID.APPSEC ...
- php微信公众号怎么开发_PHP对接微信公众平台消息接口开发流程详解及实例
这篇文章主要介绍了PHP对接微信公众平台消息接口开发流程,如何使用PHP版接口操作公众平台消息,需要的朋友可以参考下 一.写好接口程序 在你的服务器上上传好一个接口程序文件内容如下: 代码如下:< ...
- 微信平台接口php实现的_PHP对接微信公众平台消息接口开发流程教程
一.写好接口程序 在你的服务器上上传好一个接口程序文件,如http://www.yourdomain.com/weixin.php 内容如下: 复制代码 代码如下:<?php define(& ...
最新文章
- Linux系统端口聚合技术bonding
- C语言(CED)从键盘输入一些整数,求出它们的平均值。数据的个数事先不确定,在输入过程中以ctrl+z键(EOF)作为输入结束的标记。
- 信息学奥赛一本通 1019:浮点数向零舍入 | OpenJudge NOI 1.2 06
- html5简历阅读,HTML5 移动简历模板
- 解读:AlphaGo之父倾力打造:The Predictron端到端训练与规划
- 计算机的创新产品,这几种电脑创新功能 空有喝彩没人买
- centos中mysql操作命令_CentOS系统常用的MySQL操作命令总结
- 乌班图apt添加阿里source
- django pdf转html5,pytho pdfkit 将网页django2.0教程内容打印成pdf文档
- 小小一款代码编辑器竟然也可以有程序运行之功能——Sublime Text3运行各种语言程序的总结
- 计算机一级题库ps视频,计算机一级Photoshop题库及答案
- android gridview 选择变色 再点击还原 并支持多选。记录贴 01
- 大部头出版物排版软件
- HRNet-v1模型,用于人体形态检测
- 多云定义:什么是多云,多云究竟是什么?
- html是一种网页设计语言,html网页设计教程
- JAVA Spring Security对接QQ快速登录(web应用)
- Your account has been blocked. git更新代码时报错
- Android | 如何计算图片占用内存的大小
- windows下架设SVN服务器并设置开机启动
热门文章
- 第九届大唐杯省赛知识梳理-5G网络技术(10%)
- Mybatis超强大的动态 SQL 大全
- Robust semantic segmentation by dense fusion network on blurred vhr remote sensing images
- 【JavaSE】02-变量、数据类型和运算符
- 力扣 347. 前 K 个高频元素
- 【心得】Man at Work3--猎人的青春!
- 视频剪辑必看,6个免费的音、视频素材网站
- 属于程序员的6个接私活的网站,你有技术就能变成钱。开阔眼界!!!
- 浅谈微博App在网站推广中的应用
- 大国数据跨境规则博弈,谁能抢占“数据经济制高地”?