亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > iOS > 正文

iOS微信支付開發案例

2020-07-26 03:15:24
字體:
來源:轉載
供稿:網友

微信支付有很多坑的,官方提供的文檔一點都不全面,而且demo也比較”羞澀”難懂。很多注意的細節都沒有體現出來,走了很多彎路。于是,系統的開發流程如下。(完整的demo附在博客最后面)這里面包括微信支付開發和支付寶開發調用客戶端的兼容處理。(兩次簽名放在移動端,博客中沒提到沒安裝微信客戶端的情況,也很簡單[WXApi sendReq:request]調用這個方法的返回值為0即可判斷。)

一、環境配置

1、首先是https協議訪問,在plist設置白名單

這里寫圖片描述

2、當你工程中有微信分享、收藏、支付、登錄等,需要在“Info.plist”里增加如下代碼(LSApplicationQueriesSchemes)

這里寫圖片描述

3、解決bitcode編譯不過問題

這里寫圖片描述

4、設置URL types

這里寫圖片描述

5、導入SDK(可從微信官方的demo移植過來)

這里寫圖片描述

6、導入系統依賴庫

這里寫圖片描述

7、特別要注意的是

微信支付是以分為單位的,也就是說,如果你支付金額是保留兩位小數,支付的金額必須*100后再傳給微信支付平臺,其他的依次類推。

二、代碼開發

1、在程序入口(即applegate.m)需要進行的操作

這里寫圖片描述

2、增加如下代理方法,否則不回調微信客服端(也是在delegate.m文件中)

這里寫圖片描述

3、微信支付成功的回調函數

這個有必要說明下,官方文檔是這樣說明的:不能以客服端支付成功的結果就直接當做是訂單支付成功的結果,要以服務器返回的訂單狀態為準,也就是說,客服端支付成功后,微信支付平臺會給服務器發送支付成功的消息,后臺修改訂單狀態,重新返回給客戶端。簡單就是,支付成功要發送給特定的視圖控制器(帶有微信支付功能的視圖控制器)發送通知,讓這個特定的視圖控制去請求服務器訂單的住狀態。這個回調函數必須寫在delegate.m中!!!

4、特定視圖控制器的代碼(帶有微信支付功能的視圖控制器)
4.1 提交預支付訂單獲得預訂單id(這個過程必須經過兩次簽名,分別是不帶參數簽名和攜帶參數簽名,當然,這些方法都已經在payRequsestHandler類封裝好了,你只需要傳參數調用方法就可以了)這個也是點擊支付按鈕的動作方法

4.2得到預支付訂單,那么就可以調微信支付的客服端(4.2和4.1代碼是連續的)


附帶sign參數簽名的獨立封裝的兩個方法,沒用payRequsestHandler封裝的方法,自己寫的,因為用了出現問題(問題截圖如下),先代碼截圖,后面再提供可直接復制黏貼的代碼塊
問題截圖:(相信很多人遇到過,100%是sign簽名的問題)

這里寫圖片描述 

方法一:

 

方法二:

這里寫圖片描述

4.3 上面的代碼就可以完全解決微信支付問題,剩下最后一個步驟,支付成功返回app調用delegate的-(void)onResp:(BaseResp*)resp方法,那么這里要發送通知給特定的視圖控制器,讓他去請求后臺的訂單狀態。這里要說明的是,你從那個界面調的微信支付后,返回還是在原處。只是回調方法必須在delegate中,所以必須在回調方法發送成功的通知。那么要在特定的視圖控制器的視圖即將出現的方法中,監聽到這個通知,然后請求后臺的訂單狀態。這里需要注意的是,需要重寫dealloc方法,移除通知。

這里寫圖片描述

三、支付寶和微信支付的回調客戶端的代理方法的兼容處理

這里寫圖片描述

四、demo分享地址

http://xiazai.VeVB.COm/201608/yuanma/IOSwxPay(VeVB.COm).rar

可供復制黏貼的代碼(sign簽名)

