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