最新剛到新公司接手一個項目,當微信支付時可以跳轉到微信界面,但會彈出對話框顯示 '系統繁忙',點擊確定就留在微信,不返回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 ); }