文章 原始出處。http://winann.blog.51cto.com/4424329/1601654git
本文介紹了iOS快速集成支付寶支付的方法,本文中介紹的方法是通過一次封裝,所以配置完成以後調用僅需一行代碼便可支付寶支付,很是的方便,但願你們喜歡。github
我只是根據官方的文檔,對支付寶的SDK作了進一步封裝,其中密鑰的生成很簡單,須要看官方的文檔,官方的文檔我在工程附件目錄裏也有一份,若是須要立刻集成,沒工夫研究的話,能夠大體看一下密鑰的生成便可,其餘的配置我會在下面進行討論。
api
要在iOS應用裏集成支付寶支付,須要公司和支付寶簽約,而後生成相應的密鑰。密鑰的生成支付寶的開發文檔裏已經說的很是清楚了,這裏就再也不討論。服務器
雖然支付寶的文檔說的很是的詳細,比微信支付強100倍(微信支付的坑多的跟月球表面同樣,若是有須要,我會在接下來的博客中討論微信支付),不過有一點須要提醒的是:大部分用戶根本就找不到支付寶的SDK和文檔在哪裏下載!這也是我開始作支付寶支付時候頭疼的事情:要作支付寶支付,你須要先找到官方的文檔和SDK才行!
微信
不過上面我也說了,附件中又支付寶目前最新的開發文檔,工程中也集成了支付寶最新的SDK和開發文檔,固然,既然我找到了,就不會讓你們失望。下面奉上支付寶的完整的文檔和SDK下載地址供你們下載:支付寶SDK、API文檔官方下載地址。 這個下載頁面是官方的下載頁面。
app
也能夠看個人這篇博客:支付寶SDK下載問題。好了,廢話很少說了,下面就正式開始本教程的內容:(提醒:若是動態圖沒法查看,可:「右鍵-在新標籤中打開鏈接」查看便可:ide
1. 下載附件,點擊2分鐘快速集成支付寶快捷支付-51cto下載中心下載壓縮包,須要2積分,也能夠在github上免費下載:2分鐘快速集成支付寶快捷支付-github下載。
微信支付
github下載如圖所示:
網站
2.將工程中的IntegratedAlipay文件夾導入工程中,記得選copy(注意:工程名也是:IntegratedAlipay,不要導錯了,應該是:「存放目錄/IntegratedAlipay/IntegratedAlipay」路徑下的IntegratedAlipay目錄,有點兒小囉嗦哈~);ui
3.點擊項目名稱,點擊「Build Settings」選項卡,在搜索框中,以關鍵字「search」 搜索,對「Header Search Paths」增長頭文件搜索路徑,
第一種方法(推薦使用):增長頭文件路徑:「$(SRCROOT)」,而後選擇後面的recursive(會在相應的目錄遞歸搜索文件,就是子文件夾也會相應的進行搜索),這是最簡單也推薦使用的方法(以下圖所示:);
第二種方法:增長頭文件路徑:「$(SRCROOT)/項目名稱/IntegratedAlipay/AlipayFiles」(注意:不包括引號,若是不是放到項目根目錄下,請在項目名稱後面加上:「/相應的目錄名」,保證是正確的路徑和格式),能夠查看下面的動態圖片。這種方法很羅嗦,就是手動找到存放頭文件的路徑,還容易出錯,這是支付寶官方使用的方法,不推薦使用。
4.點擊項目名稱,點擊「Build Phases」選項卡,在「Link Binary with Librarles」 選項中,新增「AlipaySDK.framework」和「SystemConfiguration.framework」 兩個系統庫文件。若是項目中已有這兩個庫文件,可沒必要再增長,(以下動態圖,我添加一個SystemConfiguration.framework的方法);
5.在「AlipayHeader.h」頭文件中設置kPartnerID、kSellerAccount、kAppScheme、kPrivateKey的值(注意,建議除appScheme之外的字段都從服務器請求):
partner:合做身份者ID,以 2088 開頭由 16 位純數字組成的字符串。
#define kPartnerID @"xxx"
seller:支付寶收款帳號,手機號碼或郵箱格式。
#define kSellerAccount @"xxx"
支付寶服務器主動通知商戶 網站裏指定的頁面 http 路徑。
#define kNotifyURL @"xxx"
appSckeme:應用註冊scheme,在Info.plist定義URLtypes,處理支付寶回調
#define kAppScheme @"integratedAlipay"
private_key:商戶方的私鑰,pkcs8 格式。
#define kPrivateKey @"xxx"
由於本工程的kAppScheme是寫好的,這樣工程在配置好其餘的參數以後就能夠直接運行了,因此kAppScheme固定了,這裏若是更改了,請在工程的Info的選項卡里也相應的更改(以下圖所示),其餘的「xxx」都須要換成公司簽約支付寶時返回的郵件內容中的值:
6.在須要用的地方導入「AlipayHeader.h」,並使用「[AlipayRequestConfig alipayWithPartner:...」方法進行支付;
例如button事件的寫法以下:
- (IBAction)payWithAli:(UIButton *)sender
{
[AlipayRequestConfig alipayWithPartner:kPartnerID seller:kSellerAccount trad
eNO:[AlipayToolKit genTradeNoWithTime] productName:@
"郵
票"
productDescription:@
"全真郵
票"
amount:@
"0.8"
notifyURL:kNotifyURL itBPay:@
"30m"
];
}
到這裏,就已經實現支付寶的支付了,如今還差最後一步:返回用戶的支付狀態,請看第七步:
7.在AppDelegate中處理事件回調(可直接複製下面內容粘貼到AppDelegate中):
- (
BOOL
)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
//若是極簡 SDK 不可用,會跳轉支付寶錢包進行支付,須要將支付寶錢包的支付結果回傳給 SDK if ([url.host isEqualToString:@"safepay"]) {
[[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) {
NSLog(@
"result = %@"
,resultDic);
}];
if
([url.host isEqualToString:@
"platformapi"
]){
//支付寶錢包快登受權返回 authCode
[[AlipaySDK defaultService] processAuthResult:url standbyCallback:^(NSDictionary *resultDic) {
NSLog(@
"result = %@"
,resultDic);
}];
}
return
YES;
}
這個方法用來查看用戶的支付狀態,詳細的參數說明請查看官方文檔。
好了,教程到這裏就所有結束了,點擊button,就會跳到支付寶進行支付,若是沒有安裝支付寶客戶端,會跳到支付寶的網頁。咱們如今須要作的,就是button裏面的內容設置一行而已,是否是很是的簡單?
最後再囉嗦一遍,支付寶SDK、API文檔和demo下載問題:支付寶SDK下載問題;工程下載地址:51cto下載中心:2分鐘快速集成支付寶快捷支付-51cto下載中心和github免費下載:2分鐘快速集成支付寶快捷支付-github下載。
若是還有什麼問題,或者有其它iOS開發的相關問題,歡迎在博客的下面提問,固然,也能夠@個人新浪微博,我會第一時間回覆的!但願你們多多支持!
本文出自 「一毛」 博客,請務必保留此出處http://winann.blog.51cto.com/4424329/1601654