iOS接入微信支付不走onResp:(BaseResp *)resp的回調(diào)方法

先來幾個微信官方鏈接灶似,接入指南
1奶赔、1.8.6之后微信使用了Universal Links方式跳轉(zhuǎn)碾阁,這篇文章是1.8.6的接入指引https://developers.weixin.qq.com/doc/oplatform/Mobile_App/Access_Guide/iOS.html
2、sdk下載鏈接 https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=11_1
3予权、IOS開發(fā)要點說明 https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=8_5
說幾個重點:
1昂勉、下載sdk到工程中,配置工程扫腺,SDK必要的dylib或者framework文件岗照,確保在Link Binary With Libraries里加入以下Library

SystemConfiguration.framework,
libz.dylib,
libsqlite3.0.dylib,
libc++.dylib
CoreTelephony.frame

上面這些在官方的demo配置里有,你可以照著配一下,運行成功就行了

2谴返、按照接入指引進(jìn)行接入煞肾,在appdelegate里注冊appid和Universal Links,Universal Links必須為一個https的鏈接,如果你想看微信支付的log日志嗓袱,可以在注冊之前籍救,輸入如下代碼

[WXApi startLogByLevel:WXLogLevelDetail logBlock:^(NSString * _Nonnull log) {
    NSLog(@"WX-------%@", log);
}];

這個可以告知你哪個步驟有問題

3、在你需要的類里面調(diào)起微信渠抹,步驟一般是這樣的
①客戶端請求server的預(yù)支付訂單接口蝙昙,server會返回預(yù)支付的信息
②返回成功之后,用下面的結(jié)構(gòu)調(diào)起微信

//調(diào)起微信支付
            PayReq* req             = [[PayReq alloc] init];
            req.partnerId           = weakSelf.payModel.wxPrePayItem.partnerid;
            req.prepayId            = weakSelf.payModel.wxPrePayItem.prepayid;
            req.nonceStr            = weakSelf.payModel.wxPrePayItem.noncestr;
            UInt32 timeStamp =[weakSelf.payModel.wxPrePayItem.timestamp intValue];
            req.timeStamp= timeStamp;
            req.package             = weakSelf.payModel.wxPrePayItem.package;
            req.sign                = weakSelf.payModel.wxPrePayItem.paySign;
            [WXApi sendReq:req completion:nil];

