支付寶SDK集成流程

因?yàn)楣咀罱陂_發(fā)新的版本,新的版本里面需要集成支付功能,所以就開始了以下的故事。。。

1、創(chuàng)建應(yīng)用

這個(gè)其實(shí)開發(fā)者們都應(yīng)該懂,就是在支付寶這里掛個(gè)號(hào),然后進(jìn)行下一步業(yè)務(wù)的申請(qǐng)。

創(chuàng)建應(yīng)用的鏈接

創(chuàng)建應(yīng)用界面

開發(fā)者只需要按照指示一步一步添加內(nèi)容就可以。

2、申請(qǐng)移動(dòng)支付

這個(gè)就需要一些公司文檔什么的了,根據(jù)指示填寫即可,但是要切記不要讓自己的word超過了大小限制,否則有一定幾率不會(huì)通過。
簽約成為商家

雖然說,整個(gè)流程可能需要將近兩周時(shí)間,但是根據(jù)我這次集成來看,大約一周多就能完成。但是假如你的開發(fā)周期比較緊張,建議早申請(qǐng),畢竟要控制時(shí)間成本。

3、下載官方Demo

這個(gè)是比較坑的事情。。。不知道是不是公司原來辦公室網(wǎng)絡(luò)的問題,總之就是用迅雷無論如何也下載不下來,然后用了chrome之后就一切順利。

開發(fā)工具包下載

點(diǎn)擊以上鏈接之后進(jìn)入各種Demo的下載頁面,當(dāng)然,也可以下載用于UI的視覺資源。(PS:Android和iOS的Demo是在一起的

以下兩張圖片為下載的Demo的文件情況:

Demo內(nèi)部文件
Demo內(nèi)部文件

因?yàn)槲沂亲鰅OS端的集成,所以自行忽略掉了服務(wù)端和Android端的Demo。

4、業(yè)務(wù)邏輯

交互流程網(wǎng)頁鏈接

功能流程
數(shù)據(jù)交互

支付寶支付的功能流程相比較微信支付來說簡單的很,如上面兩張圖展示的,我們的App(也就是商戶客戶端)所做的大概只有三個(gè)步驟:

  • 生成訂單
  • 調(diào)用支付寶接口,發(fā)送訂單
  • 返回訂單支付結(jié)果并處理

功能層面上講就是著這些,但是支付環(huán)節(jié)肯定有一個(gè)安全性問題,那么就需要加密以及解密的過程。

目前支付寶采取的是RSA的加密方式,這是一種比較常見的非對(duì)稱加密算法,至于怎么集成,下面會(huì)給大家做個(gè)詳細(xì)介紹。RSA維基

5、集成

iOS工程內(nèi)容

1)添加framework和其他文件

打開iOS工程,你會(huì)看到上面的一堆東西,你需要復(fù)制粘貼到自己工程里的有:

  • lipaySDK.framework
  • AlipaySDK.bundle
  • Order.h和Order.m
  • Until文件夾
  • openssl文件夾
  • libcrypto.a和libssl.a

2)添加第三方框架和類庫

來源于網(wǎng)絡(luò),侵刪

以及上面的libcrypto.a , libssl.a。

此時(shí),假如你啟動(dòng)工程,很大幾率上你會(huì)發(fā)現(xiàn)報(bào)error的情況。
報(bào)錯(cuò)#include <openssl/opensslconf.h> not find
這是一個(gè)神奇的大坑,我Google了好久,也不得其解,然后經(jīng)網(wǎng)友提醒之后想起來#import ""#import <>的區(qū)別。

解決方法:Targets -> Build Settings 下的 Header Search Paths。添加如下目錄 "$(SRCROOT)/項(xiàng)目名稱/文件的絕對(duì)地址"

在集成之前,不要忘了還要寫一個(gè)URL Scheme,在Targets -> Info 下最后一個(gè)即可找到。

3)集成代碼

你在添加代碼的時(shí)候會(huì)發(fā)現(xiàn)下圖所示代碼


  • partner:可以在支付寶的賬戶中找到
  • seller:就是我們的支付寶賬號(hào)
  • privateKey:這個(gè)就是我們上面提到的RSA加密中的密鑰。

密鑰生成方法在上文中可以看到,就是在上文中的下載的官方文檔中openssl文件夾中的生成命令。

RSA私鑰及公鑰生成

網(wǎng)頁截圖

注意:我在生成密鑰的時(shí)候,在第三行,誤將其以為是JAVA開發(fā)者才會(huì)使用,所以沒有在命令行中輸入命令,一直導(dǎo)致無法加密,所以iOS開發(fā)者務(wù)必將所有命令輸入Vim當(dāng)中。

