最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

iOS微信支付開發(fā)案例

 更新時間:2022年01月27日 10:08:02   作者:jiang314  
這篇文章主要為大家詳細介紹了iOS微信支付開發(fā)案例,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

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

一、環(huán)境配置

1、首先是https協(xié)議訪問,在plist設(shè)置白名單

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

3、解決bitcode編譯不過問題

4、設(shè)置URL types

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

6、導(dǎo)入系統(tǒng)依賴庫

7、特別要注意的是

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

二、代碼開發(fā)

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

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

3、微信支付成功的回調(diào)函數(shù)

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

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

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

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

這里寫圖片描述

方法一:

方法二:

這里寫圖片描述

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

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

四、demo分享地址

http://xiazai.jb51.net/201608/yuanma/IOSwxPay(jb51.net).rar

可供復(fù)制黏貼的代碼(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;

}//創(chuàng)建發(fā)起支付時的sige簽名

-(NSString ) md5:(NSString )str 
{ 
const char *cStr = [str UTF8String]; 
unsigned char result[16]= “0123456789abcdef”; 
CC_MD5(cStr, (CC_LONG)strlen(cStr), result); 
//這里的x是小寫則產(chǎn)生的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.jb51.net/201608/yuanma/iosweixinPay(jb51.net).rar

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Objective-C的入門學(xué)習(xí)筆記

    Objective-C的入門學(xué)習(xí)筆記

    Objective-C過去一直以來都是iOS應(yīng)用程序開發(fā)的主要支持語言,雖然現(xiàn)在有了Swift,但需要調(diào)用的很多現(xiàn)有類庫還是Objective-C寫成的,值得學(xué)習(xí),下面一起來看一下這份粗淺的Objective-C的入門學(xué)習(xí)筆記:
    2016-05-05
  • swift3.0網(wǎng)絡(luò)圖片緩存原理簡析

    swift3.0網(wǎng)絡(luò)圖片緩存原理簡析

    這篇文章主要為大家簡析了swift3.0網(wǎng)絡(luò)圖片緩存原理,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-09-09
  • ios10以下safari設(shè)置style無效的解決方法

    ios10以下safari設(shè)置style無效的解決方法

    這篇文章主要介紹了ios10以下safari設(shè)置style無效的解決方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-09-09
  • iOS自定義UIBarButtonItem的target和action示例代碼

    iOS自定義UIBarButtonItem的target和action示例代碼

    這篇文章主要給大家介紹了關(guān)于iOS自定義UIBarButtonItem的target和action的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-02-02
  • iOS實現(xiàn)MJRefresh下拉刷新(上拉加載)使用詳解

    iOS實現(xiàn)MJRefresh下拉刷新(上拉加載)使用詳解

    本篇文章主要介紹了iOS實現(xiàn)MJRefresh下拉刷新(上拉加載)使用詳解,具有一定的參考價值,感興趣的小伙伴們可以參考一下。
    2017-01-01
  • iOS9與XCode7中不能使用http連接的快速解決辦法

    iOS9與XCode7中不能使用http連接的快速解決辦法

    這篇文章主要介紹了iOS9與XCode7中不能使用http連接的快速解決辦法,非常不錯具有參考借鑒價值,感興趣的朋友一起看看吧,需要的朋友可以參考下
    2016-10-10
  • iOS中自帶超強中文分詞器的實現(xiàn)方法

    iOS中自帶超強中文分詞器的實現(xiàn)方法

    這篇文章主要給大家介紹了關(guān)于iOS中自帶超強中文分詞器的實現(xiàn)方法,文中介紹的非常詳細,對大家具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起看看吧。
    2017-06-06
  • iOS多級列表實現(xiàn)代碼

    iOS多級列表實現(xiàn)代碼

    這篇文章主要為大家詳細介紹了iOS多級列表實現(xiàn)代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • iOS如何獲取最頂層ViewController詳解

    iOS如何獲取最頂層ViewController詳解

    這篇文章主要給大家介紹了關(guān)于iOS如何獲取最頂層ViewController的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • iOS中遍歷的方法總結(jié)

    iOS中遍歷的方法總結(jié)

    本篇文章主要介紹了iOS中遍歷的方法總結(jié),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-04-04

最新評論

临清市| 府谷县| 远安县| 商河县| 水富县| 密云县| 翼城县| 屏东市| 兴安盟| 无极县| 房产| 沙湾县| 鄂温| 淳化县| 蒙山县| 翁源县| 凤阳县| 涞源县| 武汉市| 周口市| 罗山县| 顺平县| 衡南县| 山西省| 达州市| 遂昌县| 乃东县| 洪泽县| 涪陵区| 沁源县| 元谋县| 江门市| 嘉义市| 治县。| 长阳| 句容市| 湖北省| 环江| 遂溪县| 辽宁省| 习水县|