③ [WXApi sendReq:req completion:nil];這句話就是調(diào)起微信的意思梧却,之后你需要采集微信的回調(diào)奇颠,這個地方需要設(shè)置一個單例類,因為微信返回拉起我們的應(yīng)用是在appdelegate里面的這個方法

    - (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:    (NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options
{
    if ([url.host isEqualToString:@"pay"]) {
        return [WXApi handleOpenURL:url delegate:[WXApiManager     sharedManager]];
    }
return YES;
}

這個方法需要傳一個delegate放航,這個delegate就是回調(diào)onResp:(BaseResp *)resp的地方烈拒,而這個地方,需要把這個方法拋出去到你使用的類里广鳍,所以delegate寫這個單例荆几,單例里需要寫兩個回調(diào)方法,拋一個代理赊时,

+(instancetype)sharedManager {
static dispatch_once_t onceToken;
static WXApiManager *instance;
dispatch_once(&onceToken, ^{
    instance = [[WXApiManager alloc] init];
});
return instance;
}

#pragma mark - WXApiDelegate
- (void)onResp:(BaseResp *)resp {
    if([resp isKindOfClass:[PayResp class]]){
        //支付返回結(jié)果吨铸,實際支付結(jié)果需要去微信服務(wù)器端查詢
        NSString *strMsg,*strTitle = [NSString stringWithFormat:@"支付結(jié)果"];
        
        switch (resp.errCode) {
            case WXSuccess:
                strMsg = @"支付結(jié)果:成功!";
                NSLog(@"支付成功-PaySuccess祖秒,retcode = %d", resp.errCode);
                if ([self.delegate respondsToSelector:@selector(paySuccessWithResp:)]) {
                    [self.delegate paySuccessWithResp:resp];
                }
                break;
            
            default:
                strMsg = [NSString stringWithFormat:@"支付結(jié)果:失數ā!retcode = %d, retstr = %@", resp.errCode,resp.errStr];
                NSLog(@"錯誤竭缝,retcode = %d, retstr = %@", resp.errCode,resp.errStr);
                if ([self.delegate respondsToSelector:@selector(payErrorWithResp:)]) {
                    [self.delegate payErrorWithResp:resp];
                }
                break;
        }

    }else {
    }
}

- (void)onReq:(BaseReq *)req {

}

④在你調(diào)起微信那個類里面房维,寫

  [WXApiManager sharedManager].delegate = self;

之后就是把那兩個delegate拋出去就可以了。

記住使用delegate的時候統(tǒng)一到WXApiManager里做處理就行抬纸,系統(tǒng)回調(diào)給微信的代理入口都是 [WXApiManager sharedManager]就OK

重點:1咙俩、在info.plist里面配置兩個微信的跳轉(zhuǎn)白名單,在URLType里配置你的appid
2松却、delegate的唯一性,不要給微信的delegate到處設(shè)置“self”溅话,這樣回調(diào)回來就找不到代理方法了晓锻,從而就找不到要回調(diào)的位置

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市良漱,隨后出現(xiàn)的幾起案子吭服,更是在濱河造成了極大的恐慌惊来,老刑警劉巖岸霹,帶你破解...
    沈念sama閱讀 206,839評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件躁锁,死亡現(xiàn)場離奇詭異纷铣,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)战转,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評論 2 382
  • 文/潘曉璐 我一進(jìn)店門搜立,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人槐秧,你說我怎么就攤上這事啄踊。” “怎么了刁标?”我有些...
    開封第一講書人閱讀 153,116評論 0 344
  • 文/不壞的土叔 我叫張陵颠通,是天一觀的道長。 經(jīng)常有香客問我膀懈,道長顿锰,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,371評論 1 279
  • 正文 為了忘掉前任启搂,我火速辦了婚禮硼控,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘狐血。我一直安慰自己淀歇,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,384評論 5 374
  • 文/花漫 我一把揭開白布匈织。 她就那樣靜靜地躺著浪默,像睡著了一般。 火紅的嫁衣襯著肌膚如雪缀匕。 梳的紋絲不亂的頭發(fā)上纳决,一...
    開封第一講書人閱讀 49,111評論 1 285
  • 那天,我揣著相機(jī)與錄音乡小,去河邊找鬼阔加。 笑死,一個胖子當(dāng)著我的面吹牛满钟,可吹牛的內(nèi)容都是我干的胜榔。 我是一名探鬼主播,決...
    沈念sama閱讀 38,416評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼湃番,長吁一口氣:“原來是場噩夢啊……” “哼夭织!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起吠撮,我...
    開封第一講書人閱讀 37,053評論 0 259
  • 序言:老撾萬榮一對情侶失蹤尊惰,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體弄屡,經(jīng)...
    沈念sama閱讀 43,558評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡题禀,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,007評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了膀捷。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片迈嘹。...
    茶點故事閱讀 38,117評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖担孔,靈堂內(nèi)的尸體忽然破棺而出江锨,到底是詐尸還是另有隱情,我是刑警寧澤糕篇,帶...
    沈念sama閱讀 33,756評論 4 324
  • 正文 年R本政府宣布啄育,位于F島的核電站,受9級特大地震影響拌消,放射性物質(zhì)發(fā)生泄漏挑豌。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,324評論 3 307
  • 文/蒙蒙 一墩崩、第九天 我趴在偏房一處隱蔽的房頂上張望氓英。 院中可真熱鬧,春花似錦鹦筹、人聲如沸铝阐。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽徘键。三九已至,卻和暖如春遍蟋,著一層夾襖步出監(jiān)牢的瞬間吹害,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評論 1 262
  • 我被黑心中介騙來泰國打工虚青, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留它呀,地道東北人。 一個月前我還...
    沈念sama閱讀 45,578評論 2 355
  • 正文 我出身青樓棒厘,卻偏偏與公主長得像纵穿,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子篙耗,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,877評論 2 345

推薦閱讀更多精彩內(nèi)容