微信支付回调sign与发送的sign不一致

我使用的是微信**官方的PHP微信支付demo**

可以正常生成支付二维码,也可以正常支付。

但是发送的签名和回调页面接收的签名不一致!

比如:
发送的数据如下:

(
[values:protected] => Array
(
[appid] => wx76f7cd2ec7b8ab2d
[attach] => test
[body] => test
[goods_tag] => test
[mch_id] => 1488792332
[nonce_str] => 8qr8mtclw9jy8xba2rvhcq32vc8wk2do
[notify_url] => http://xxx.xxx.com/wxpay/callback
[out_trade_no] => 148879233220171115161152
[product_id] => 123456789
[spbill_create_ip] => 192.168.1.37
[time_expire] => 20171115162152
[time_start] => 20171115161152
[total_fee] => 1
[trade_type] => NATIVE
[sign] => BB76D04E3DCAD9CE70257E3ACC9151D2
)

返回的数据如下:

array (
'appid' => 'wx76f7cd2ec7b8ab2d',
'attach' => 'test',
'bank_type' => 'CFT',
'cash_fee' => '1',
'fee_type' => 'CNY',
'is_subscribe' => 'Y',
'mch_id' => '1488792332',
'nonce_str' => '8qr8mtclw9jy8xba2rvhcq32vc8wk2do',
'openid' => 'oBKxE1S1yV9LbhVE6u50Jd0Uu_uM',
'out_trade_no' => '148879233220171115161152',
'result_code' => 'SUCCESS',
'return_code' => 'SUCCESS',
'sign' => 'FA8ECA45F2AB40D7ABEC5A0D7308ADC8',
'time_end' => '20171115161214',
'total_fee' => '1',
'trade_type' => 'NATIVE',
'transaction_id' => '4200000028201711154840327436',
)

可以看到sign字段不一致!求大神解答!

3个回答

而且用微信的签名校验工具,把我发送给微信的xml中的sign参数换成微信回调给我的sign,验证是不通过的。

mr_hah
csdn_olduser 回调比较不是把返回的sign和你支付发起时的sign对比,是你要对返回的那些参数重新拼接进行MD5加密是否和微信加密一样!
一年多之前 回复

这问题是统一下单和回调校验签名算法不一样。请求用HMAC-SHA256算法生成的签名,回调函数校验函数里面缺省用MD5签名的。我遇到同样的问题。

xueyings
xueyings 请问怎么解决的啊
一年多之前 回复

你理解错误了,好好学习一下签名。本来sign就不一样,只是key一样

weixin_44034994
weixin_44034994 求教啊
5 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
微信支付快速生成签名sign
以微信支付接口为例,生成签名sign的方法(c#): protected string CreateSign(string appid, string body, string device_info, string mch_id, string nonce_str, string notify_url, string out_trade_no, string spbill_create_i...
android 微信支付获取sign的注意事项
微信支付虽然有官方文档说明,也有demo,但开发时总觉得不会一次就编译通过的,总是会遇到这样或那样的小的细节问题。以下是我在开发中曾经踩过的坑。sign的获取会比较坑
微信支付生成sign签名(MD5格式) 校验sign
import com.aui.stock.controller.mini.config.WxSPConfig; import com.aui.stock.util.wx.xml.XmlUtil; import org.apache.commons.codec.digest.DigestUtils; import org.apache.commons.lang3.StringUtils; im...
微信支付 签名算法 sign node实现
开发微信支付过程中,第一道门槛就是微信支付接口签名,只要按照官方文档写,就不会有什么错。 1、官方签名文档地址 https://pay.weixin.qq.com/wiki/doc/api/tools/cash_coupon.php?chapter=4_3 2、我的实现 // 获取微信签名 getSign: (params, key) => { const paramsArr = O...
Scrolling Sign
Problem DescriptionnElectric scrolling signs are often used for advertising. A given sign displays exactly k characters. When the sign is switched on, all of the character positions are initially empty (showing spaces). In each time interval, all of the characters on the sign are shifted to the left by one position, and a new character is added at the right-most position. The character that was in the left-most position moves off the sign.nnFor certain sequences of words, it is possible to reuse characters from one word to form a subsequent word. For example, on a sign with three character positions, the sign can display the message CAT ATE TED by scrolling in the five characters CATED.nnThe advertiser has a specific message to show using the sign. The faster the message is displayed, the more people will be able to see the whole message. Therefore, your job is to find a way to display all the words of the message by scrolling in the smallest number of letters. In between showing the words of the message, the sign may display other words that are not considered part of the message. However, the words of the message must be shown in the order in which they are given.n nnInputnThe first line of test chunk contains a single integer n, the number of test cases in this chunk to follow. Each test case starts with a line containing a two integers, k, the number of character positions on the sign, and w, the number of words in the message. Each of the two integers is between 1 and 100, inclusive. The following w lines each contain a word of the message comprising exactly k uppercase letters.nnPlease process to the end of the data file.n nnOutputnFor each test case, output a line containing a single integer, the minimum number of letters that must be scrolled into the sign so that it displays all the words of the message.n nnSample Inputn2n3 2nCATnTEDn3 3nCATnATEnTEAn2n3 2nCATnTEDn3 3nCATnATEnTEAn nnSample Outputn5n5n5n5
ios sign
NULL 博文链接:https://hyzc2014.iteye.com/blog/2113917
C语言连续加减问题sign=-sign
题目有一个数组data有100个元素,求data[0]-data[1]+data[2]-data[3]+...-data[99]。rn**我的部分出错程序是:**rn![图片说明](https://img-ask.csdn.net/upload/201503/04/1425461747_433837.png)rn运行结果是-1.QNAN00000000无效植。rnrn**若用标记符号sign=-sign ,其程序是:**rn![图片说明](https://img-ask.csdn.net/upload/201503/04/1425462212_189166.png)rn运行结果则是正确的。rn请问为什么我那样写的程序是错误的,那样子写不也是data[0]-data[1]+data[2]-data[3]+...吗?rn学C语言没多久,所以问的问题有些简单,烦请各位大神给指导指导,谢谢啦rnrnrn
sign android
sign.zip Android 看看
Symbian sign
用于 sign symbian
sign 签名验证
/** * RSA签名 * @param content 待签名数据  (格式:key=value&key2=value2) * @param privateKey         商户私钥 * @param input_charset 编码格式 * @return 签名值 */ public static String sign(String content, String p
sign函数
sign(n), n可以是表达式,结果大于0返回1,小于0返回-1,等于0返回0 如:select sign(0.0001) a,sign(-1000) b,sign(4-5) c ,sign(6-1) d from dual;   结果: a  为1,b 为-1,c 为-1,d 为1 ...
Android微信支付获取二次签名Sign的方法
/**  * 获取sign签名  *   * @return  */ private String genPayReq() {   // 获取参数的值  PayReq request = new PayReq();  request.appId = ConstantsMember.APP_ID;  request.partnerId = ConstantsMember.MCHID;  reques...
Sign函数
今天在看一篇基于深度学习的超分辨率重建的文章中遇到这样一个函数sign(x),这是一个符号函数,用于把函数的符号析离出来, 在数学和计算机运算中,其功能是取某个数的符号(正或负): 当x>0,sign(x)=1; 当x=0,sign(x)=0; 当x 在通信中,sign(t)表示这样一种信号: 当t≥0,sign(t)=1; 即从t=0时刻开始,信号的幅度均为1
sign签名
做接口开发首先需要注意的是接口的安全性,接口的安全性可以用Https来做或者直接在服务器层面设置ip白名单,我用的是sign签名来确保接口的安全性。 sign签名是根据用户请求的参数和值(不包括sign),结合分配给客户端的秘钥(securityKey),通过算法生成的签名。在算签名时,首先要按照每组的key=value的字母顺序做排序(升序降序自己拿主意),然后对key和vaule(使用utf-...
sign什么意思??
类型中sign和unsign有什么不同,谢谢
请求微信以及微信支付sign生成
/** * url请求微信 * Created by wangmeng on 2017/1/24. */ @Service public class WxHttpHelper { private static final Logger logger = LoggerFactory.getLogger(WxHttpHelper.class); @Au...
单点登录(Single Sign On)
单点登录(SSO)的技术被越来越广泛地运用到各个领域的软件系统当中
Matrix Sign Led Board
Matrix Sign Led Board
CAS 单点登录(Single Sign On)
NULL 博文链接:https://zgq456.iteye.com/blog/2192979
sign符号的含义
sign(x)或者Sign(x)叫做符号函数,在数学和计算机运算中,其功能是取某个数的符号(正或负): 当x>0,sign(x)=1; 当x=0,sign(x)=0; 当x 在通信中,sign(t)表示这样一种信号: 当t≥0,sign(t)=1; 即从t=0时刻开始,信号的幅度均为1; 当t
蓝桥杯 算法训练 sign函数
问题描述   给定实数x,输出sign(x)的值。  sign(x)是符号函数,如果x>0,则返回1;如果x=0,则返回0;如果x<0,则返回-1。 输入格式   一行一个实数x。 输出格式   一行一个整数表示答案。 样例输入 -0.0001 样例输出 -1 数据规模和约定   |x|<=10000,输入数据精度最多达到4位小数。 提示   判断实数x是否等于零时,由于计
数字签名SIGN & MARK
摘要:数字签名SIGN保证控件在下载时候的安全性。如果你的代码已经经过数字签名,即使用户IE的安全设置很高也能下载,安装并登记。但是在页面上初始化,或者用脚本运行这个控件,为了保证安全性,还需要进行MARK。rnrn数字签名SIGNrn曹晓峰rnrn摘要:数字签名保证控件的安全性。数字签名使用证书。证书一般有个人证书和授信公司证书。个人证书是对个人的信任,由个人承担责任,控件每次下载时需要进行确认。公司证书是由第三方公司发布的,保证控件的安全性,公司证书需要付费。Windows授信的证书公司有VeriSign,SecureSign等等。由这些公司证书签名的控件在下载的时候不需要确认。rnrn一.工具rn 工具包括以下几个软件:rnmakecert.exe 制作cer格式的证书,即X.509证书,同时可以创建私钥(防止抵赖)rncert2spc.exe 将cer格式证书转换成spc格式证书,即PKCS #7证书rnsigncode.exe 将证书签署到ocx上去rnchktrust.exe 检查签署证书后的ocx是否正确rncertmgr.exe,是管理证书用的,可以从这里面导出root.cer来,不过没有私钥用不上。rnrn二.步骤rn 下面是具体的步骤:rn1、创建一个自己的证书文件:rn makecert /sv "Record.PVK" /n "CN=SinoWave" dream.cerrn这里,Record.PVK表示新创建的私人密钥保存文件名rn SinoWave是你想显示的公司名rn dream.cer是你创建最后的证书文件名rn 这些根据你自己的要求填写,最后得到Record.PVK和dream.cer两个文件。其中,运行过程中需要输入私人密钥的保护密码(sw),一定要输入一致,不要出错。rnrn2、转换cer格式为spc格式(可以省略),得到dream.spc文件。rnrn cert2spc dream.cer dream.spcrnrn3、用VS6工具中的 cabarc生成internet分发的CAB包,rncabarc.exe N DataTransfer.cab DataTransfer.ocxrnrn4、同时制作分发代码(.htm,其中包含使IE可以自动下载安装包的代码)。rn 现在得到了2个文件DataTransfer.CAB和DataTransfer.htm。rn.htm中包含类似如下的代码:rnrn注意:一定要写上"http:// 192.9.200.8/",真正发行时最好使用url。rnrn5、给CAB文件签名rn 运行signcode,命令行的我没有试验通过,我是通过界面实现的。signcode运行后会出现数字签名向导,首先选择DataTransfer.CAB,下一步后会出现签名选项,一种是典型,一种是自定义。选择自定义,这样才能从文件选择证书,选择前面制作的dream.spc,再下一步是选择私钥文件,选择Record.PVK,输入私人密钥的保护密码,选择散列算法,一般用md5就可以了,下一步是选择其他证书,直接下一步,填写一下这个控件的声明,用户用ie浏览的时候,会弹出证书说明,再下一步是加盖时间戳,例如http://timestamp.sheca.com/timestamprn rn6、用chktrust检查是否正确rn chktrust -v DataTransfer.CABrnrn7、将签名后的DataTransfer.CAB和DataTransfer.htm复制到IIS的某个目录下。并在IE中打开DataTransfer.htm文件进行测试。rn
Symbian Sign怎么做?
对应用程序签名应该怎么做?据我所知Symbian Sign的注册已经停止了。
app加密算法sign逆向。
例如这样的加密算法该如何下手。n 有这方面的高手联系我。欢迎合作洽谈。扣扣64057914![图片说明](https://img-ask.csdn.net/upload/201512/26/1451131211_967333.png)
显示器显示“No Sign”
配置:AMD,XP1600+,硕泰克主板,酷鱼40G,显卡火龙王,明基77g rnrn症状:一开机就是急促的2声,显示器显示“No Sign”rnrn 多开几次机,他又好了,不知道怎么回事??rnrn求助:各位大虾帮帮小弟,谢谢! rnrn
关于.sign文件的作用
网上说是jar签名,在下不是很明白,望牛人解答
Google sign tool
配合博文http://blog.csdn.net/nacl025/article/details/47272635
signapk签名工具
签名APK需要用到signapk.jar工具,将该工具的目录添加到环境变量PATH中,方便在命令行下直接使用。
Uva 1510 - Neon Sign
PDF试题
eSSO Single Sign On
LDAP eSSO Single Sign On
单点登录(Single Sign On)的介绍
单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方 案之一
阿里大鱼 API SIGN
[code=javascript]rn rn rn rn[/code]
sign key 失效了
一直用的好好的,密码也一直用的原来那个,昨天回来,发现用不了了,总是签名失败。重新安装key,没效,重新装ECLIPSE依然无效。可能是什么原因呢,难道过期了,不过好像一年都不到啊!
oracle函数学习(sign和trunc)
  sign函数语法: sign(n) sign函数说明: 取数字n的符号,大于0返回1,小于0返回-1,等于0返回0 示例: select sign( 100 ),sign(- 100 ),sign( 0 ) from dual; SIGN(100) SIGN(-100) SIGN(0) ———- ———- ———- 1 -1 0     trunc(number) 在...
算法训练 sign函数
问题描述   给定实数x,输出sign(x)的值。   sign(x)是符号函数,如果x&amp;gt;0,则返回1;如果x=0,则返回0;如果x&amp;lt;0,则返回-1。 输入格式   一行一个实数x。 输出格式   一行一个整数表示答案。 样例输入 -0.0001 样例输出 -1 数据规模和约定   |x|&amp;lt;=10000,输入数据精度最多达到4位小数。 提示   判断实数...
Google web client sign in
最简单的Google第三方web client登录,记住一个地方凭证上的重定向和JavaScript地址配对,web 地址栏用localhost本地测别用127.0.0.1
Android代码-sign
Apk Sign Automatically sign an apk with the Android test certificate. The public and private keys are embedded within the jar. sign my.apk my.s.apk is created next to my.apk sign my.apk --override my.apk is replaced with a signed version Verify signature. jarsigner -verify my.s.apk Changes Added sign.bat which removes the funcion of using 'java -jar sign.jar my.apk to only 'sign my.apk' Removed "Created-By", "1.0 (Android SignApk)" from upstream SignApk. Download sign.jar sign.bat signapk
MySQL☞sign函数
MySQL☞sign函数 sign( )函数:判断数值的正负性,如果数值是正数,返回值是1,如果该数值是负数,返回值是-1,如果该数值是 0,返回值也是0。   格式:     select sign(数值) from 表名   例子:     1、求出-100的返回值           2、求出55的返回值           3、求出0的...
前端生成sign签名
接着上一篇博文写写前端如何生成sign签名,此处生成的签名和前两篇的(sign签名)中验证是一致的,可以对比使用。使用方式在上一篇(vue中post请求使用form表单格式发送数据)中使用过,可参考 function getSign(param) { // 获取签名 返回一个包含"?“的参数串 var appKey = “sbkjCarWebBEIJING”; var securityKey...
Oracle函数——SIGN函数
第一次看到oracle中的SIGN函数,感觉可用于简化SQL语句。 Syntax Purpose SIGN returns the sign of n. This function takes as an argument any numeric data type, or any nonnumeric data type that can be implicitly converted to ...
相关热词 c#入门推荐书 c# 解码海康数据流 c# xml的遍历循环 c# 取 查看源码没有的 c#解决高并发 委托 c#日期转化为字符串 c# 显示问号 c# 字典对象池 c#5.0 安装程序 c# 分页算法

相似问题

11
微信支付(公众号支付)点击支付没有反应,求大神指点一二
8
thinkphp3.2整合微信扫码支付模式二不执行回调
11
微信支付传给微信的签名和微信返回的签名有什么区别呀
2
调微信支付的时候的签名到底是哪一个呀,如果是sign2,微信会做签名的验证吗。求解
13
微信支付成功后 怎么获取微信返回来的结果? 怎么写回调?
5
Android 微信支付回调了WXPayEntryActivity,但是不回调onResp方法
5
android 微信支付回调页面方法不执行,但是页面已经打开了 那位大神帮忙看一下
3
非微信浏览器支付,调用成功。 怎么确认用户支付成功,微信官方没有微信外部 浏览器 调用接口。
8
多个activity 都调用微信支付
6
Android 微信支付成功不走回调问题
3
微信jssdk分享朋友圈和朋友统计次数ios分享朋友圈微信回调函数不进入android没问题
8
微信支付的坑,有遇见的大神请指点一二,感谢!
10
android微信支付在studio运行是可以调起支付进行支付的,但是我打包签名后就吊不起来了
5
微信支付签约成功之后给微信如何做应答
5
微信支付无法跳转支付界面
4
用restful写微信支付,统一下单成功,返回的支付信息正确,前端支付成功,回调接口显示签名失败。
9
公众号微信支付有时候可以顺利支付成功,有时候会报错
2
关于公众号微信支付errcode:40163,code been used,Code重复使用的问题
1
微信支付(微信开发者平台-app应用)
4
微信公众号分享接口updateAppMessageShareData 没有回调