微信支付[签名错误]-微信,PHP,XMLPOST,

问个问题:[关于微信支付]
背景:现有一认证微信服务号,需要在自定义菜单跳转的网页中实现商城支付功能.商城使用PHP,MYSQL,实现
现在在做微信支付功能遇到问题.

1.目前在做微信公众号支付>>统一下单API.
[统一下单APIlink:http://pay.weixin.qq.com/wiki/doc/api/index.php?chapter=9_1].
需要接上API,并获取SUCCESS状态下的数据[主要是想获取>预支付交易会话标识 (prepay_id) ]
2.现在问题:在向API发送POST请求后,得到的结果是FAILT.
问题提示:[返回的原数据]
<![CDATA[FAIL]]>
<![CDATA[签名错误]]>

3.我做过的事情:
a.使用"在线签名验证工具"验证自己生成的签名,我生成的签名与该工具得出的结果是一样的.
["在线签名验证工具"url:http://mch.weixin.qq.com/wiki/tools/signverify/]
b.我是POST XML字符串过去的.与"在线签名验证工具"中提出的结果是一样的.

4.纠结的地方:微信公众平台后台设置,签名,POST URL,sign,甚至是XML数据,我都检查过了,但API返回结果竟然还是 签名错误 .
我唯一想到的问题可能就是,"在线签名验证工具"不靠谱.但我找不到其它的方式来验证我的签名是否正确.

有哪位网友做过微信公众号支付的朋友帮忙查看一下吗?纠结了好久了.

5个回答

签名最好用官方提供的例子,一个小地方错误,都会导致签名错误

u011396401
佛根 官方的代码如果一直提示,你可以尝试一下把商户的KEY重新设置一下,我就是这样的,什么都没问题,重新设置了一下KEY就好了
大约 3 年之前 回复
hxw782590875
hxw782590875 我的微信公众号在点击支付是,总是弹出:签名错误,怎么解决?可以帮帮我吗?
大约 3 年之前 回复
amqvje
阿牛哥818 已经解决,问题不是签名的方法,而是混淆了商户KEY 与 APP SECRECT 的概念。签名使用的是商户号中的密钥。
4 年多之前 回复
amqvje
阿牛哥818 已经解决,问题不是签名的方法,而是混淆了商户KEY 与 APP SECRECT 的概念。签名使用的是商户号中的密钥。
4 年多之前 回复

问题在于你的XML格式不对,微信狗日的在不显眼的地方写了一句xml转义,特么的在线校验出来的最终请求体xml格式又没有转义,但是传给他的xml格式应该要这样:
<![CDATA[你的appid]]>;也就是说参数值要用<![CDATA[]]>装起来

weixin_41817525
weixin_41817525 请问传的所有值都要转义吗
大约一年之前 回复
REN_APPLE_
REN_APPLE_ 你说的 太对了 感谢大神的答案 问题终于解决了
大约 3 年之前 回复

我也遇到同样的问题,终于搞定了,参与签名的参数要和最后提交的xml参与保持一致,希望能帮到大家,这个问题也困扰我多时

qq_34954986
一级PHP码农 签名是安招ascll码表排过序的,最后提交xml中参数顺序也要安照ascll码表排序吗?
2 年多之前 回复
yd992594492
EdgeDi 什么意思
接近 3 年之前 回复
qq_32851971
夏季的海风 帮到我了,这个参数里有个价格,我之前单位原因沒一致
大约 3 年之前 回复
hxw782590875
hxw782590875 你是怎么解决的可以帮帮我吗,我电话是18934711289
大约 3 年之前 回复

头大。微信统一支付这块签名总是错误。不知道什么原因,烦啊

头大。微信统一支付这块签名总是错误。不知道什么原因,烦啊

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
微信支付签名错误
[img=https://img-bbs.csdn.net/upload/201510/13/1444707263_978030.png][/img] 我自己的签名和微信提供的签名工具验证一样的! 商户KEY 也是自己在商户平台设置的! 为什么统一下单的时候 总是返回微信签名错误!
微信支付 签名错误
目前在搞微信支付开发 按照开发文档开发,所有参数都正确 rnhttps://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=20_1 这个工具里也生成成功rn 但是一直报这个错:rnFAILrn签名错误rn
微信支付 服务商模式 签名错误
最近公司来了新需求需要增加微信服务商模式,看了看微信的文档感觉很简单很轻松,但是微信留下的坑真的深,比如sdk应该是不一样的,但是得到微信的答复是:普通商户版 和服务商版本的sdk是一样的 ,但是服务商版本的开发需要自己添加子商户号和子商户appid。下面是解决步骤 1 需要自己添加的配置 Wxpay.Data.php /** * 设置微信分配的子商户公众账号ID 这个是子账...
android 微信支付签名错误
这两天在做微信支付,在生成预付单,获取prepay_id,总是提示签名错误,包名、签名都在微信平台做了配置,有做过的大神帮看看吗。。。rnrnList packageParams = new LinkedList();rn packageParams.add(new BasicNameValuePair("appid", Constants.APP_ID));rn packageParams.add(new BasicNameValuePair("body", "weixin"));rn packageParams.add(new BasicNameValuePair("mch_id", Constants.MCH_ID));rn packageParams.add(new BasicNameValuePair("nonce_str", nonceStr));rn packageParams.add(new BasicNameValuePair("notify_url", "http://127.0.0.1/test"));rn packageParams.add(new BasicNameValuePair("out_trade_no",getOutTradeNo()));rn packageParams.add(new BasicNameValuePair("spbill_create_ip","127.0.0.1"));rn packageParams.add(new BasicNameValuePair("total_fee", "10"));rn packageParams.add(new BasicNameValuePair("trade_type", "APP"));rnrn返回值:rnFAILrn签名错误rn
android 微信支付 签名错误
前言 最近在做一个web app是个商城里面需要集成微信支付,在开发的过程中遇到许多坑。 本次主要介绍签名错误,其实造成签名的错误有很多。 正文  我这里只介绍 由于网络请求参数StringEntity编码错误造成的签名错误。StringEntity 使用ISO8859-1编码就可以了。 代码如下 public static String httpPost(St
微信支付统一下单,签名错误
微信支付统一下单,签名错误
微信支付统一下单“签名错误”
所有信息无误,网页验证通过,就是出现“签名错误”,原因是由于内容含有中文,必须指定编码方式“ISO8859-1”
微信支付退款 "签名错误"
  今天在做微信支付退款的时候, 一直报 &quot;签名错误&quot;, 统一下单时也是使用这个签名方法,现在怎么就不行了呢? 后来发现 退款原因  使用的是中文, 于是就去掉退款原因试了下, 结果可以了。   但是还未找到 解决 使用中文  退款原因的办法。       最后 由于春运快到了,给大家安利一个抢火车票的小程序心到抢票,微信扫码关注点击立即抢票即可 个人亲测效率很高,抢票块,价格...
微信支付-返回签名错误
Android 微信支付SDK ,支付操作大概3步。 1、生成预支付订单 2、生成签名参数 3、调取微信支付页面但是需要注意的是,在获取预支付订单的时候会报签名错误。 大概也就那几种可能: 1、微信开放平台的签名设置和你当前的的确不一样,这个需要自己检查 2、API 密匙不正确,这个需要登陆商户后台,修改。 3、商品名中有中文,需要对拼的XML进行编码ISO8859-1。如下priva
【微信支付】签名错误,参数错误
微信支付中的小坑
微信支付签名错误-windows
微信支付在linux上没有问题,放到windows上就报签名错误。因为windows的编码是GBK,linux上为UTF-8。 因此需要将加密前的字符串转码为UTF-8,同时返回的参数也需要转码。 加密转码 在微信提供的SDK  MD5.java类中 返回处理转码 Util.java类中
微信支付统一下单 签名错误
出现这个问题困扰我好久,而且奇怪的是有时候服务器重启后马上又可以支付,过了大概一段时间后又不能支付了,提示签名错误。 一直以为是ACCESS_TOKE 和OPEN_ID出现了问题。 后来反复调试发现其实就是因为代码中出现了乱码。 真的是想死的心都有了。
微信支付一直签名错误
这两天无数次在做微信支付的时候出现签名错误,都快崩溃了。明明我自己生成的签名是没得问题的。自己手动生成的签名,和官方的微信支付接口测试结果是一样的。 后来无意中提到了  postMethod.setRequestEntity(new StringRequestEntity(xmlString,"text/xml",encode));  这行代码,我才想起这个问题,我的httpclient版本是
Android微信支付签名错误解决方法
整体流程:1.拼接商品的信息List<NameValuePair> packageParams = new LinkedList<NameValuePair>(); packageParams.add(new BasicNameValuePair("appid", Constants.APP_ID)); packageParams.add(new Ba
微信支付签名错误解决方法
由于项目需要,需要将微信支付嵌入到java web项目中,开发中一直发现签名错误问题,可是自己的签名算法久经考验,怎么会被这道坎给拦住了。 后来发现原来是在wx.config()和wx.chooseWXPay()方法中的timestamp和noncestr不一致导致的。我刚开始在wx.config()中生成了一对timestamp和noncestr,而又在chooseWXPay中生成了一对time
坑爹的微信支付(签名错误)
前言 以前调微信支付,直接把demo粘过来改改,或者从老项目粘过来,这次接手一个一年之前的项目,说微信支付没调通,好吧,我就调吧 正文 1:之前的body写的是中文,改成英文 结果:失败(不过这一步很必要) 2:传递的xml编码换为UTF-8 结果:失败(编码应该为 ISO8859-1 ) 3.前面不行,就去微信官方签名方式测试https://pay.weixin.qq.com/...
微信支付 统一下单 签名错误
微信支付 统一下单 签名问题 问题:微信支付 统一下单 ,签名验证通过,返回签名错误信息 解决:需要重新设置商户密钥
微信支付body中文签名错误编码格式
解决问题:就是在MD5拼接好的xml的时候  MD5用这个方法,其他任何地方都不要进行转码操作 public final static String getMessageDigest(String string) { char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd
微信支付 付款到零钱 签名错误
1 先上微信签名验证工具试试有没有错,如果有错就慢慢排查参数 ,加密方式之类的常规错误,https://pay.weixin.qq.com/wiki/doc/api/tools/mch_pay.php?chapter=20_1 2 如果验证通过,有可能是秘钥出错(上商户平台再看一眼秘钥) 3如果秘钥没错,签名验证工具通过,但是一直报签名错误,很大可能是参数含有中文(深坑!!!!),解决方法1 中文...
微信支付开发 服务商模式 签名错误
微信支付服务商自从申请下来后一直没有 使用服务商模式接入,今天终于有时间来做接入了,第一步找sdk 找来找去发现普通商户接入模式和服务商接入模式sdk是一模一样的,这就奇怪了,前些日子看sdk的时候 发现普通商户接入模式和服务商接入模式的sdk还是不一样呢,今天就一样了,于是反复点链接,最终确认发现sdk确实是一样的 。在一看sdk更新的日期是8月17日,果然微信支付sdk升级了,于是给支付组发邮...
微信支付 进行统一下单 签名错误
微信支付 进行统一下单 签名错误,我在微信支付接口签名校验工具中验证通过,但是还是提示签名错误,我在 key设置路径:微信商户平台(pay.weixin.qq.com)-->账户设置-->API安全-->密钥设置 重新设置下密钥就可以了,微信坑爹啊 注意,这里的密钥是支付平台中的客户密钥,不是公众号的AppSecret(应用密钥) Java代码: public static
【微信摇一摇红包】签名错误
[b]实现:[/b]rn通过摇一摇周边发现普通红包,直接领取。rnrn[b][color=#FF0000]问题:[/color][/b][code=html]rn在网上找的代码,但是都配置成自己信息后提示“出错了11012”rndefine("PARTNERKEY", "[color=#FF0000]qwertyuiop12345654321ASDFGHJKLZX[/color]");rn不知红字部分应该填什么!求大神指点详细!rnrnrnrnhbpreorder.phprn '',//随机字符串,不长于32位rn 'sign' => '',//生成签名方式查看rn 'mch_billno' =>'',//商户订单号 组成: mch_id+yyyymmdd+10位一天内不能重复的数字。rn 'mch_id' =>'',//红包提供者的商户号 微信支付分配的商户号rn 'wxappid' => '',//appidrn 'send_name' => '',//商户名称 rn 'hb_type' => 'NORMAL',//红包类型: GROUP - 裂发红包, (可分享 红包 给好友, 丌建议使用 ) NORMAL - 普通红包rn 'total_amount' =>'' ,//总金额rn 'total_num' =>1 ,//红包发放总人数rn 'amt_type' =>'ALL_RAND',//红包金额设置方式 ALL_RAND — 全 部 随 机rn 'wishing' => '',//红包祝福语,展示在红包页面rn 'act_name' =>'' ,//活动名称rn 'remark' => '',//备注信息rn 'auth_mchid' =>'' ,//返里请填写 摇周边 的 商户号: 1000052601rn 'auth_appid' => '',//返里请填写摇周边的 appid:wxbf42bd79c 4391863rn 'risk_cntl' =>'NORMAL'//rn );rn function __construct()rn rn rn rn public function init_parameters()rn $this->parameters['nonce_str']=CommonUtil::random_str();rn $this->parameters['mch_id']=mch_id;rn $this->parameters['wxappid']=wxappid;rn $this->parameters['mch_billno']=$this->parameters['mch_id'].date("Ymd").CommonUtil::random_str(10);rn $this->parameters['send_name']=send_name;rn $this->parameters['hb_type']=hb_type;rn $this->parameters['total_amount']=total_amount;rn $this->parameters['total_num']=total_num;rn $this->parameters['amt_type']=amt_type;rn $this->parameters['wishing']=wishing;rn $this->parameters['act_name']=act_name;rn $this->parameters['remark']=remark;rn $this->parameters['auth_mchid']=auth_mchid;rn $this->parameters['auth_appid']=auth_appid;rn $this->parameters['sign']=$this->get_sign();rn rnrn public function preorder()rn return simplexml_load_string($this->curl_post_ssl($this->hbpreorderUrl,CommonUtil::arrayToXml($this->parameters)),'SimpleXMLElement', LIBXML_NOCDATA);rn rnrn public function setParameter($parameter, $parameterValue) rn $this->parameters[$parameter] = $parameterValue;rn $this->parameters['sign']=$this->get_sign();rn rn public function getParameter($parameter) rn return $this->parameters[$parameter];rn rnrnrn function get_sign()rn try rn if (null == PARTNERKEY || "" == PARTNERKEY ) rn throw new SDKRuntimeException("密钥不能为空!" . " ");rn rn $commonUtil = new CommonUtil();rn $unSignParaStr = $commonUtil->formatQueryParaMap($this->parameters, false);rn $signStr=$unSignParaStr."&key=".PARTNERKEY;rn return strtoupper(md5($signStr));rn catch (SDKRuntimeException $e)rn rn die($e->errorMessage());rn rnrn rnrn function curl_post_ssl($url, $vars, $second=30,$aHeader=array())rn rn $ch = curl_init();rn //超时时间rn curl_setopt($ch,CURLOPT_TIMEOUT,$second);rn curl_setopt($ch,CURLOPT_RETURNTRANSFER, 1);rn //这里设置代理,如果有的话rn //curl_setopt($ch,CURLOPT_PROXY, '10.206.30.98');rn //curl_setopt($ch,CURLOPT_PROXYPORT, 8080);rn curl_setopt($ch,CURLOPT_URL,$url);rn curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);rn curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,false);rn rn //以下两种方式需选择一种rn //第一种方法,cert 与 key 分别属于两个.pem文件rn curl_setopt($ch,CURLOPT_SSLCERT,getcwd().DS.'cert'.DS.'apiclient_cert.pem');rn curl_setopt($ch,CURLOPT_SSLKEY,getcwd().DS.'cert'.DS.'apiclient_key.pem');rn curl_setopt($ch,CURLOPT_CAINFO,getcwd().DS.'cert'.DS.'rootca.pem');rn //第二种方式,两个文件合成一个.pem文件rn //curl_setopt($ch,CURLOPT_SSLCERT,getcwd().'/all.pem');rn rn if( count($aHeader) >= 1 )rn curl_setopt($ch, CURLOPT_HTTPHEADER, $aHeader);rn rn rn curl_setopt($ch,CURLOPT_POST, 1);rn curl_setopt($ch,CURLOPT_POSTFIELDS,$vars);rn $data = curl_exec($ch);rn if($data)rn curl_close($ch);rn return $data;rn rn else rn $error = curl_errno($ch);rn echo "call faild, errorCode:$error\n"; rn curl_close($ch);rn return false;rn rn rnrn?>rn[/code]rnrn[code=php]rn '',rn 'desc' => '',rn 'onoff' =>1,rn 'begin_time' =>'',//抽奖活劢开始时间,unix 时间戳,单位秒rn 'expire_time' => '',//抽奖活劢结束时间,unix 时间戳,单位秒rn 'sponsor_appid' => '',rn 'total' => 0, rn 'jump_url' =>'' ,rn 'key' =>'' rn );rn function __construct()rn rn rn rnrn function init_parameters_addlotteryinfo()rn $this->parameters_addlotteryinfo['title']=title;rn $this->parameters_addlotteryinfo['desc']=mch_id;rn $this->parameters_addlotteryinfo['onoff']=onoff;rn $this->parameters_addlotteryinfo['begin_time']=strtotime(begin_time);rn $this->parameters_addlotteryinfo['expire_time']=strtotime(expire_time);rn $this->parameters_addlotteryinfo['sponsor_appid']=sponsor_appid;rn $this->parameters_addlotteryinfo['total']=total;rn $this->parameters_addlotteryinfo['jump_url']=jump_url;rn $this->parameters_addlotteryinfo['key']=key;rn rnrn function addlotteryinfo()rn $access_tokenStr=access_token::get_access_token();rn $addlotteryinfo_Url="https://api.weixin.qq.com/shakearound/lottery/addlotteryinfo?access_token=$access_tokenStr&use_template=2";rn $arr=CommonUtil::curl_post($addlotteryinfo_Url,json_encode($this->parameters_addlotteryinfo));rn print_r($arr);rn rnrn function setprizebucket($lottery_id,$access_tokenStr='')rn $hbpreorder = new hbpreorder();rn $hbpreorder->init_parameters();rn $hbpreorder->setParameter('total_amount',mt_rand(1, 100));// 1 到100(分)rn $hborderinfo=$hbpreorder->preorder();rn $hborderinfo=json_decode(json_encode($hborderinfo),true);rn file_put_contents('1.log', $hborderinfo);rn if(!$access_tokenStr)rn $access_tokenStr=access_token::get_access_token();rn rn $parameters_setprizebucket=array(rn 'lottery_id' =>$lottery_id, //之前创建的活动idrn 'mchid'=>auth_mchid,rn 'sponsor_appid'=>auth_appid,rn 'prize_info_list'=>array(array('ticket' =>$hborderinfo[sp_ticket])),rn );rn //print_r('录入红包请求数据回显: '.json_encode($parameters_setprizebucket));rn $setprizebucket_url='https://api.weixin.qq.com/shakearound/lottery/setprizebucket?access_token='.$access_tokenStr;rn $arr=CommonUtil::curl_post($setprizebucket_url,json_encode($parameters_setprizebucket));rn //print_r('录入红包响应数据回显: '.$arr);rn rn public function setParameter_addlotteryinfo($parameter, $parameterValue) rn $this->parameters_addlotteryinfo[$parameter] = $parameterValue;rn rn public function getParameter_addlotteryinfo($parameter) rn return $this->parameters_addlotteryinfo[$parameter];rn rnrnrn function get_sign()rn try rn if (null == key || "" == key ) rn throw new SDKRuntimeException("key不能为空!" . " ");rn rn $commonUtil = new CommonUtil();rn $unSignParaStr = $commonUtil->formatQueryParaMap($this->parameters_addlotteryinfo, false);rn $signStr=$unSignParaStr."&key=".key;rn return strtoupper(md5($signStr));rn catch (SDKRuntimeException $e)rn rn die($e->errorMessage());rn rnrn rnrn rnrnrn/* 创建红包活动*/rnif($_GET['a']=='add')rn$lottery =new Lottery();rn$lottery->init_parameters_addlotteryinfo();rn$lottery->addlotteryinfo();rnrn?>rn[/code]
微信支付开发php,微信回调
微信支付: 1、申请开通微信支付(需要微信公众号),这块是同事去申请的,应该不难,对照说明去申请开通。 2、成功开通后,收到审核通过的邮件(配置文件用),内容包括:     微信支付商户号:xxxxxxxx     商户平台登录帐号:xxxxxxxx     商户平台登录密码:xxxxxxxx     申请对应的公众号:xxxxxxxx     公众号APPID:xxxxxxxx
微信支付系列--php微信扫码支付
一 概述 扫码支付是商户系统按微信支付协议生成支付二维码,用户再用微信“扫一扫”完成支付的模式。该模式适用于PC网站支付、实体店单品或订单支付、媒体广告支付等场景。前几天公司需要做了一下扫码支付 分享一下 首先需要准备的东西 微信给的 appid, mchtd(商户号) ,key ,appsecret 下载微信的sdk 配置 appid mchtd key 和 appsecret
微信扫码支付 返回签名错误
做微信扫码支付时,返回签名错误,在网上搜各种解决方法,都试过了,还是没解决,也在官网上验证签名了,和本地系统生成的完全一致。 开始的时候是通过了的,能正常支付,也能进回调,后来就挪到了需要用到的action里,联调的时候发现报签名错误,尝试各种方法之后,又在之前测试的action里执行了一遍,发现在那个action里正常! 于是怀疑是方法位置的问题,因为我放到要用的action里之后,...
微信扫码支付,签名错误!
在调用微信的统一下单接口后,老是返回 签名错误:rnFAILrn签名错误rnrnrn微信网站上有签名的验证工具。我已经对比了网站上工具生成的签名和我本地生成签名是一致的,而且发送的XML也是一致的。但就是报这个错误。rnrn还有就是公众号上面设置的授权目录要怎么配置?是跟我提交时页面有关联呢还是跟我收到通知的页面有关联?rnrn哪位大神有遇到这样的问题吗?
微信支付接口返回“签名错误”的解决办法
1、确认公众号的appSecret和商户号的API密钥没有搞混。 2、重置商户API密钥。 3、确认公众号授权的域名和目录是正确的。 4、参数body含有中文字符,改换英文签名成功,那么就转换字符编码试试。 dat=iconv(′UTF−8′,′ISO8859−1′,array2xml(dat = iconv(&amp;amp;#x27;UTF-8&amp;amp;#x27;,&amp;amp;#x27;ISO88...
android 微信支付,body为中文字符,签名错误
微信支付订单生产方法: /** * 根据您的订单信息 生成 微信产品支付订单信息 */ private String createWeChatOrder() { StringBuffer xml = new StringBuffer(); try { String nonceStr = genNonce...
java微信支付“签名错误”之body为中文时
前景:2015年12月17日,使用微信APP支付6步骤走的第2步骤【统一下单】(https://pay.weixin.qq.com/wiki/doc/api/app.php?chapter=8_3)。开发系统为window7 ,系统编码为gbk 。开发项目编码为utf-8,所有java文件编码为utf-8。MD5加密方法为网络上的。tomcat 编码 为 utf-8. 场景:签名认证参数中的
C# 微信支付企业支付一直报签名错误。
做企业支付的时候,文档上也没明确说明需要用哪几个参数,我仿照php的demo用的以下参数生成签名,rn paySignReqHandler.setParameter("mch_appid", appid);rn paySignReqHandler.setParameter("mchid", mch_id);rn paySignReqHandler.setParameter("nonce_str", nonceStr);rn paySignReqHandler.setParameter("partner_trade_no", sp_billno);rn paySignReqHandler.setParameter("openid", openID);rn paySignReqHandler.setParameter("check_name", "NO_CHECK");rn paySignReqHandler.setParameter("re_user_name", "测试");rn paySignReqHandler.setParameter("amount", amount);rn paySignReqHandler.setParameter("desc", desc);rn paySignReqHandler.setParameter("spbill_create_ip", ip);rnrn string paySign = paySignReqHandler.CreateMd5Sign("key", appkey);rn string postData = @"" +rn "" + GlobalUtil.APPID + "" +rn "" + GlobalUtil.MCHID + "" +rn "" + jsApiConfigBll.GenerateNonceStr() + "" +rn "" + sp_billno + "" +rn "" + openID + "" +rn "NO_CHECK" +rn "" + amount + "" +rn "" + desc + "" +rn "" + ip + "" +rn "" + paySign + "" +rn "";rn logger.Debug("企业支付传入XML:" + postData);rn可是一直报签名错误,报错内容:rnSUCCESSrn签名错误rnFAILrnSIGN_ERRORrn签名错误rnrn求大神指导啊!!!
c# 微信支付 body为中文时报签名错误
找到API的WxPayData类的CalcHMACSHA256Hash方法 原:var enc = Encoding.Default; 改:var enc = Encoding.UTF8; //修改Default为UTF8
微信支付 扫码支付 模式二 总是返回签名错误
发送参数描述:rnrn微信公众账户的appidrn2233rnWEBrn微信公众账户的商户idrn89580247521123946854136392486487rn支付结果通知回调地址trn94392289831205079433878810079340rn1111rn8C0169CA61F0741DE9A666B1DBD427BFrn调用统一下单接口的ip300rnNATIVErnrn接收结果:rnFAILrn签名错误rnrn转为json并转码后:rn"return_msg":"签名错误","return_code":"FAIL","errorcode":"FAIL","msg":"签名错误"rnrn问:rnAPP支付已经调通,使用的appid和商户id是创建应用开通APP支付后微信反馈申请结果的邮箱中给出appid和商户idrn当使用Native原生支付时,使用的是 微信公众平台的appid和商户id,参与签名的key是在微信商户平台的API安全中设置的api秘钥,不知道哪里错了,一直是签名错误,本人搞了好多天,已崩溃,求助大神!!!!rnrnrnrn
微信支付:JSAPI拉起支付,return_msg=签名错误
相信各位写支付的小伙伴都不是粗心大意的人,打印发给微信的xml参数,复制到官方文档的校验工具,是检测通过。 图下的appsecret是校验工具用来验证签名的,而apikey是统一下单时签名时用的 apikey是对应微信支付平台的,而微信支付平台可以绑定小程序和app,小程序或app调用统一下单时,参数sign,创建签名时传入的apikey就是它,千万不要传appsecret,我就是因为这...
【微信】微信支付,微信零钱
文档:企业付款 | 小程序支付 微信支付 实际项目链接(进入列表详情报名有支付功能):http://test.te600.com/qcwb_IMV9AEoLX1?i=3&amp;amp;c=entry&amp;amp;do=index&amp;amp;m=qc_sharemoney&amp;amp;re=1&amp;amp;qc=test.te600.com/160UsoDS //1.微信支付 publi...
【微信支付踩到的那些坑】1.Android 微信支付,body为中文字符,签名错误
问题:body自段设置成英文字符串的时候,签名成功,但是设置成中文字符的时候就签名错误 解决方法:改变拼接之后xml字符串格式 为"ISO8859-1" private String genProductArgs() { StringBuffer xml = new StringBuffer(); try { String nonceStr = genNonceStr(
微信红包接口提示签名错误
参考微信红包支付开发的文档,无论如何都提示“签名错误”,请大神搭救!rn微信红包支付的开发文档:https://pay.weixin.qq.com/wiki/doc/api/cash_coupon.php?chapter=13_5rnrn下面贴出我的部分代码,部分涉及隐私的内容没有实际给出或是用xxx代替了。跟微信平台提供的签名测试工具对比了下,微信测试平台生成的签名跟我自己代码生成的签名完全一致,但就是提示签名错误。rnrn入口:rn[code=java]rn public String sendRedPack(String fromUserName, int amount) rn SortedMap map = new TreeMap();rn rn map.put("nonce_str", WeixinUtil.createNoncestr(32)); // 随机字符串,不长于32位rn // 商户订单号(每个订单号必须唯一)。组成:mch_id+yyyymmdd+10位一天内不能重复的数字。接口根据商户订单号支持重入,如出现超时可再调用。rn map.put("mch_billno", WeixinUtil.getMchBillNo()); rn map.put("mch_id", Constants.MCH_ID); // 微信支付分配的商户号rn map.put("wxappid", Constants.getAppId()); // 微信分配的公众账号ID(企业号corpid即为此appId)rn map.put("send_name", "CanguangMedia"); // 商户名称, 红包发送者名称rn map.put("re_openid", fromUserName); // "oy-yfuAMQ4tynMP98bOdMmuS4Bk4"; // 接受红包的用户.用户在wxappid下的openidrn map.put("total_amount", amount + ""); // 付款金额,单位分rn map.put("total_num", "1"); // 红包发放总人数rn map.put("wishing", "ThankYou"); // 红包祝福语rn map.put("client_ip", "xxx.xx.xx.xxx"); // 调用接口的机器Ip地址rn map.put("act_name", "TestRedPackage"); // 活动名称rn map.put("remark", "ThankYou2"); // 备注信息rn String sign = WxPayHelper.createSign("UTF-8", map); // 签名 rn map.put("sign", sign);rn rn String xmlParam = WeixinUtil.mapToXml(map);rn log.info("sendRedPack, 入参xmlParam=" + xmlParam);rn rn String result = "";rn try rn result = MoneyUtils.doSendMoney(Constants.SEND_REDPACK_URL, fromUserName, xmlParam);rn Map resultMap = XmlUtil.xml2map(result);rn if("FAIL".equals(resultMap.get("result_code"))) rn result = (String) resultMap.get("error_code_des");rn rn else rn result = "感谢您的支持,红包已发放到您的微信上,请查收!";rn rn log.info("sendRedPack获取结果:" + result);rn catch (Exception e) rn log.error("sendRedPack发生异常:" + e.getMessage(), e);rn System.out.println("sendRedPack发生异常:" + e.getMessage());rn rn return result;rn rn[/code]rnrnWeixinUtil.javarn[code=java]rn /**rn * 生成随机数rn * @param length 要生成的长度rn * @returnrn */rn public static String createNoncestr(int length) rn String chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";rn String res = "";rn for (int i = 0; i < length; i++) rn res += chars.charAt(rd.nextInt(chars.length() - 1));rn rn return res;rn rnrn /**rn * 创建商户订单号rn * @returnrn */rn public static String getMchBillNo() rn String mchBillNo = "";rn SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");rn SimpleDateFormat sdf2 = new SimpleDateFormat("HHmmssSSS");rn Date now = new Date();rn mchBillNo = Constants.MCH_ID + sdf.format(now) + sdf2.format(now) + rd.nextInt(9);rn return mchBillNo;rn rnrn /**rn * map转换成微信标准的xml格式rn * @param map 微信入参maprn * @returnrn */rn public static String mapToXml(SortedMap map) rn String xml = "";rn rn Iterator> iter = map.entrySet().iterator();rn while (iter.hasNext()) rn Entry entry = iter.next();rn String key = entry.getKey();rn Object val = entry.getValue();rn xml += "<" + key + ">" + val + "";rn rn xml += "";rn return xml;rn rnrn[/code]rnrnWxPayHelper.javarn[code=java]rn /**rn * 微信支付签名算法signrn * @param characterEncodingrn * @param parametersrn * @returnrn */rn public static String createSign(String characterEncoding, SortedMap parameters) rn StringBuffer sb = new StringBuffer();rn Set es = parameters.entrySet();//所有参与传参的参数按照accsii排序(升序)rn Iterator it = es.iterator();rn while (it.hasNext()) rn Map.Entry entry = (Map.Entry) it.next();rn String k = (String) entry.getKey();rn Object v = entry.getValue();rn if (null != v && !"".equals(v) && !"sign".equals(k) && !"key".equals(k)) rn sb.append(k + "=" + v + "&");rn rn rn sb.append("key=" + Constants.API_KEY);rn String sign = MD5Util.MD5(sb.toString()).toUpperCase();rn log.info("signStr=" + sb.toString() + ", sign=" + sign);rn // String sign = MD5Util.MD5Encode(sb.toString(), characterEncoding).toUpperCase();rn return sign;rn rn[/code]rnrnrnMoneyUtils.javarn[code=java]rn public static String doSendMoney(String url, String fromName, String data) throws Exception rn log.info("doSendMoney入参:url=" + url + ", fromName=" + fromName + ", data=" + data);rn KeyStore keyStore = KeyStore.getInstance("PKCS12");rn // FileInputStream instream = new FileInputStream(new File(Constants.KEYSTORE_FILE));//P12文件目录rn InputStream instream = null;rn try rn instream = MoneyUtils.class.getResourceAsStream("apiclient_cert.p12");rn // instream = new FileInputStream(new File("apiclient_cert.p12"));//P12文件目录rn catch(Exception e) rn log.error("doSendMoney 00发生异常:" + e.getMessage(), e);rn e.printStackTrace();rn rn log.info("doSendMoney instream====>" + instream.toString());rn try rn keyStore.load(instream, Constants.KEYSTORE_PASSWORD.toCharArray());//这里写密码..默认是你的MCHIDrn catch (Exception e) rn e.printStackTrace();rn log.error("doSendMoney 1发生异常:" + e.getMessage(), e);rn rn finally rn instream.close();rn rn // Trust own CA and all self-signed certsrn SSLContext sslcontext = SSLContexts.custom()rn .loadKeyMaterial(keyStore, Constants.KEYSTORE_PASSWORD.toCharArray())//这里也是写密码的rn .build();rn // Allow TLSv1 protocol onlyrn SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(sslcontext, new String[] "TLSv1" , null,rn SSLConnectionSocketFactory.BROWSER_COMPATIBLE_HOSTNAME_VERIFIER);rn CloseableHttpClient httpclient = HttpClients.custom().setSSLSocketFactory(sslsf).build();rn try rn HttpPost httpost = new HttpPost(url); // 设置响应头信息rn httpost.addHeader("Connection", "keep-alive");rn httpost.addHeader("Accept", "*/*");rn httpost.addHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");rn httpost.addHeader("Host", "api.mch.weixin.qq.com");rn httpost.addHeader("X-Requested-With", "XMLHttpRequest");rn httpost.addHeader("Cache-Control", "max-age=0");rn httpost.addHeader("User-Agent", "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0) ");rn httpost.setEntity(new StringEntity(data, "UTF-8"));rn CloseableHttpResponse response = httpclient.execute(httpost);rn try rn HttpEntity entity = response.getEntity();rn String jsonStr = toStringInfo(response.getEntity(),"UTF-8");rn log.info("doSendMoney返回:jsonStr=" + jsonStr);rn rn //微信返回的报文时GBK,直接使用httpcore解析乱码rn // String jsonStr = EntityUtils.toString(response.getEntity(),"UTF-8");rn EntityUtils.consume(entity);rn return jsonStr;rn catch(Exception e) rn log.error("doSendMoney 发生异常:" + e.getMessage(), e);rn return null;rn finally rn response.close();rn rn finally rn httpclient.close();rn rn rn[/code]
java 微信统一支付接口签名错误
java 微信支付这块搞了两天了,一直卡在签名这块,不管怎么试就是报 FAIL签名错误的错误,感觉微信就是一个吭。请问有人有类似的问题出现吗?求解决办法,最好有现成的代码参照一下。
微信申请退款报“签名错误”
这是一个坑! 今天在调测微信的申请退款接口,结果一直报“签名错误”,但使用同样的签名方法请求“统一下单接口”就没有问题!Why? 后来反复测试,都报签名错误,然后我使用了微信提供的签名校验工具进行比较,MD,和我本地生成的一模一样啊!那为什么还报签名错误啊? 后来在百度中偶然遇到答案,竟然是因为我的退款原因(refund_desc)参数是中文的。。。于是我换成了数字,
公众号微信支付java开发,微信支付签名错误,或者一直请求回调方法问题
本编为原创,如需转载,请注明出处。 微信支付开发过程中,如果没有遇到签名错误这个问题或者一直请求回调方法问题,那么感觉你开发了一个假对接,网上也有许多列子,以及官网也有微信团队demo,但是还是有解决不了的各种签名问题,demo需要手动修改因为他的加密方式会不尽如人意,还有排序问题。好了,话不多说,直接进入步骤中。 注意:如果遇到签名错误,一定要查看参数顺序           比较坑的是,
【微信支付】统一下单接口一直报错:签名错误。
本地测试在微信中可以支付,预支付标识可以取到。 支付微信微信支付 修改标签 但是部署到服务器上,获取预支付标识就报这个错。什么原因?n本地环境 从下单到支付都可以,钱包的钱也能扣除。就是部署到服务器上不行。难办啊
相关热词 c# 标准差 计算 c#siki第五季 c#入门推荐书 c# 解码海康数据流 c# xml的遍历循环 c# 取 查看源码没有的 c#解决高并发 委托 c#日期转化为字符串 c# 显示问号 c# 字典对象池