iOS開發支付整合之支付寶支付

2021-07-14 20:49:01 字數 1804 閱讀 9096

剛開始以為支付寶整合還是比較簡單的,看了幾個文章,網上的各位大神也是各種秀操作,說整合很簡單,但是,真正做起來就不是那回事了, 特別是新版的1月11號更新的,我正好是這一天開始看的,網上的經驗什麼的 大都是比較老的,比較新的能用到的文章不多(但是好文章還是有的,對我幫助也很大),現在我就來一步一步說一下自己整合支付寶的血淚史!

開發文件、開發文件、開發文件,重要的事情一定要說三遍!!!建議先把開發文件仔仔細細看一遍,一定要看,本小白剛開始的時候沒有老老實實地看完,結果遇到很多很多的坑,以血和淚勸解大家,浪費的挺多的時間的,所以建議一定要好好看看,特別是互動流程這一部分

互動流程

流程就是跟咱們平時在手機上買東西是一樣的:到這裡就完成了支付的過程了。我覺得這個流程還是很容易理解的。

其中咱們就是商戶客戶端需要做的就是:

• 呼叫支付寶支付介面

• 處理支付寶返回的支付結果

支付寶文件上的應用範例:

ps:簽名部分為了安全起見都放在了後台,如果你們執意要在手機客戶端做簽名,不怕被攔截那就再加上一步簽名。也才三步,還是很簡單。

-(void)payorder:(nsstring *)orderstr fromscheme:(nsstring *)schemestr callback:(completionblock)completionblock;
在支付的按鈕中,試用支付寶這個類,再呼叫這個方法就行啦!如下如:

呼叫這個方法

if ([url.host isequaltostring:@"safepay"]) ]; 

}

支付寶上要用那個rsa,這是個演算法,所以為了方便,可以使用第三方的方法,或者找demo上的**貼上上去!不過還是那句話,為了安全,最好還是後台的做,不怕被攔截了 。

簽名的時候,涉及到了rsa公鑰、私鑰的生產,rsa的簽名、驗證簽名,sha1值的計算,base64和url編碼等等等等煩人的東西,估計支付的程式猿也不想麻煩,就用了乙個開源的**來統一解決這些問題,就是openssl這個資料夾。

如果你執意要在客戶端上簽名(前面說過,並不安全),也可以用demo中的openssl這個資料夾,那你需要匯入這幾個資料夾:demo中的openssl目錄標頭檔案,兩個庫檔案libcrypto.a libssl.a,demo裡支付寶自己寫的util目錄,如下圖:

用到的檔案

支付寶文件上的整合流程詳解,寫的很詳細了,一般遇到的問題都有提到。

推薦幾篇好文章,可以參考下,減少點坑(1、4、5務必看看,很有啟發的):

1.整合支付寶錢包支付ios sdk的方法與經驗

2.ios整合到支付寶的步驟及問題

3.這個也是遇到的一些問題和解決方法

4.ios應用之支付寶整合總結

5.ios 整合支付寶

這篇文章是在客戶端做簽名的,寫的也很詳細

今天又遇到個問題:調起了支付寶客戶端,但是支付不了。

支付失敗

這個是因為,如果訂單來自伺服器此錯誤表示後台返回的簽名訂單含有特殊字元 ,需要編碼。

由於rsa簽名機制每次生成的簽名都不一樣,也就是是二進位制數,後台返回簽名的訂單時,是基於base64位編碼的 。可能基於base64位編碼生成帶有+=/等在url序列中不被允許的字元。當我們拿著後台不進行特殊字元處理的訂單作為引數去呼叫支付寶的介面時,便會出現由於支付寶客戶端吊起支付寶伺服器是url有問題,導致錯誤ali64 。

解決辦法是 讓後台處理一下引數中的特殊字元,具體的這裡有示例.

iOS整合支付寶支付

在組裝請求資訊這塊,要求是 tips 這一步應在商戶服務端完成,商戶服務端直接將組裝和簽名後的請求串orderstring傳給客戶端,客戶端直接傳給sdk發起請求。文件和demo是為了示例效果在客戶端實現。大致的組裝邏輯是,通過order物件構建乙個字典,將字典按key排序,將key value拼接...

iOS開發之整合支付寶

前幾天做了整合了支付寶的demo,裡面還是有一些需要注意的地方。下面就具體說一下,為了方便以後再次整合的方便也為了與大家共同學習。2.新建乙個資料夾,alipaysdk.bundle,alipaysdk.framework,libcrypto.a,libssl.a,util,openssl,orde...

iOS開發之整合支付寶

之前寫了銀聯支付,今天研究了一下支付寶支付。3.整合流程 開發文件在這裡 把ios包中的壓縮檔案中以下檔案拷貝到專案資料夾下,並匯入到專案工程中。alipaysdk.bundle alipaysdk.framework 在build phases選項卡的link binary with librar...