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

首頁 > 系統 > iOS > 正文

iOS集成微信支付開發

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

本文實例為大家分享了iOS集成微信支付開發代碼,供大家參考,具體內容如下

首先需要理清楚流程:

1、用戶使用APP客戶端,選擇商品下單。
2、商戶客戶端(就是你做的APP)將用戶的商品數據傳給商戶服務器,請求生成支付訂單。
3、商戶后臺調用統一下單API向微信的服務器發送請求,微信服務器生成預付單,并生成一個prepay_id返回給商戶后臺。
4、商戶后臺將這個prepay_id返回給商戶客戶端。
5、用戶點擊確認支付,這時候商戶客戶端調用SDK打開微信客戶端,進行微信支付。
6、微信客戶端向微信服務器發起支付請求并返回支付結果(他們之間交互用的就是prepay_id這個參數,微信的服務器要驗證微信客戶端傳過去的參數是否跟第三步中生成的那個id一致)。
7、用戶輸入支付密碼后,微信客戶端提交支付授權,跟微信服務器交互,完成支付
8、微信服務器給微信客戶端發送支付結果提示,并異步給商戶服務器發送支付結果通知。
9、商戶客戶端通過支付結果回調接口查詢支付結果,并向后臺檢查支付結果是否正確,后臺返回支付結果。
10、商戶客戶端顯示支付結果,完成訂單,發貨。

雖然看起來有點多,但是理解起來并不復雜,跟我們平時手機上買東西是一樣的。我們客戶端需要做的就是

調起微信客戶端發起支付
顯示支付結果

集成過程

首先是要下載SDK

微信SDK下載

建議頭文件和示例都下載出來看看。(吐槽下,官方的示例難看死了,看的眼暈!注釋都沒幾個。。。鄙視之)

導入微信支付SDK庫

導入上面那個iOS頭文件和庫下載下載出來的SDK包的就行啦,我這里的是SDK1.6.2. 然后需要鏈接上依賴庫,在Target ―> BuildPhases ―> Link Binary With Libraries― 點擊+號 -> 搜索你需要的系統庫。

SystemConfiguration.framework
libz.tbd
libsqlite3.0.tbd
CoreTelephony.framework
QuartzCore.framework

設置URL Scheme

在注冊微信平臺APP的時候,會給一個唯一識別標識符(APPID),在APP端開發步驟里面說得很清楚了,需要填在URL Schemes這個地方,


URL scheme