-(NSString )createMD5SingForPay:(NSString )appid_key partnerid:(NSString)partnerid_key prepayid:(NSString )prepayid_key package:(NSString )package_key noncestr:(NSString)noncestr_key timestamp:(UInt32)timestamp_key { NSMutableDictionary *signParams = [NSMutableDictionary dictionary]; [signParams setObject:appid_key forKey:@”appid”]; [signParams setObject:noncestr_key forKey:@”noncestr”]; [signParams setObject:package_key forKey:@”package”]; [signParams setObject:partnerid_key forKey:@”partnerid”]; [signParams setObject:prepayid_key forKey:@”prepayid”]; [signParams setObject:[NSString stringWithFormat:@”%u”,(unsigned int)timestamp_key] forKey:@”timestamp”];NSMutableString *contentString =[NSMutableString string]; NSArray *keys = [signParams allKeys]; //按字母順序排序 NSArray *sortedArray = [keys sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {return [obj1 compare:obj2 options:NSNumericSearch]; }]; //拼接字符串 for (NSString *categoryId in sortedArray) { if ( ![[signParams objectForKey:categoryId] isEqualToString:@”“] && ![[signParams objectForKey:categoryId] isEqualToString:@”sign”] && ![[signParams objectForKey:categoryId] isEqualToString:@”key”] ) { [contentString appendFormat:@”%@=%@&”, categoryId, [signParams objectForKey:categoryId]];} } //添加商戶密鑰key字段 [contentString appendFormat:@”key=%@”, @”這里填寫商戶密鑰”]; NSString *result = [self md5:contentString]; return result;}//創建發起支付時的sige簽名-(NSString ) md5:(NSString )str { const char *cStr = [str UTF8String]; unsigned char result[16]= “0123456789abcdef”; CC_MD5(cStr, (CC_LONG)strlen(cStr), result); //這里的x是小寫則產生的md5也是小寫,x是大寫則md5是大寫,這里只能用大寫,微信的大小寫驗證很逗 return [NSString stringWithFormat: @”%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X”, result[0], result[1], result[2], result[3], result[4], result[5], result[6], result[7], result[8], result[9], result[10], result[11], result[12], result[13], result[14], result[15] ]; }//MD5 加密

微信支付下載demo:http://xiazai.VeVB.COm/201608/yuanma/iosweixinPay(VeVB.COm).rar

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91免费人成网站在线观看18| 日韩av观看网址| 另类少妇人与禽zozz0性伦| xxx欧美精品| 精品综合久久久久久97| 伊人久久男人天堂| 欧美性猛交xxxx| 国产噜噜噜噜噜久久久久久久久| 国内精品伊人久久| 2019av中文字幕| 日韩av在线免费| 亚洲欧美精品一区二区| 国内免费久久久久久久久久久| 川上优av一区二区线观看| 这里只有精品视频在线| 国产噜噜噜噜噜久久久久久久久| 97视频色精品| 国产精品欧美一区二区| 亚洲成在人线av| 国内成人精品视频| 国产精品久久久久久网站| 亚洲综合成人婷婷小说| 狠狠色噜噜狠狠狠狠97| 亚洲高清色综合| 国产精品免费电影| 亚洲欧美另类国产| 国产精品久久一区主播| 日韩在线观看电影| 久久久伊人日本| 欧美高清在线播放| 国产精品色午夜在线观看| 精品亚洲一区二区三区| 亚洲xxxx做受欧美| 欧美电影第一页| 欧美精品在线免费播放| 久久国产精品免费视频| 久久久999国产| 日韩中文字幕视频在线观看| 国产精品欧美日韩久久| 插插插亚洲综合网| 亚洲3p在线观看| 国产成人拍精品视频午夜网站| 日韩一区视频在线| 136fldh精品导航福利| 欧美午夜精品久久久久久浪潮| 欧美伊久线香蕉线新在线| 国产男女猛烈无遮挡91| 91成人福利在线| 久久激情视频免费观看| 国产在线观看精品一区二区三区| 日韩av在线影院| 97精品一区二区视频在线观看| 欧洲精品毛片网站| 欧美成人免费观看| 亚洲最大成人在线| 97超视频免费观看| 亚洲国产日韩欧美综合久久| 国产午夜精品全部视频播放| 精品高清美女精品国产区| 国产精品久久av| 久久久久久久久久av| 国产精品极品美女粉嫩高清在线| 日韩av电影在线播放| 亚洲日韩中文字幕| 亚洲日韩中文字幕在线播放| 亚洲国产天堂久久国产91| 久久久精品国产一区二区| 国产z一区二区三区| 国产91精品高潮白浆喷水| 日韩av免费观影| 欧美一区二区大胆人体摄影专业网站| 亚洲欧美中文另类| 亚洲男人天堂网站| 亚洲欧美国产精品专区久久| 国产一区二区三区在线观看网站| 午夜精品福利在线观看| 精品国产91久久久久久老师| 国产亚洲精品91在线| 国产精品自拍视频| 中文字幕精品一区久久久久| 久久久久日韩精品久久久男男| 国产精品久久久久高潮| 色小说视频一区| 黑人巨大精品欧美一区二区| 国产午夜精品美女视频明星a级| 国产成人精品视频在线| 久热爱精品视频线路一| 欲色天天网综合久久| 奇米影视亚洲狠狠色| 亚洲激情电影中文字幕| 欧美精品在线极品| 777777777亚洲妇女| 久久久久久香蕉网| 永久免费看mv网站入口亚洲| 国产精品视频中文字幕91| 久久精品视频免费播放| 亚洲аv电影天堂网| 久久精品99久久久香蕉| 亚洲午夜女主播在线直播| 欧美成人激情视频免费观看| 26uuu亚洲国产精品| 亚洲二区在线播放视频| 久久在精品线影院精品国产| 国产欧美日韩91| 欧美丰满片xxx777| 欧美裸体xxxx极品少妇软件| 亚洲国产91精品在线观看| 日产日韩在线亚洲欧美| 最新国产精品亚洲| 亚洲男人天堂网| 精品久久久久久亚洲国产300| 九色精品美女在线| 日韩在线观看免费高清完整版| 日本伊人精品一区二区三区介绍| 久久亚洲精品小早川怜子66| 色哟哟亚洲精品一区二区| 成人黄色影片在线| 一区二区三区国产视频| 欧美性生交xxxxx久久久| 精品久久香蕉国产线看观看亚洲| 日韩电影中文字幕| 91香蕉国产在线观看| 538国产精品一区二区在线| 日韩精品亚洲视频| 色狠狠av一区二区三区香蕉蜜桃| 欧美激情videos| 久久久久久久久久国产| 欧美精品video| 狠狠躁18三区二区一区| 国产欧美精品在线播放| 久久国产色av| 国产日韩专区在线| 国产一区二区日韩精品欧美精品| 欧美中文字幕在线| 在线午夜精品自拍| 亚洲精品欧美一区二区三区| 日韩免费精品视频| 久久久久久久影院| 日本精品性网站在线观看| 欧美性猛交xxxx乱大交极品| 亚洲综合小说区| 久久影院资源网| 91产国在线观看动作片喷水| 国产午夜精品全部视频在线播放| 欧美天天综合色影久久精品| 久久av在线播放| 国产精品久在线观看| 欧美视频在线观看免费网址| 亚洲成人在线视频播放| 一本久久综合亚洲鲁鲁| 国产精品久久久久久久久久久久久久| 日韩电影中文字幕在线| 性欧美亚洲xxxx乳在线观看| 欧日韩不卡在线视频| 日本精品中文字幕| 欧美黑人性生活视频| 国产精品久久久久91| 国产日韩欧美夫妻视频在线观看| 亚洲系列中文字幕| 久久国产精品久久国产精品| 最近2019中文字幕在线高清| 久久久国产精品亚洲一区| 神马久久桃色视频| 97国产精品视频|