支付

微信支付集成

前段時(shí)間,公司突然要在App中集成支付功能蛋哭。毫無(wú)意外的選擇了支付寶县习、微信

  • 支付寶,這里就不多說(shuō)了谆趾。按照官方的SDK文檔躁愿,一步一步,很清晰沪蓬,還有Demo演示彤钟。
  • 微信,集成就比較麻煩了跷叉。沒(méi)有系統(tǒng)的文檔逸雹,沒(méi)有官方的Demo,說(shuō)明也是這里一句性芬,那里一句峡眶,坑得要死。這里就記錄一下微信支付的集成流程植锉,以及當(dāng)中遇到的問(wèn)題。

PS:這里只介紹如何在App端完成整個(gè)支付流程峭拘,實(shí)際支付時(shí)俊庇,簽名啥的應(yīng)該是放在服務(wù)器的狮暑。


前置條件準(zhǔn)備: 申請(qǐng)開(kāi)發(fā)者賬號(hào)->注冊(cè)應(yīng)用->申請(qǐng)開(kāi)通支付功能(300/年)

官方的流程還是可以看看的

支付時(shí)序圖

  1. SDK導(dǎo)入應(yīng)用(這一步應(yīng)該不需要多說(shuō))。
  2. 預(yù)支付,微信與支付寶不一樣的地方辉饱,它先得向微信服務(wù)器進(jìn)行一個(gè)預(yù)支付操作搬男,獲取預(yù)支付idprepay_id彭沼。而這個(gè)預(yù)支付id則是用來(lái)進(jìn)行實(shí)際支付時(shí)的一個(gè)必填參數(shù)缔逛。
    // 微信的預(yù)支付接口地址
    NSString *urlString = @"https://api.mch.weixin.qq.com/pay/unifiedorder";
    NSMutableDictionary *params = [NSMutableDictionary dictionary];
    params[@"appid"] = @"應(yīng)用id";
    params[@"mch_id"] = @"商戶id";
    params[@"trade_type"] = @"APP";
    params[@"body"] = [NSString stringWithFormat:@"支付測(cè)試"];
    params[@"out_trade_no"] = number;
    params[@"total_fee"] = @((int)(price.doubleValue * 100)).description;
    params[@"notify_url"] = @"http://api.cloud.com";
    params[@"nonce_str"] = @"5K8264ILTKCH16CQ2502SI8ZNMTM67VS";
    params[@"attach"] = @"杭州分店";
    params[@"spbill_create_ip"] = @"192.168.1.1";
    params[@"device_info"] = @"WEB";
    params[@"sign"] = [self sign];

    [self.manager POST:urlString parameters:[WXPayHelper toXML:params] progress:nil success:^(NSURLSessionDataTask *_Nonnull task, NSData *data) {
        NSLog(@"%@", [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]);
        NSXMLParser *parser = [[NSXMLParser alloc] initWithData:data];
        parser.delegate = self;
        BOOL success = [parser parse];
        NSLog(@"解析:%d", success);
    } failure:^(NSURLSessionDataTask *_Nullable task, NSError *_Nonnull error) {
        NSLog(@"%@", error);
        self.req = nil;
        PayResp *resp = [PayResp new];
        resp.errCode = (int)error.code;
        resp.errStr = error.localizedDescription;
    }];
預(yù)支付返回內(nèi)容
<xml>
      <return_code><![CDATA[SUCCESS]]></return_code>
      <return_msg><![CDATA[OK]]></return_msg>
      <appid><![CDATA[返回的appid]]></appid>
      <mch_id><![CDATA[商戶id]]></mch_id>
      <nonce_str><![CDATA[IITRi8Iabbblz1Jc]]></nonce_str>
      <sign><![CDATA[7921E432F65EB8ED0CE9755F0E86D72F]]></sign>
      <result_code><![CDATA[SUCCESS]]></result_code>
      <prepay_id> <![CDATA[wx201411101639507cbf6ffd8b0779950874]]></prepay_id>
      <trade_type><![CDATA[APP]]></trade_type>
</xml> 
注意,你在調(diào)試的時(shí)候姓惑,可能會(huì)發(fā)現(xiàn)此事返回的sign簽名與請(qǐng)求時(shí)傳上去的不一樣褐奴,沒(méi)關(guān)系,可能時(shí)他那邊后臺(tái)做過(guò)處理于毙。此時(shí)你只需要解析prepay_id字段就好了敦冬。
  1. 支付,利用第二步獲取到的預(yù)支付id,發(fā)起支付請(qǐng)求。
PayReq *request = [[PayReq alloc] init];
request.partnerId = @"商戶id";
request.prepayId= @"上一步返回的預(yù)支付id";
request.package = @"Sign=WXPay";
request.nonceStr= @"隨機(jī)字符串";
request.timeStamp = @"時(shí)間戳";
request.sign= [self sign]; // 簽名
[WXApi sendReq:request];