在Appdelegate中注冊APPID
如下:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {  // Override point for customization after application launch.  /**   * 向微信終端注冊ID,這里的APPID一般建議寫成宏,容易維護。@“測試demo”不需用管。這里的id是假的,需要改這里還有target里面的URL Type   */  [WXApi registerApp:@"wxd930ea5d5a258f4f" withDescription:@"測試demo"];  return YES;}

處理微信通過URL啟動時傳遞的數據

//前面的兩個方法被iOS9棄用了,如果是Xcode7.2網上的話會出現無法進入進入微信的onResp回調方法,就是這個原因。本來我是不想寫著兩個舊方法的,但是一看官方的demo上寫的這兩個,我就也寫了。。。。//9.0前的方法,為了適配低版本 保留- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url{  return [WXApi handleOpenURL:url delegate:self];}- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation{  return [WXApi handleOpenURL:url delegate:self];}//9.0后的方法- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString *,id> *)options{  //這里判斷是否發起的請求為微信支付,如果是的話,用WXApi的方法調起微信客戶端的支付頁面(://pay 之前的那串字符串就是你的APPID,)    return [WXApi handleOpenURL:url delegate:self];}//微信SDK自帶的方法,處理從微信客戶端完成操作后返回程序之后的回調方法,顯示支付結果的-(void) onResp:(BaseResp*)resp{   //啟動微信支付的response  NSString *payResoult = [NSString stringWithFormat:@errcode:%d, resp.errCode];  if([resp isKindOfClass:[PayResp class]]){    //支付返回結果,實際支付結果需要去微信服務器端查詢    switch (resp.errCode) {      case 0:        payResoult = @支付結果:成功!;        break;      case -1:        payResoult = @支付結果:失??!;        break;      case -2:        payResoult = @用戶已經退出支付!;        break;      default:        payResoult = [NSString stringWithFormat:@支付結果:失??!retcode = %d, retstr = %@, resp.errCode,resp.errStr];        break;    }  }}

 最重要的來了?。?!

調用微信支付前,需要下單、簽名等操作,以便獲取微信支付所必要的參數。為了提高安全性,下單、簽名操作一般是在后臺完成,在前臺做的話被捕獲改信息就不開心了。。。。。

需要的參數包括:appid、partid(商戶號)、prepayid(預支付訂單ID)、noncestr(參與簽名的隨機字符串)、timestamp(參與簽名的時間戳)、sign(簽名字符串)這六個。
在點擊支付的控制器中使用核心代碼來調起微信客戶端支付,這些個參數都是后臺傳給你的。 加上了注釋,應該很好理解的。

#pragma mark 微信支付方法- (void)WXPay{    //需要創建這個支付對象    PayReq *req  = [[PayReq alloc] init];    //由用戶微信號和AppID組成的唯一標識,用于校驗微信用戶    req.openID = @"";    // 商家id,在注冊的時候給的    req.partnerId = @"";    // 預支付訂單這個是后臺跟微信服務器交互后,微信服務器傳給你們服務器的,你們服務器再傳給你    req.prepayId = @"";    // 根據財付通文檔填寫的數據和簽名    //這個比較特殊,是固定的,只能是即req.package = Sign=WXPay    req.package  = @"";    // 隨機編碼,為了防止重復的,在后臺生成    req.nonceStr = @"";    // 這個是時間戳,也是在后臺生成的,為了驗證支付的    NSString * stamp = @"";    req.timeStamp = stamp.intValue;    // 這個簽名也是后臺做的    req.sign = @"";    //發送請求到微信,等待微信返回onResp    [WXApi sendReq:req];}

這個JSON里面的數據(上面的參數)就是后臺需要傳給你的,至于怎么來,也有后臺的文檔,讓他去看下就行啦~~~

{ "appid": "wxb4ba3c02aa476ea1", "noncestr": "d1e6ecd5993ad2d06a9f50da607c971c", "package": "Sign=WXPay", "partnerid": "10000100", "prepayid": "wx20160218122935e3753eda1f0066087993", "timestamp": "1455769775", "sign": "F6DEE4ADD82217782919A1696500AF06"}

--統一下單API

--調起支付接口

到這里,不出意外的話應該都能正常的支付了。流程最重要,理解了就知道怎么做了,強烈建議需要做的朋友們先理理思路,不要急著下手。

PS:這篇文章中,簽名都是在后臺做的,如果需要在你客戶端做,可以參考下這篇文章,和這篇文章,他們的簽名在客戶端做的,寫的也比較詳細了。

可能遇到的問題

1.如果支付完成后,一直留在微信,那就檢查下URLType中的Scheme設置問題。

2.能夠打開微信客戶端,但是打開后只有中間一個白色的 “確定按鈕”,點擊后會回到客戶端上,如果是這樣,那應該是prepayid 參數的問題,過期了,或者不是真實的id。代碼沒有問題的。特別注意的是,微信要兩次簽名,兩次~~~~

3.如果APP里面使用了友盟或者ShareSDK做分享,那就不用再導入SDK了,否則會出現一些詭異的問題,例如無法調起手機微信客戶端、無法調起微信客戶端web頁面,調起了但是一閃而過。。。這都基本上都是因為分享的SDK里面已經包括了微信的SDK。所以如果出現詭異的錯誤了看看是不是兩個沖突了!

4.微信支付的單位是分,被坑過的人都知道了。。。。哎。

如果在集成過程中遇到什么問題,大家可以一起討論下

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美日韩中文在线观看| 国产一区二区三区精品久久久| 欧美成年人视频网站| 美女国内精品自产拍在线播放| 欧美激情亚洲视频| 日韩电影在线观看永久视频免费网站| 国内精品久久久久| 亚洲第一页在线| 日韩中文字幕免费看| 成人精品一区二区三区电影免费| 欧美日韩中文字幕| 久久久精品一区二区| 亚洲欧美日韩久久久久久| 亚洲国产成人在线视频| 国产成人精品av| 性日韩欧美在线视频| 国产日韩欧美影视| 欧美最猛性xxxx| 国产成人综合精品| 97在线观看视频| 日韩欧美在线字幕| 亚洲国产一区二区三区在线观看| 亚洲男人av电影| 久久久久免费精品国产| 亚洲天堂男人的天堂| 欧美日韩中文字幕| 国产成人在线视频| 91爱爱小视频k| 欧美日韩在线视频首页| 久久国产精品久久精品| 欧美日韩国产一区中文午夜| 中文字幕日本精品| 欧美色图在线视频| 亚洲欧美精品一区二区| 亚洲成人黄色网| 亚洲精品成a人在线观看| 日韩亚洲一区二区| 亚洲欧洲日本专区| 97视频在线观看视频免费视频| 国产精品一二三在线| 伊人久久五月天| 欧美激情影音先锋| 亚洲激情自拍图| www欧美日韩| 国产精品久久久久高潮| 日韩av在线影院| 日韩经典中文字幕| 欧美日韩亚洲精品一区二区三区| 俺也去精品视频在线观看| 亚洲天堂av女优| 欧美日韩中文字幕在线视频| 成人免费视频网| 热久久免费视频精品| 亚洲午夜未删减在线观看| 亚洲欧美日韩网| 欧美激情videos| 欧美色视频日本版| 一本色道久久88综合亚洲精品ⅰ| 国产成人精品视频| 欧美视频在线免费| 亚洲精品日韩久久久| 亚洲天堂免费在线| 欧美精品在线免费观看| 亚洲性视频网址| 色偷偷噜噜噜亚洲男人| 日本精品免费观看| 欧美成人午夜影院| 亚洲人成在线观| 91免费看片在线| 91九色国产社区在线观看| 欧美日韩国产第一页| 精品少妇一区二区30p| 黑人巨大精品欧美一区免费视频| 国产一区二区三区在线观看视频| 日本亚洲精品在线观看| 久久精品国产精品| 国产一区二区三区在线视频| 欧美精品video| 国产欧亚日韩视频| 国产精品视频久久| 欧美日韩在线视频观看| 国产91露脸中文字幕在线| 国产精品男女猛烈高潮激情| 中文字幕亚洲第一| 成人国产精品一区二区| 久久久免费在线观看| 黄色一区二区在线| 欧美精品精品精品精品免费| 日韩a**站在线观看| 久久国产精品影视| xxxxxxxxx欧美| 日韩成人中文字幕| 亚洲淫片在线视频| 国产精品日韩欧美综合| 中文字幕免费精品一区高清| 91精品国产91久久久久久| 亚洲精品日产aⅴ| 亚洲aa在线观看| 日韩免费高清在线观看| 亚洲精品欧美日韩专区| 在线看欧美日韩| 日韩在线中文视频| 亚洲在线一区二区| 国产精品video| 亚洲欧美日韩精品久久亚洲区| 欧美疯狂做受xxxx高潮| 日韩国产在线播放| 亚洲无限乱码一二三四麻| 全球成人中文在线| 超碰97人人做人人爱少妇| 性欧美亚洲xxxx乳在线观看| 国产精品18久久久久久麻辣| 亚洲最新av在线网站| 亚洲自拍另类欧美丝袜| 国产精品高潮呻吟久久av无限| 92看片淫黄大片看国产片| www高清在线视频日韩欧美| 久久久久久中文| 亚洲女人天堂av| 欧美午夜无遮挡| 欧美特级www| 久久亚洲精品网站| 丝袜一区二区三区| 97香蕉超级碰碰久久免费的优势| 亚洲成avwww人| 国产精品极品美女粉嫩高清在线| 日韩性xxxx爱| 日韩av在线免播放器| 黑人巨大精品欧美一区二区| 欧美www视频在线观看| 在线视频欧美日韩精品| 国产精品国产三级国产专播精品人| 国产精品xxxxx| 国产欧美韩国高清| 日韩av网站在线| 亚洲尤物视频网| 91国产美女视频| 国产区精品视频| 国产精品第3页| 亚洲欧美日韩一区二区三区在线| 欧美一级片久久久久久久| 日韩黄色高清视频| 成人免费网站在线| 91性高湖久久久久久久久_久久99| 成人久久精品视频| 日韩国产精品一区| 国产精品观看在线亚洲人成网| 91中文精品字幕在线视频| 成人福利网站在线观看| 狠狠躁夜夜躁人人躁婷婷91| 国精产品一区一区三区有限在线| 国产精品久久久久一区二区| 97精品国产97久久久久久免费| 久久精品久久久久久国产 免费| 国产精品久久久久久久av电影| 国产69精品久久久| 欧美老妇交乱视频| 免费成人高清视频| 欧美精品在线观看| 国产视频自拍一区| 亚洲色图35p| 国产精品永久在线| 日韩成人激情在线| 成人福利在线视频|