微信支付一直给我报支付验证签名失败,怎么解决????

#pragma mark - 微信支付
/*
colorbeans 用户购买彩豆数
*/

  • (NSString )appWxpay :(NSString *)colorbeanstype :(NSString *)colorbeans :(NSString *)callback{ AppDelegate *appdelegate = (AppDelegate *)[[UIApplication sharedApplication]delegate]; NSString *jsda =[[NSString alloc]init]; NSRange loran = [appdelegate.login rangeOfString:@"YES"]; NSArray array; if(loran.length > 0){ if(colorbeans.length > 0){ NSString *deviceIP =[self getIPAddress]; array= [NSArray arrayWithObjects:@"xyjJspname",@"Colorbean",@"xyjid",@"GMColorbeanWithWxpay",@"userid",appdelegate.userid,@"colorbeans",colorbeans,@"colorbeanstype",colorbeanstype,@"userip",deviceIP,nil]; Server *postSv = [[Server alloc]init]; NSArray *backDate = [postSv postServerY:array]; if([backDate[0] isEqualToString:@"true"]){ NSDictionary *ncD = backDate[1]; appdelegate.partnerid =[ncD objectForKey:@"partnerid"]; appdelegate.prepayid =[ncD objectForKey:@"prepayid"]; appdelegate.timestamp =[self getNowTimeTimestamp]; appdelegate.noncestr =[self nonceStr]; appdelegate.package =@"Sign=WXPay"; appdelegate.out_trade_no =[ncD objectForKey:@"out_trade_no"]; appdelegate.type =[ncD objectForKey:@"type"]; appdelegate.sign =[self signCreat]; PayReq *request = [[PayReq alloc] init]; request.openID = appdelegate.appid; request.partnerId = appdelegate.partnerid ; request.prepayId = appdelegate.prepayid; request.package = appdelegate.package; request.nonceStr = appdelegate.noncestr; request.timeStamp = [appdelegate.timestamp intValue]; request.sign = appdelegate.sign; [WXApi sendReq:request]; } return jsda; } #pragma mark - Sign签名的生成 -(NSString *)signCreat{ AppDelegate *appdelegate = (AppDelegate *)[[UIApplication sharedApplication]delegate]; NSMutableDictionary *stringB =[NSMutableDictionary dictionary]; [stringB setObject:appdelegate.appid forKey:@"appid"]; [stringB setObject:appdelegate.noncestr forKey:@"noncestr"]; [stringB setObject:appdelegate.package forKey:@"package"]; [stringB setObject:appdelegate.partnerid forKey:@"partnerid"]; [stringB setObject:appdelegate.prepayid forKey:@"prepayId"]; [stringB setObject:[NSString stringWithFormat:@"%@",appdelegate.timestamp] forKey:@"timestamp"]; NSArray *keys =[stringB allKeys]; NSArray *sortedkeys =[keys sortedArrayUsingComparator:^NSComparisonResult(id _Nonnull obj1, id _Nonnull obj2) { return [obj1 compare:obj2 options:NSNumericSearch]; }]; NSMutableString *sign1 =[NSMutableString string]; for (NSString * key in sortedkeys) { [sign1 appendString:key]; [sign1 appendString:@"="]; [sign1 appendString:[stringB objectForKey:key]]; [sign1 appendString:@"&"]; } NSString * api= [NSString stringWithFormat:@"key=%@",appdelegate.api]; NSString * stringA =[NSString stringWithFormat:@"%@%@",sign1,api]; NSString *result = [StringMD sha1:stringA]; NSString * signmd=[StringMD stringToMD5:result]; NSString *sign = [[signmd uppercaseString]stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; return sign; } #pragma mark - 获取随机字符串
  • (NSString )nonceStr{ NSString *string = [[NSString alloc]init]; for (int i = 0; i < 32; i++) { int number = arc4random() % 36; if (number < 10) { int figure = arc4random() % 10; NSString *tempString = [NSString stringWithFormat:@"%d", figure]; string = [string stringByAppendingString:tempString]; }else { int figure = (arc4random() % 26) + 97; char character = figure; NSString *tempString = [NSString stringWithFormat:@"%c", character]; string = [string stringByAppendingString:tempString]; } } // 把字符串全部转化为大写 NSString *str = [[string uppercaseString]stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; return string ; } #pragma mark - 获取当前时间戳 (以毫秒为单位) -(NSString *)getNowTimeTimestamp{ NSDateFormatter *formatter = [[NSDateFormatter alloc] init] ; [formatter setDateStyle:NSDateFormatterMediumStyle]; [formatter setTimeStyle:NSDateFormatterShortStyle]; [formatter setDateFormat:@"YYYY-MM-dd HH:mm:ss Z"]; // ----------设置你想要的格式,hh与HH的区别:分别表示12小时制,24小时制 //设置时区,这个对于时间的处理有时很重要 NSTimeZone timeZone = [NSTimeZone timeZoneWithName:@""]; [formatter setTimeZone:timeZone]; NSDate *datenow = [NSDate date];//现在时间,你可以输出来看下是什么格式 NSString *timeSp = [NSString stringWithFormat:@"%ld", (long)[datenow timeIntervalSince1970]]; return [timeSp stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; }
0

1个回答

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
JAVA 微信支付过程中,支付验证签名失败。
       如果提示支付验证签名失败,立马进入这里:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=20_1  用官方提供的验签工具去检查你的签名是否和服务器的一样,如果不一样,就一步步照着他的去检查,看是加签过程出了问题还是你的XML有问题。        如果你的加签结果和他的一样,那就说明是参数有问题。再次确认一下配置的参...
微信公众号支付:支付验证签名失败
如果开发的时候用微信demo做开发的话记得注意 wxpay这个类的构造函数中, if (useSandbox) { this.signType = SignType.MD5; // 沙箱环境 } else { this.signType = SignType.HMACSHA256; }正式环境默认是HMACSHA256加密方式,如果是想按M...
微信公众号支付验证签名失败及其它坑总结
最近在做公众号支付,在这里吐槽下这个官方的文档哈…… 我是用的java 的sdk 第一个坑就是关于签名算法的,文档上是这么写的 但是代码是诚实的,sdk中代码是这样的: 没错,代码中默认的是HMACSHA256……所以对于微信的东西,一定不要相信他的文档,这是一个踩过无数微信文档坑的老程序猿的忠告。 然后就是关于签名的问题,签名这个是要在后台做两次签名 第一次是为了调用统一支付接口,第二次是方便客...
微信公众平台支付 一直提示签名认证失败,签名对比正确,却提示签名不正确,关于prepay_id造成签名验证不正确的问题
关于微信公众平台支付的问题,耗时整整24小时,一直在纠结,几乎是一个字母一个字母的查看参数是否正确。是的,我已经在开始怀疑人生了。直到在无数篇文章中看见了http://blog.csdn.net/triplestudio/article/details/77930105。开发语言   java   使用官方下载的sdk关于支付调取失败的问题有很多,授权目录,签名时参数名称区分大小写(签名参数都是使...
微信内H5支付报签名错误
在确保签名及各项配置正确的情况下,检查如下微信提供的java版SDK中的一段代码,新版支付签名都是使用MD5,这里却不是!
微信支付提示支付验证签名失败
在APP里集成了微信支付的SDK,按照官方代码用服务器返回给我的数据来调起支付,可是不知道为什么总是提示支付验证签名失败,网上说是参数名的大小写问题,但是这个参数名传的时候是用的SDK里的方法,那个.a静态库又没办法看,官方代码肯定没问题了,所以就该找找自己的问题 比较大的可能性是时间戳的转换问题,,后台返回给我的时间戳是字符串格式的,人多人都是直接用强转的方式,就是 NSString
微信jsapi支付验证签名失败
微信jsapi支付验证签名失败
java官方工具包微信H5支付报“支付验证签名失败”
调试步骤: 1.微信授权目录配置,要配到倒数第二级目录 2.统一接口调用成功后,用新的时间戳和随机串签一次名,不能使用同一接口返回的随机串和签名 3.一定要注意,官方的工具包中WXPay.java初始化时,如果不使用带useSandbox参数的构造方法,会造成加密算法使用HMACSHA256
微信App 支付出现 IOS 微信 支付验证签名失败 Android errCode =-1
遇到这个问题让我很忧伤,排查了一下午 记得检查 app_Key , 就是让你自己写的32位大小写外加数字的那个,这个开始我自己乱写的,后来查资料说可能会引起不能支付,这就很尴尬了。生成MD532 位,后来试了试,其实没事,但是最好这样吧,避免不必要的错误 公司可能申请了公众号支付和app 支付 ,两个 账号可能就会有两个 商户号 ,虽然最后都是进入公户,但是 也不能忽视 商户号的不同 遇到支付验...
微信公众号支付从开始到结束遇到的问题--------特别是前端调起支付时提示“支付签名验证失败”
1、公众号支付与其他类型的支付在调用统一下单接口时的区别是多个openid参数,而这个参数是需要通过授权后获得的(可以参考官方文档的授权功能) 2、有两个地方需要提前设置好 2.1、设置支付目录 在微信商户平台(pay.weixin.qq.com)设置您的JSAPI支付支付目录,设置路径:商户平台--&amp;gt;产品中心--&amp;gt;开发配置。JSAPI支付在请求支付的时候会校验请求来源是否有在商...
微信公众号支付签名验证错误
微信公从号支付,其坑之多,搜索一下可见一斑。 签名验证错误,除了告诉你签名验证错误之外,没有任何更多提示。 可能的原因:安全域名、目录未正确设置,参与签名的值与调用的值不一致(如timestamp签名时动态取,回显时也动态取)等。 但当你每纠正一步,仍然看到的是签名验证错误时,你会开始怀疑自己,思考生活的意义。 直到最后,终于可以确认或承认,在这些可以说得出的原因里,真的没有错,逐个参数名
微信支付——支付签名验证失败的坑
只讲几个微信支付开发中的签名问题!(JAVA版的公众号支付) 在调起支付页面时,就会要你自己生成2个sign(建议全部用MD5): 第一个是获取订单数据时生成,然后通过这些数据生成预支付订单(通过 统一下单 方法取得),微信官方返回一串xml数据,告诉你是否成功。 第二个是需要把数据传给前端调起支付页面的,(此处注意看文档的字段,key值也要和他的一直,sign是取得签名后再赋给map做pa...
关于微信APP支付,提示支付验证签名失败
微信APP支付,在“统一下单”里加签没有问题,调用成功,但是在 “调起支付”后却提示 支付验证签名失败。
微信支付-支付验证签名失败,跳转无响应等
微信支付比起支付宝支付感觉要麻烦很多,或者微信内部实现更严谨吧 ,下面来说说微信支付过程中遇到的一些问题:1、运行[WXApi sendReq:req];,运行这句代码就是跳转微信,调起支付,但是发现并没有跳转微信,没有任何反应,任何错误提示都没有解决方法: 查看调起微信支付是所传的参数是否有问题,参数如下(res.)NSDictionary *orderInfo = responseObject[
微信公众号支付签名错误
微信公众号支付,所有参数都对了,key也没问题,老是提示签名错误,和签名工具也是一样, 我就想啊想,什么都没问题,再次看参数,发现了个神奇的参数body 就是这个东西,传中文都会涉及编码的问题,并且微信很喜欢乱码,然后改成英文字母 好的,成功了 ...
Unity微信支付,IOS提示支付签名验证失败。安卓没问题
最近手上有一个Unity项目,Java后台,原作者跑路,我们属于半路上车。 打包ipa的时候碰到了很多问题。 在原来项目的基础上引入了微信支付体系。 安卓支付流程没有出问题,但是到了IOS这里,千辛万苦打出了工程,却发现微信支付提示支付验证签名失败 我们都知道,在接微信支付的时候,要保证一些数据的正确,比如APPID,bundleID,在确认这些信息没有出错的情况下,我们的签名是服务器...
微信公账号支付:签名验证失败的解决办法
微信公众号支付总结:做完了微信支付想趁着这把火没灭继续把公众号支付也做完,但是没想到中途出了呢么多意外,每次都是感觉解决了这个问题就可以支付了,但每次都是一个问题接另一个问题的出现,特此总结一下出现的问题及原因。 1.没仔细看文档(有人会一个字一个字的全看完么。。。还是只有我一目十行。。)。如果你仔细把官方文档看完,那你必定能减少至少一半的出错。 ①但是我感觉有个参数说明挺坑的,就是那
使用微信官方服务端SDK微信APP支付提示支付签名验证失败
这两天APP微信支付后端代码更换为微信官方的java版SDK(java_sdk_v3.0.9),更换之后APP端发起支付提示支付签名有问题,最后查看SDK源码发现,原来签名方式有问题,记得以前公司老代码加密方式都是MD5,一直是没问题的。官方的SDK只有在沙盒环境下才是MD5加密方式,最后不得不修改SDK源码,把签名方式强制为MD5的。com.github.wxpay.sdk.WXPay类中加了两...
微信支付 支付验证签名失败
公众号支付,WeixinJSBridge.invoke()方法,返回错误:支付验证签名失败 检查后台签名参数、支付密钥均正确,却还是错误,最后询问微信支付技术才解决,问题所在就是微信给的java sdk有问题。问题解决就是:全部使用MD5加密的方式,不用去理睬什么环境。 java sdk v3版: 初始化WXPay方法: public WXPay(final WXPayCo
服务商的小程序微信支付api,一直报签名验证错误…解决办法
我调用小程序的微信支付api,一直报签名验证错误,参与签名的参数有timeStamp、nonceStr、package、signType。使用微信支付签名校验工具生成的签名跟我自己服务器生成的签名是一样的,但还是报签名错误。 err_desc: “支付验证签名失败”, err_code: “-1”, errMsg: “requestPayment:fail” wx.requestPay...
微信公众号支付 JSAPI 提示签名验证错误的解决方案
在测试微信公众号支付的时候一直返回 签名验证错误 找了好久错误也解决不了。 在网上找了一大堆资料,终于找到了解决方案 答案就是,加密方式错误了。 如果在统一下单的时候,不填写sign_type为MD5,则会默认使用HMAC-SHA256加密,而在掉漆支付的时候,签名方式是必填的,并且使用了MD5。坑人的地方在下面: 首先看这个网址 https://pay.weixin.qq.com/wi
微信公众号支付支付验证签名失败及公众号支付总结
微信公众号支付总结:做完了微信支付想趁着这把火没灭继续把公众号支付也做完,但是没想到中途出了呢么多意外,每次都是感觉解决了这个问题就可以支付了,但每次都是一个问题接另一个问题的出现,特此总结一下出现的问题及原因。 1.没仔细看文档(有人会一个字一个字的全看完么。。。还是只有我一目十行。。)。如果你仔细把官方文档看完,那你必定能减少至少一半的出错。 ①但是我感觉有个参数说明挺坑的,就是那个ope
微信支付报签名失败的几种可能原因
一:统一下单参数:out_trade_no 商品订单号必须唯一。不可与历史数据重复。如果重复可以通过微信下单返回参数:预支付交易会话标识 prepay_id 是否为空来判断下单是否成功。二:签名的各种参数不建议为空测试过程中一直报签名失败,返回签名信息:&amp;lt;sign&amp;gt;63FBA04E22E69BC25D65EF6BAC1EC460&amp;lt;/sign&amp;gt;&amp;lt;product_id&amp;g...
微信小程序支付报签名错误 后台签名跟调试工具返回的一样了,但是一直报签名错误
一个月前,小程序调试到微信支付。其实也不是第一次调支付,因为之前在上家公司都是后台全程配好我调参数就好所以我并不觉得有什么吃力。但这次是由0开始,因为只是开发小程序,登陆的都是小程序开发平台,所以跳了坑,很久跳不出来。现在有时间就记录一下这些坑,以防自己下次再做时忘记又跳一次这个坑。 坑的起源:后台签名跟调试工具返回的一样了,但是一直报签名错误。归根结底就是开发流程没有按正确的文档流程调起微信支...
##iOS中的微信支付 支付验证签名失败
iOS中的微信支付 支付验证签名失败今天要在项目中添加微信支付,iOS端的所有东西都已经按照文档搞好了,可就是跳转到微信的时候显示“支付验证签名失败”,可是安卓端的都没有问题,就很郁闷了。 后来在对文档的时候发现。。。 666 时间戳十位啊。。。 可是后台返回的timestamp确实13位的。。。怒找后台改了 立刻OK了。。。所以说咱们一定要协调好,仔细查对文档,毕竟用的是人家的东西
微信小程序 支付验证签名失败
网上查了一下,这篇里面涵盖了挺多的可能的,大家可以看一下。 https://blog.csdn.net/kof820/article/details/80925375 我这边排查下来遇到的问题,首先是后台没有进行二次签名。 大家可以看一下这个官方文档,有写参数规定。开始进行了二次签名后仍然报错,后来发现后台的timeStamp是13位,而微信要求是10位,修改后问题解决。 https://...
微信app支付服务端一直签名不通过!求解救!!!
微信app支付:签名验证工具验证成功,却一直提示我{return_msg=签名错误, return_code=FAIL},到底怎么解决,请可怜可怜我这个女程序员,快快帮我解决吧!!我都怀疑人生一整天了!!我传的参数代码:注意!!我并没有传中文,商户号跟key确认了很多遍,为什么就是签名错误!!!!...
微信扫码支付 返回签名错误
做微信扫码支付时,返回签名错误,在网上搜各种解决方法,都试过了,还是没解决,也在官网上验证签名了,和本地系统生成的完全一致。 开始的时候是通过了的,能正常支付,也能进回调,后来就挪到了需要用到的action里,联调的时候发现报签名错误,尝试各种方法之后,又在之前测试的action里执行了一遍,发现在那个action里正常! 于是怀疑是方法位置的问题,因为我放到要用的action里之后,...
支付验证签名失败
微信支付 支付验证签名失败 微信支付的时候参数传的都是后台返回的数据,安卓的能用而ios的就是提示【支付验证签名失败】,然后就是支付不能成功。 本人也经历了好长时间,我就先不做这里的。之后就下去查资料看官方文档也没有找到问题。突然在bing搜索中找到了结果代码如下: /// 这是能支付成功的朴代码 - (void)wxPayWithDict:(NSDictionary *)dict { ...
公众号微信支付java开发,微信支付签名错误,或者一直请求回调方法问题
本编为原创,如需转载,请注明出处。 微信支付开发过程中,如果没有遇到签名错误这个问题或者一直请求回调方法问题,那么感觉你开发了一个假对接,网上也有许多列子,以及官网也有微信团队demo,但是还是有解决不了的各种签名问题,demo需要手动修改因为他的加密方式会不尽如人意,还有排序问题。好了,话不多说,直接进入步骤中。 注意:如果遇到签名错误,一定要查看参数顺序           比较坑的是,
微信内H5调起支付(JSAPI)失败报错
这里是一个补充的小细节,如果你确认签名没错,授权页面路径也没问题的话,可以往下看。 直接说结论,调用统一下单API与H5调起两次签名都需要使用MD5方式! 详解: 微信JSAPI调用与微信有两次交互,一次是调用统一下单API,一次是页面H5调起密码输入框,很多人卡在第二步,具体表现为LOGO一闪而过,不显示输入密码框,解析返回结果会提示“支付验证签名失败”(onBridgeReady方法)或...
小程序支付的时候出现“支付验证签名失败”
问题描述: 小程序支付的时候出现“支付验证签名失败”,在微信支付接口签名验证工具检查是正确的 解决方案; 在开发微信小程序支付的时候    统一下单签名是正常的,能正常获取到prepayid。  用同样的方法做二次签名,每次支付小程序一直提示“支付验证签名失败”  ,用签名验证工具检查签名是正确的。   后来发现是加密是参数大小写问题。  检查大小写时这里大家一定要注意appId。   ...
坑爹的微信支付(签名错误)
前言 以前调微信支付,直接把demo粘过来改改,或者从老项目粘过来,这次接手一个一年之前的项目,说微信支付没调通,好吧,我就调吧 正文 1:之前的body写的是中文,改成英文 结果:失败(不过这一步很必要) 2:传递的xml编码换为UTF-8 结果:失败(编码应该为 ISO8859-1 ) 3.前面不行,就去微信官方签名方式测试https://pay.weixin.qq.com/...
react-native 签名打包后应用签名变更,导致微信支付接口调用失败, code -1
使用react-native开发android, 调用微信支付接口,开发模式下使用微信应用签名识别工具拿到的应用签名在微信开放平台申请的支付授权,调用支付接口正常。 在进去签名打包后应用签名发生了变更,微信支付接口调用一直报错错误码-1,折腾了一个小时才怀疑是应用签名的问题,重新识别获取应用签名发现确实发生了变更。 去微信开放平台更改应用签名后,尝试支付还是调用失败,于是去搜了下,总算找到了正...
微信小程序JSAPI支付-参数异常以及验证签名失败总结
微信小程序支付 微信小程序支付流程 如下图所示,微信支付官方给出了小程序支付的流程 微信图示开发使用步骤 用户进入小程序,选择商品服务,确认下单; 小程序前台将用户的请求以及用户信息(openid),提交到小程序后台; 小程序后台生成预订单,调用微信支付的统一下单接口,将小程序的预订单提交到微信支付; 通过返回的return_code字段,判断提交成功后,获取微信支付返回的成功信息即预付单信息...
微信支付退款 "签名错误"
  今天在做微信支付退款的时候, 一直报 &quot;签名错误&quot;, 统一下单时也是使用这个签名方法,现在怎么就不行了呢? 后来发现 退款原因  使用的是中文, 于是就去掉退款原因试了下, 结果可以了。   但是还未找到 解决 使用中文  退款原因的办法。       最后 由于春运快到了,给大家安利一个抢火车票的小程序心到抢票,微信扫码关注点击立即抢票即可 个人亲测效率很高,抢票块,价格...
微信小程序支付【官方demo使用手记】——支付签名验证错误,total_fee 不能为空
场景:统一下单成功,微信小程序支付报错——签名验证错误。 从微信支付文档,下载的demo。用与改造成小程序支付,统一下单成功后,小程序调用报错: ——签名验证错误。 解决:修改微信签名算法的配置:为MD5 //惊悚 签名类型,默认为MD5,支持HMAC-SHA256和MD5。 主要是demo的配置中,signType设置的是:HMAC-SHA256和MD5。但是小程序仅仅支持:MD5尴尬...
微信支付签名错误解决方法
由于项目需要,需要将微信支付嵌入到java web项目中,开发中一直发现签名错误问题,可是自己的签名算法久经考验,怎么会被这道坎给拦住了。 后来发现原来是在wx.config()和wx.chooseWXPay()方法中的timestamp和noncestr不一致导致的。我刚开始在wx.config()中生成了一对timestamp和noncestr,而又在chooseWXPay中生成了一对time
微信公众号支付报签名错误
微信公众号支付报签名错误接口请求返回如下:&amp;lt;xml&amp;gt;    &amp;lt;return_code&amp;gt;&amp;lt;![CDATA[FAIL]]&amp;gt;&amp;lt;/return_code&amp;gt;    &amp;lt;return_msg&amp;gt;&amp;lt;![CDATA[签名错误]]&amp;gt;&amp;lt;/return_msg&amp;gt;&amp;lt;/xml&amp;gt;按如下步骤可排查问题:1、到https:
微信小程序支付开发爬坑攻略(支付签名验证失败)
第1个坑:微信支付的api密钥(签名需要的key参数) 商户中心(https://pay.weixin.qq.com/index.php/extend/employee) – API安全 – API密钥 API密钥是不能查询,只能更新。我直接从公众号的微信支付代码中复制过来的(WxPay.Config.php中的KEY值)。 后来支付开发遇到坑,曾怀疑是API密钥(key参数)不对,就