生成的文件一共有兩個(gè)rsa_private_key.pemrsa_public_key.pem,第一個(gè)就是私鑰,可以用vim打開,也可以用文本文件打開,打開之后復(fù)制到工程中即可,值得注意的是,復(fù)制的時(shí)候不要有空格等東西。。。

上傳公鑰:

上傳公鑰官方指導(dǎo),和私鑰一樣,上傳的過程中,切記不要有空格等字符出現(xiàn)。

AppDelegate

- (BOOL)application:(UIApplication *)application
            openURL:(NSURL *)url
  sourceApplication:(NSString *)sourceApplication
         annotation:(id)annotation {

 //跳轉(zhuǎn)支付寶錢包進(jìn)行支付,處理支付結(jié)果
  [[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) {
                NSLog(@"result = %@",resultDic);
    }];

return YES;

}

執(zhí)行回調(diào)

    orderString = [NSString stringWithFormat:@"%@&sign=\"%@\"&sign_type=\"%@\"",
                   orderSpec, signedString, @"RSA"];
    
    [[AlipaySDK defaultService] payOrder:orderString fromScheme:appScheme callback:^(NSDictionary *resultDic) {
        NSLog(@"reslut = %@",resultDic);
    }];

以下是幾個(gè)回調(diào)返回的resultDic值:

9000 訂單支付成功 
8000 正在處理中  
4000 訂單支付失敗 
6001 用戶中途取消 
6002 網(wǎng)絡(luò)連接出錯(cuò)       

對(duì)于iOS9進(jìn)行適配

和其他的第三SDK一樣,對(duì)于新的iOS9,支付寶SDK一樣需要下infoPlist進(jìn)行適配。

<key>NSAppTransportSecurity</key>
   <dict>
        <key>NSExceptionDomains</key>
         <dict>
             <key>alipay.com</key>
         <dict>
<!--Include to allow subdomains--> <key>NSIncludesSubdomains</key>
<true/>
<!--Include to allow insecure HTTP requests-->  <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key> <true/>
         <!--Include to specify minimum TLS version-->
         <key>NSTemporaryExceptionMinimumTLSVersion</key>
         <string>TLSv1.1</string>
      </dict>
   </dict>
</dict>

4)易發(fā)bug以及總結(jié)

我覺得最易發(fā)的有:

  • 報(bào)錯(cuò)#include <openssl/opensslconf.h> not find
  • 返回錯(cuò)誤ALI64和ALI69

第一個(gè)上面有提到,第二個(gè)可以在支付包官方文檔中找到:官方鏈接。
理論上講,最大概率出錯(cuò)就是在公鑰和密鑰的處理上,認(rèn)真排查應(yīng)該就會(huì)找到問題。
如果還沒有解決,可以尋找客服來解決問題,剛開始的是智能機(jī)器人客服,如果兩次都無法解決問題,還可以后面申請(qǐng)人工客服,只不過等待時(shí)間可能會(huì)有點(diǎn)長。

支付寶的集成還是相對(duì)來說相當(dāng)簡單的,只要認(rèn)真查驗(yàn)官方文檔以及認(rèn)真Google,相信會(huì)找到自己想要的解決方發(fā)。這篇文章較為匆忙,如有問題還請(qǐng)各位指正。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 支付寶集成過程詳解——運(yùn)行DEMO 前言,夢(mèng)想是需要堅(jiān)持的,在路上,一路前行。加油。 這兩天軟件需要集成支付寶了,...
    改昵稱已被占用閱讀 19,242評(píng)論 2 39
  • 準(zhǔn)備工作: 需要公司的營業(yè)執(zhí)照,稅務(wù)信息,等老板的身份證信息等,我記得,用這些材料,去支付寶注冊(cè)一個(gè)商家賬戶(審核...
    Hevin_Chen閱讀 6,883評(píng)論 0 9
  • 沒想到,支付寶的SDK是我目前用過的所有第三方SDK中最難用的一個(gè)了。 下載 首先,你要想找到這個(gè)SDK,都得費(fèi)點(diǎn)...
    胖花花閱讀 95,831評(píng)論 60 240
  • 自己總結(jié)的微信支付寶支付流程和注意點(diǎn): 準(zhǔn)備工作: 需要公司的營業(yè)執(zhí)照,稅務(wù)信息,等老板的身份證信息等,我記得,用...
    Www劉閱讀 18,685評(píng)論 2 50
  • 02.17 沒有什么具體的事情要做,在房間里整整頹了近一周的時(shí)間,不想出門,不想活動(dòng),要么睡著,要么醒來 昨天的時(shí)...
    淺象小姐有話說閱讀 585評(píng)論 0 0

友情鏈接更多精彩內(nèi)容