微信支付返回参数传给微信的签名和微信返回的签名有什么区别

Android微信支付获取二次签名Sign的方法
作者:志向远大
字体:[ ] 类型:转载 时间:
这篇文章主要介绍了Android微信支付获取二次签名Sign的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
本文实例为大家分享了Android微信支付获取二次签名Sign的方法,供大家参考,具体内容如下
* 获取sign签名
private String genPayReq() {
// 获取参数的值
PayReq request = new PayReq();
request.appId = ConstantsMember.APP_ID;
request.partnerId = ConstantsMember.MCHID;
request.prepayId = mPrepayId;
request.packageValue = "Sign=WXPay";
request.nonceStr = DataUtil.getGuid();
request.timeStamp = DataUtil.getTimeStamp();
// 把参数的值传进去SortedMap集合里面
SortedMap&Object, Object& parameters = new TreeMap&Object, Object&();
{appid=wx34df375d7dae8c90, noncestr=3BF34EF2CA4A462DB8D4EA48E785CDC3,
package=Sign=WXPay, partnerid=,
prepayid=wxe, timestamp=}
parameters.put("appid", request.appId);
parameters.put("noncestr", request.nonceStr);
parameters.put("package", request.packageValue);
parameters.put("partnerid", request.partnerId);
parameters.put("prepayid", request.prepayId);
parameters.put("timestamp", request.timeStamp);
String characterEncoding = "UTF-8";
String mySign = createSign(characterEncoding, parameters);
System.out.println("我的签名是:" + mySign);
return myS
* 微信支付签名算法sign
* @param characterEncoding
* @param parameters
public static String createSign(String characterEncoding,
SortedMap&Object, Object& parameters) {
StringBuffer sb = new StringBuffer();
Set es = parameters.entrySet();// 所有参与传参的参数按照accsii排序(升序)
Iterator it = es.iterator();
while (it.hasNext()) {
@SuppressWarnings("rawtypes")
Map.Entry entry = (Map.Entry) it.next();
String k = (String) entry.getKey();
Object v = entry.getValue();
if (null != v && !"".equals(v) && !"sign".equals(k)
&& !"key".equals(k)) {
sb.append(k + "=" + v + "&");
sb.append("key=" + ConstantsMember.KEY); //KEY是商户秘钥
String sign = MD5Util.MD5Encode(sb.toString(), characterEncoding)
.toUpperCase();
// D3A5D13EF4F2EA526C4766
// D3A5D13EF4F2EA526C4766
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具当前位置:
微信二维码生成 微信支付生成签名为什么一直返回签名错误?
猜你喜欢的文章
微信二维码生成最近更新
微信二维码生成 微信支付生成签名为什么一直返回签名错误?
来源:网络整理&&&&&时间: 0:46:35&&&&&关键词:微信二维码生成
关于网友提出的“微信二维码生成 微信支付生成签名为什么一直返回签名错误?”问题疑问,本网通过在网上对“微信二维码生成 微信支付生成签名为什么一直返回签名错误?”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题:微信二维码生成 微信支付生成签名为什么一直返回签名错误?
描述:这是第一次获取签名(为了取到prepay_id),把获取到的签名放到xml里面 去请求prepay_id的时候 返回的一直是签名错误。不知哪位做过微信支付的大神能指教一下。解决方案1:检查一下商户密钥配置是否正确,表示我遇到过很多次客户自信修改了商户密钥完了不通知开发人员。。。
以上介绍了“微信二维码生成 微信支付生成签名为什么一直返回签名错误?”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:/itwd/4507558.html
上一篇: 下一篇:
微信二维码生成相关图片
微信二维码生成相关文章java 微信支付统一下单请求参数和成功返回结果中的sign有什么关系?_百度知道
该问题可能描述不清,建议你
java 微信支付统一下单请求参数和成功返回结果中的sign有什么关系?
我有更好的答案
再和你传过去的sign做对比。这就是签名验证。一样的微信返回给你的数据你也要做一个签名验证,微信服务器会用你发来的参数生成sign。来查看是否被第三篡改。如果被篡改了,那么其实数据就是无效的sign就是签名。你发送到微信服务器,是你提交的数据经过一定规则组和后用md5加密的一个东西(官方文档有介绍)。是用来验证数据是否被第三方篡改的一个凭证
采纳率:78%
为您推荐:
其他类似问题
酷狗歌词的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。微信支付 签名算法------(签名校验工具)
我的图书馆
微信支付 签名算法------(签名校验工具)
签名算法------
签名生成的通用步骤如下:
第一步,设所有发送或者接收到的数据为集合M,将集合M内非空参数值的参数按照参数名ASCII码从小到大排序(字典序),使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA。
特别注意以下重要规则:
◆ 参数名ASCII码从小到大排序(字典序); ◆ 如果参数的值为空不参与签名; ◆ 参数名区分大小写; ◆ 验证调用返回或微信主动通知签名时,传送的sign参数不参与签名,将生成的签名与该sign值作校验。 ◆ 微信接口可能增加字段,验证签名时必须支持增加的扩展字段
第二步,在stringA最后拼接上key得到stringSignTemp字符串,并对stringSignTemp进行MD5运算,再将得到的字符串所有字符转换为大写,得到sign值signValue。
key设置路径:微信商户平台(pay.)--&账户设置--&API安全--&密钥设置
假设传送的参数如下:
appid: wxd930ea5d5a258f4f
device_info: 1000
body: test
nonce_str: ibuaiVcKdpRxkhJA
第一步:对参数按照key=value的格式,并按照参数名ASCII字典序排序如下:
stringA="appid=wxd930ea5d5a258f4f&body=test&device_info=1000&mch_id=&nonce_str=ibuaiVcKdpRxkhJA";
第二步:拼接API密钥:
stringSignTemp="stringA&key=c09247ec02edce69f6a2d"
sign=MD5(stringSignTemp).toUpperCase()="9A0AA9CF3B7"
最终得到最终发送的数据:
&appid&wxd930ea5d5a258f4f&/appid&
&mch_id&&/mch_id&
&device_info&1000&device_info&
&body&test&/body&
&nonce_str&ibuaiVcKdpRxkhJA&/nonce_str&
&sign&9A0AA9CF3B7&/sign&
生成随机数算法
微信支付API接口协议中包含字段nonce_str,主要保证签名不可预测。我们推荐生成随机数算法如下:调用随机数函数生成,将得到的值转换为字符串。
(1)获取商户证书
微信支付接口中,涉及资金回滚的接口会使用到商户证书,包括退款、撤销接口。商家在申请微信支付成功后,收到的相应邮件后,可以按照指引下
载API证书,也可以按照以下路径下载:微信商户平台(pay.)--&账户设置--&API安全--&证
书下载 。证书文件有四个,分别说明如下:
表4.2:证书文件说明
pkcs12格式(apiclient_cert.p12、
包含了私钥信息的证书文件,为p12(pfx)格式,由微信支付签发给您用来标识和界定您的身份
撤销、退款申请API中调用
windows上可以直接双击导入系统,导入过程中会提示输入证书密码,证书密码默认为您的商户ID(如:)
证书pem格式(apiclient_cert.pem)
从apiclient_cert.p12中导出证书部分的文件,为pem格式,请妥善保管不要泄漏和被他人复制
PHP等不能直接使用p12文件,而需要使用pem,为了方便您使用,已为您直接提供
您也可以使用openssl命令来自己导出:openssl&pkcs12&-clcerts&-nokeys&-in&apiclient_cert.p12&-out&apiclient_cert.pem
证书密钥pem格式(apiclient_key.pem)
从apiclient_key.pem中导出密钥部分的文件,为pem格式
PHP等不能直接使用p12文件,而需要使用pem,为了方便您使用,已为您直接提供
您也可以使用openssl命令来自己导出:openssl&pkcs12&-nocerts&-in&apiclient_cert.p12&-out&apiclient_key.pem
CA证书(rootca.pem)
微信支付api服务器上也部署了证明微信支付身份的服务器证书,您在使用api进行调用时也需要验证所调用服务器及域名的真实性
该文件为签署微信支付证书的权威机构的根证书,可以用来验证微信支付服务器证书的真实性
部分工具已经内置了若干权威机构的根证书,无需引用该证书也可以正常进行验证,这里提供给您在未内置所必须根证书的环境中载入使用
(2)使用商户证书
◆ apiclient_cert.p12是商户证书文件,除PHP外的开发均使用此证书文件。 ◆ 商户如果使用.NET环境开发,请确认Framework版本大于2.0,必须在操作系统上双击安装证书apiclient_cert.p12后才能被正常调用。 ◆ 商户证书调用或安装都需要使用到密码,该密码的值为微信商户号(mch_id) ◆ PHP开发环境请使用商户证书文件apiclient_cert.pem和apiclient_key.pem&,rootca.pem是CA证书。
各版本的调用实例。
(3)商户证书安全
证书文件不能放在web服务器虚拟目录,应放在有访问权限控制的目录中,防止被他人下载。商户服务器要做好病毒和木马防护工作,不被非法侵入者窃取证书文件。
商户回调API安全
在普通的网络环境下,HTTP请求存在DNS劫持、运营商插入广告、数据被窃取,正常数据被修改等安全风险。商户回调接口使用HTTPS协议可以保证数据传输的安全性。所以微信支付建议商户提供给微信支付的各种回调采用HTTPS协议。请参考:。
馆藏&24226
TA的最新馆藏
喜欢该文的人也喜欢微信统一下下单支付接口出现返回签名错误怎么办?
作者:佚名
字体:[ ] 来源:互联网 时间:04-30 10:05:15
微信统一下下单支付接口出现返回签名错误怎么办?这是一个很常见的问题,下面分析那个信支付开发,统一下单接口常见错误处理方法,需要的朋友可以参考下
微信支付开发,统一下单 &接口常见错误处理
软件名称:微信HD for ipad V5.4.2官方版 平板电脑版软件大小:35.1MB更新时间:
软件名称:微信电脑版 for Mac V1.2.2 苹果电脑版软件大小:8.61MB更新时间:
&xml&&return_code&&![CDATA[FAIL]]&&/return_code&&return_msg&&![CDATA[签名错误]]&&/return_msg&&/xml&,之前在调试微信支付的&统一下单&接口的时候一直遇到&签名错误&。网上查找了各种资料,一般可能是以下几个问题,如果大家出现此错误的话不妨挨个排查,以免浪费时间走弯路。
1、参数名ASCII码未按升序排列,或者是生成MD5字符串没有toUpperCase转换为大写。这种问题解决方法很简单,到微信官网上用校验工具校验即可。
2、key错误。这里特别注意,公众平台的密钥和商户号的密钥是不一样的!!!微信支付审核成功之后会收到一封邮件,邮件中有appid 商户号,商户后台登录上号和密码,登录到商户后台:账户设置-安全设置-切换到API安全,下载证书,下面有一个api密匙,进去填写一个字符串 ,保存,后续两次签名都是用的这个手动设置的key!!!
最后提醒大家,以后一定要认真阅读邮件和文档。
大家感兴趣的内容
12345678910
最近更新的内容

我要回帖

更多关于 微信支付错误返回码 的文章

 

随机推荐