一、参数说明

二、安全规范

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微信接口签名算法相关推荐

  1. c# sha1签名 微信_C#微信公众号JS接口签名算法

    以下内容是微信官方开发文档,注意标红文字 附录1-JS-SDK使用权 限签名算法 jsapi_ticket 生成签名之前必须先了解一下jsapi_ticket,jsapi_ticket是公众号用于调用 ...

  2. php微信生成签名_php 微信支付签名快速生成

    数组转xml可以封装到common中,重要代码以下2行 //排序 ksort($post); //生成sign $str = urldecode(http_build_query($post)).'& ...

  3. VUE解决微信签名,SPA微信invalid signature问题,完美处理

    深度解决方案,包教不包会,只因为踩坑无数,希望大家能有所收获 前端小菜鸟,因为项目要对接微信的jssdk,对接就需要签名认证,但是无奈安卓和IOS各有各的坑,本篇文章只讨论签名,和一个分享的坑,希望大 ...

  4. ios不行安卓可以 微信签名_微信支付-支付验证签名失败(iOS)

    在项目中添加微信支付,iOS端的所有东西都已经按照文档搞好了,可就是跳转到微信的时候显示"支付验证签名失败",可是安卓端的都没有问题,就很郁闷了. 后来在对文档的时候发现... 6 ...

  5. android 微信签名,Android微信签名知识的总结

    前言 最近遇到一个项目的应用要上微信登录,大家都知道微信登录是需要开放平台上申请的,在微信开发平台创建移动应用后,需要填写: 需要填写的内容 问题 这里的应用签名是keystore的证书的md5,但是 ...

  6. 【微信支付】微信端的手机网页支付 开发流程

    -----------------------------------------------------------------------------------------------1.微信 ...

  7. 微信小程序支付返回签名错误_PHP微信小程序支付——签名错误

    先分清几个概念:微信公众平台.微信开放平台.微信商户平台 1.微信公众平台.微信开放平台.微信商户平台是三个不同的平台 2.微信公众平台:用于公众号.小程序等等的设置平台,包括APPID.APPSEC ...

  8. php微信公众号怎么开发_PHP对接微信公众平台消息接口开发流程详解及实例

    这篇文章主要介绍了PHP对接微信公众平台消息接口开发流程,如何使用PHP版接口操作公众平台消息,需要的朋友可以参考下 一.写好接口程序 在你的服务器上上传好一个接口程序文件内容如下: 代码如下:< ...

  9. 微信平台接口php实现的_PHP对接微信公众平台消息接口开发流程教程

    一.写好接口程序 在你的服务器上上传好一个接口程序文件,如http://www.yourdomain.com/weixin.php  内容如下: 复制代码 代码如下:<?php define(& ...

最新文章

  1. Linux系统端口聚合技术bonding
  2. C语言(CED)从键盘输入一些整数,求出它们的平均值。数据的个数事先不确定,在输入过程中以ctrl+z键(EOF)作为输入结束的标记。
  3. 信息学奥赛一本通 1019:浮点数向零舍入 | OpenJudge NOI 1.2 06
  4. html5简历阅读,HTML5 移动简历模板
  5. 解读:AlphaGo之父倾力打造:The Predictron端到端训练与规划
  6. 计算机的创新产品,这几种电脑创新功能 空有喝彩没人买
  7. centos中mysql操作命令_CentOS系统常用的MySQL操作命令总结
  8. 乌班图apt添加阿里source
  9. django pdf转html5,pytho pdfkit 将网页django2.0教程内容打印成pdf文档
  10. 小小一款代码编辑器竟然也可以有程序运行之功能——Sublime Text3运行各种语言程序的总结
  11. 计算机一级题库ps视频,计算机一级Photoshop题库及答案
  12. android gridview 选择变色 再点击还原 并支持多选。记录贴 01
  13. 大部头出版物排版软件
  14. HRNet-v1模型,用于人体形态检测
  15. 多云定义:什么是多云,多云究竟是什么?
  16. html是一种网页设计语言,html网页设计教程
  17. JAVA Spring Security对接QQ快速登录(web应用)
  18. Your account has been blocked. git更新代码时报错
  19. Android | 如何计算图片占用内存的大小
  20. windows下架设SVN服务器并设置开机启动

热门文章

  1. 第九届大唐杯省赛知识梳理-5G网络技术(10%)
  2. Mybatis超强大的动态 SQL 大全
  3. Robust semantic segmentation by dense fusion network on blurred vhr remote sensing images
  4. 【JavaSE】02-变量、数据类型和运算符
  5. 力扣 347. 前 K 个高频元素
  6. 【心得】Man at Work3--猎人的青春!
  7. 视频剪辑必看,6个免费的音、视频素材网站
  8. 属于程序员的6个接私活的网站,你有技术就能变成钱。开阔眼界!!!
  9. 浅谈微博App在网站推广中的应用
  10. 大国数据跨境规则博弈,谁能抢占“数据经济制高地”?