1、首先在支付寶開發(fā)者平臺(tái)上創(chuàng)建應(yīng)用,并按照開發(fā)者平臺(tái)上的步驟把SDK接入,配置環(huán)境(這些步驟支付寶開發(fā)者平臺(tái)寫的很清楚,下面我主要寫一些開放平臺(tái)沒有,或者需要注意的地方)
創(chuàng)新互聯(lián)自2013年起,先為防城等服務(wù)建站,防城等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為防城企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
2、導(dǎo)入頭文件 #import AlipaySDK/AlipaySDK.h (如果報(bào)錯(cuò),則是缺少某些類庫或者靜態(tài)庫和頭文件路徑?jīng)]有設(shè)置好,請仔細(xì)查看并按照開放平臺(tái)的步驟檢查,或者看一下這個(gè): )
3、iOS 8.0以下重寫下面方法
4、iOS 9.0以上實(shí)現(xiàn)下面的方法(也就是說,如果app要兼容iOS 8.0以上,則步驟3和步驟4的方法都要實(shí)現(xiàn))
5、發(fā)起支付
注意:為了支付完成后能成功返回app,需要在info.plist文件中設(shè)置URL scheme,并且這個(gè)值是唯一的(最好填寫bundel id 或者開放平臺(tái)上的app ID),詳細(xì)步驟在支付寶開放平臺(tái)的接入文檔有
即可打印出來你的app中包含的ios的function
檢查下這里面有沒有需要屏蔽的關(guān)鍵詞
通過這個(gè)方式把該改的名字都換掉
1.首先是最常見的微信訂單號重復(fù)的問題,這里做的操作就是在拿到服務(wù)器的訂單號之后,APP端隨機(jī)在后邊追加兩個(gè)字符串,這樣就可以避免這個(gè)問題.
2.如果服務(wù)器生成的訂單號過長的話也會(huì)調(diào)起失敗,返回:訂單號長度錯(cuò)誤.
3.第三個(gè)問題相對于前兩個(gè)來說比較隱蔽,剛跳轉(zhuǎn)到第三方支付之后,不在第三方如:微信,支付寶做任何操作,然后通過雙擊home鍵或者點(diǎn)擊左上角的方式返回自己的應(yīng)用,這時(shí)候是收不到任何的回調(diào),這樣造成的結(jié)果就是程序界面仍然停留在收銀臺(tái)頁面,這樣用戶繼續(xù)點(diǎn)擊就會(huì)造成重復(fù)下單的BUG,是一個(gè)比較麻煩的問題.初步想到的解決辦法即時(shí)性的都不能解決.最后想到了一個(gè)稍微討巧的辦法,首先如果這個(gè)程序是通過支付跳轉(zhuǎn)到第三方的,就加一個(gè)布爾值apinPayGO,當(dāng)程序從后臺(tái)進(jìn)入前臺(tái)時(shí)就發(fā)出通知,.經(jīng)過實(shí)際測試,支付的回調(diào)實(shí)在系統(tǒng)的運(yùn)行方法之后的,收銀臺(tái)頁面在接收到該通知之后,延遲一秒執(zhí)行方法,判斷系統(tǒng)這次從后臺(tái)進(jìn)入前臺(tái)是否經(jīng)過了支付第三方的回調(diào)方法,如果經(jīng)過了支付第三方的回調(diào)方法就不做任務(wù)操作,如果沒經(jīng)過第三方的回調(diào)方法,證明用戶在跳轉(zhuǎn)到第三方時(shí)沒做任務(wù)操作,直接通過iOS系統(tǒng)返回到自己的應(yīng)用了,這里就把頁面跳轉(zhuǎn)到待支付頁面,然后開始倒計(jì)時(shí)!
- (void)applicationWillEnterForeground:(UIApplication*)application{
NSLog(@"EnterForeground");
if(self.apinPayGO) {
NSNotificationCenter*center = [NSNotificationCenterdefaultCenter];
[centerpostNotificationName:@"payReturn"object:nil];
}
}
4.創(chuàng)建訂單,支付中間的時(shí)間控制問題.
用戶點(diǎn)擊創(chuàng)建訂單,服務(wù)器設(shè)置一個(gè)超時(shí)時(shí)間十分鐘,需要用戶在十分鐘內(nèi)完成支付,直接去操作是沒什么問題.但是如果不直接操作,第三方的支付超時(shí)時(shí)間跟服務(wù)器訂單儲(chǔ)存的超時(shí)時(shí)間不同步,可能出現(xiàn)的情況就是:服務(wù)器這邊訂單已經(jīng)失效了,但是第三方支付仍可以支付,出現(xiàn)bug.有個(gè)預(yù)想的處理方法是:支付前進(jìn)行查詢訂單操作,服務(wù)器返回一個(gè)超時(shí)時(shí)間,然后進(jìn)行第三方支付時(shí)把這個(gè)超時(shí)時(shí)間設(shè)置過去.但是在做的過程中又遇到了新的問題:第三方支付的超時(shí)時(shí)間有限制,支付寶是1min~15d,微信是要大于五分鐘.
解決方案: 創(chuàng)建訂單 跟調(diào)第三方支付創(chuàng)建訂單 同時(shí)進(jìn)行,然后第一次支付的時(shí)候設(shè)置超時(shí)時(shí)間.