解决iOS调起微信支付显示系统繁忙问题
最新刚到新公司接手一个项目,当微信支付时可以跳转到微信界面,但会弹出对话框显示'系统繁忙',点击确定就留在微信,不返回APP,然后就各种调试,微信的DEMO和接入文档都看穿了,都还没能解决问题,网上也是找了各种答案,什么降低微信支付SDK版本,还有检查传过去的参数,也反复检查了参数,确实没发现问题,也没能解决我的问题,安卓那边可以微信支付,iOS这边不行,参数都是由服务器返回的一样的参数,所以也解决参数不会有问题,然后无意中看到了网上一个哥们的问题说和友盟分享SDK冲突了,刚好这个工程也集成了友盟,然后在工程里注释掉友盟注册微信APPID的代码,在运行,完美解决了我的问题,(当然不能注释掉代码),我个人的解决方案是在调起微信支付之前用微信的API在注册一下微信的APPID(虽然在程序启动的时候已经注册过一次,不想去改动原来的代码),下面的是我的代码,在这里写下来,供以后碰到此类问题的童鞋可以参考解决问题!
#pragma微信支付 -(void)payMwxpay:(Mwxpay*)mwxpay{ //跟友盟微信分享SDK冲突,支付时需要重新注册微信APPID一次 //获取plist文件路径 NSString*path=[[NSBundlemainBundle]pathForResource:@"appchange.plist"ofType:nil]; NSDictionary*dict=[NSDictionarydictionaryWithContentsOfFile:path]; //从字典中取出注册微信appid [WXApiregisterApp:[dicttoString:@"weixin_appId"]withDescription:@"aiwufu"]; PayReq*req=[[PayReqalloc]init]; //if([mwxpay.packageisEqualToString:@"Sign=Wxpay"]){ //mwxpay.package=@"Sign=WXPay"; //} //if(mwxpay.sign!=nil){ //mwxpay.sign=[mwxpay.signuppercaseString]; //} req.openID=mwxpay.appid; req.partnerId=mwxpay.partnerid; req.prepayId=mwxpay.prepayid; req.nonceStr=mwxpay.noncestr; req.timeStamp=[mwxpay.timestampintValue]; req.package=mwxpay.package; req.sign=mwxpay.sign; [WXApisendReq:req]; NSLog(@"appid=%@\npartid=%@\nprepayid=%@\nnoncestr=%@\ntimestamp=%ld\npackage=%@\nsign=%@",req.openID,req.partnerId,req.prepayId,req.nonceStr,(long)req.timeStamp,req.package,req.sign); }