不得不吐槽的是微信的支付回調(diào)居然是delegate唯沮,而沒(méi)有用上現(xiàn)在主流的block脖旱。

-(void)onResp:(BaseResp*)resp
{
      if ([respisKindOfClass:[PayRespclass]])
          {
        PayResp*response=(PayResp*)resp;
        switch(response.errCode){
                   caseWXSuccess:
                        //服務(wù)器端查詢(xún)支付通知或查詢(xún)API返回的結(jié)果再提示成功
                        NSlog(@"支付成功");
                        break;
                        default:
                        NSlog(@"支付失敗,retcode=%d",resp.errCode);
                        break;
                  }
          }
}

基本上這到這一步就沒(méi)啥問(wèn)題了介蛉。

  1. 遇到的問(wèn)題
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市币旧,隨后出現(xiàn)的幾起案子踊兜,更是在濱河造成了極大的恐慌,老刑警劉巖佳恬,帶你破解...
    沈念sama閱讀 218,386評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件捏境,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡毁葱,警方通過(guò)查閱死者的電腦和手機(jī)垫言,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)倾剿,“玉大人筷频,你說(shuō)我怎么就攤上這事∏岸唬” “怎么了凛捏?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,704評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)芹缔。 經(jīng)常有香客問(wèn)我坯癣,道長(zhǎng),這世上最難降的妖魔是什么最欠? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,702評(píng)論 1 294
  • 正文 為了忘掉前任示罗,我火速辦了婚禮惩猫,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘蚜点。我一直安慰自己轧房,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,716評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布绍绘。 她就那樣靜靜地躺著奶镶,像睡著了一般袍辞。 火紅的嫁衣襯著肌膚如雪笔横。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,573評(píng)論 1 305
  • 那天买雾,我揣著相機(jī)與錄音藻丢,去河邊找鬼剪撬。 笑死,一個(gè)胖子當(dāng)著我的面吹牛悠反,可吹牛的內(nèi)容都是我干的残黑。 我是一名探鬼主播,決...
    沈念sama閱讀 40,314評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼斋否,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼梨水!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起茵臭,我...
    開(kāi)封第一講書(shū)人閱讀 39,230評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤疫诽,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后旦委,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體奇徒,經(jīng)...
    沈念sama閱讀 45,680評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,873評(píng)論 3 336
  • 正文 我和宋清朗相戀三年缨硝,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了摩钙。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,991評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡查辩,死狀恐怖胖笛,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情宜岛,我是刑警寧澤长踊,帶...
    沈念sama閱讀 35,706評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站萍倡,受9級(jí)特大地震影響身弊,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,329評(píng)論 3 330
  • 文/蒙蒙 一佑刷、第九天 我趴在偏房一處隱蔽的房頂上張望莉擒。 院中可真熱鬧酿炸,春花似錦瘫絮、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,910評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至扁眯,卻和暖如春壮莹,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背姻檀。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,038評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工命满, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人绣版。 一個(gè)月前我還...
    沈念sama閱讀 48,158評(píng)論 3 370
  • 正文 我出身青樓胶台,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親杂抽。 傳聞我的和親對(duì)象是個(gè)殘疾皇子诈唬,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,941評(píng)論 2 355

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

  • iOS支付 iOS支付分為兩類(lèi),第三方支付和應(yīng)用內(nèi)支付(內(nèi)購(gòu))缩麸。 第三方支付包括:支付寶支付铸磅、微信支付、銀聯(lián)支付杭朱、...
    請(qǐng)輸入賬號(hào)名閱讀 6,205評(píng)論 3 22
  • 自己總結(jié)的微信支付寶支付流程和注意點(diǎn): 準(zhǔn)備工作: 需要公司的營(yíng)業(yè)執(zhí)照阅仔,稅務(wù)信息,等老板的身份證信息等弧械,我記得八酒,用...
    Www劉閱讀 18,566評(píng)論 2 50
  • 引言 秋高氣爽丘跌,天氣轉(zhuǎn)涼,正是學(xué)習(xí)工作做的好時(shí)候唁桩。(~ ̄▽?zhuān)?~~(~ ̄▽?zhuān)?~ 我是個(gè)phper最近在寫(xiě)微信支付...
    恩就是這個(gè)名閱讀 7,965評(píng)論 2 15
  • 2015/6/25闭树,從南京一路到福州,第一次坐飛機(jī)荒澡,注定是滿是好奇报辱,從上飛機(jī)到坐下,各種注意事項(xiàng)都是銘記于心单山,我希...
    暮光雨澤閱讀 305評(píng)論 0 1
  • 曾經(jīng)滄海難為水,除卻巫山不是云昼接。取次花叢懶回顧爽篷,半緣修道半緣君÷——元稹《離思五首·其四》 看到這首詩(shī)逐工,覺(jué)得它表達(dá)...
    無(wú)語(yǔ)呤咽閱讀 3,053評(píng)論 10 10