解决iOS调起微信支付,显示系统繁忙

最新刚到新公司接手一个项目,当微信支付时可以跳转到微信界面,但会弹出对话框显示 '系统繁忙',点击确定就留在微信,不返回APP,然后就各种调试,微信的DEMO和接入文档都看穿了,都还没能解决问题,网上也是找了各种答案,什么降低微信支付SDK版本,还有检查传过去的参数,也反复检查了参数,确实没发现问题,也没能解决我的问题,安卓那边可以微信支付,iOS这边不行,参数都是由服务器返回的一样的参数,所以也解决参数不会有问题,然后无意中看到了网上一个哥们的问题说和友盟分享SDK冲突了,刚好这个工程也集成了友盟,然后在工程里注释掉友盟注册微信APPID的代码,在运行,完美解决了我的问题,(当然不能注释掉代码),我个人的解决方案是在调起微信支付之前用微信的API在注册一下微信的APPID(虽然在程序启动的时候已经注册过一次,不想去改动原来的代码),下面的是我的代码,在这里写下来,供以后碰到此类问题的童鞋可以参考解决问题!

#pragma 微信支付
-(void) payMwxpay:(Mwxpay *) mwxpay{
    
    // 跟友盟微信分享SDK冲突,支付时需要重新注册微信APPID一次
    // 获取plist文件路径
    NSString *path = [[NSBundle mainBundle] pathForResource:@"appchange.plist" ofType:nil];
    NSDictionary *dict = [NSDictionary dictionaryWithContentsOfFile:path];
    // 从字典中取出注册微信 appid
    [WXApi registerApp:[dict toString:@"weixin_appId"] withDescription:@"aiwufu"];
    
    PayReq* req = [[PayReq alloc] init];
//    if ([mwxpay.package isEqualToString:@"Sign=Wxpay"]) {
//        mwxpay.package=@"Sign=WXPay";
//    }
//    if (mwxpay.sign!=nil) {
//        mwxpay.sign=[mwxpay.sign uppercaseString];
//    }
    req.openID = mwxpay.appid;
    req.partnerId = mwxpay.partnerid;
    req.prepayId = mwxpay.prepayid;
    req.nonceStr = mwxpay.noncestr;
    req.timeStamp = [mwxpay.timestamp intValue];
    req.package = mwxpay.package;
    req.sign = mwxpay.sign;
    [WXApi sendReq: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 );
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值