整合支付寶SDK遇到的坑
一、首先我先把整合過程說一下。
小編想說的話:支付寶是我做支付中覺得坑最多的一個,各種編譯不過,各種出問題。
廢話不多說,進入主題:
1.首先當前是下載官方SDK啦,當前你也可以通過cocopods進行匯入
1.1 官方下載地址文件
將下圖兩個檔案匯入您的專案中 (支付寶SDK)
Paste_Image.png
1.2 cocopods匯入
pod 'AliPay', '~> 2.1.2'
2.若通過cocopods匯入直接跳過此步 -- 匯入系統庫
系統依賴庫.png
- 在專案中新建一個資料夾存放SDK 把官方demo 的所需的檔案統統拷貝過來,如下圖 其中
AlipaySDK.bundle
AlipaySDK.FRAMEWORK
根據你是否cocopods整合選擇匯入。
Paste_Image.png
匯入完畢之後還需要設定下路徑以免出現問題User Header Search Paths
把上面的路徑拖到裡面即可。
或者使用 $(SRCROOT)/專案名稱/SDK名稱
也是可行的。
4.使用支付寶 需要配置 URL type 在info中直接配置即可
5.對了,還有一個就是需要支援iOS9 哦
1.https
Paste_Image.png
2.白名單
Paste_Image.png
走到這裡基本上的配置就算完成了,那麼我們該如何使用呢? 很簡單支付寶有提供一個方法 我們只需要把所需要的引數給傳遞過去即可。下面為基本呼叫過程
Paste_Image.png
引數說明:payOrder
: 很明顯是關於訂單的資訊
1.重點1
在demo 中 我們會看到如下一句程式碼
NSString *orderSpec = [order description];
意思是說 將商品資訊拼接成字串 這個拼接的過程他這個方法裡已經封裝直接呼叫即可。
2.重點 2
// 獲取私鑰並將商戶資訊簽名,外部商戶可以根據情況存放私鑰和簽名,只需要遵循RSA簽名規範,並將簽名字串base64編碼和UrlEncode
id<DataSigner> signer = CreateRSADataSigner(@"您的私匙");
NSString *signedString = [signer signString:@"重點1 的商品字串"];
3.最後我們將所有內容拼接下 傳遞給支付寶SDK
orderString = [NSString stringWithFormat:@"%@&sign=\"%@\"&sign_type=\"%@\"",
@"重點1 的商品字串", signedString, @"RSA"];
appScheme
:應用註冊scheme,在AlixPayDemo-Info.plist定義URL types
綜合上述 已經完成了大部分的工作,現在咱們執行看看效果。。。
執行中。。。。。
等待中。。。。。
臥槽,這不科學,報錯了,這個時候我的內心是奔潰的。。。。
咋辦??????
不要著急我們一個一個錯誤來看。
-
-
-
-
-
錯誤 1:(該問題不一定會出現)
Paste_Image.png
解決方案 我們只要新增標頭檔案 (我是在pch 檔案中加入)
import <Foundation/Foundation.h>
import <UIKit/UIKit.h>
錯誤 2
Paste_Image.png
如果是按照上述我描述的步驟 是不會出現這個問題的,但是還是要說一下,萬一遇到了呢?
解決方案:
在官方demo 中 有兩個檔案libcrypto.a
libssl.a
將兩個檔案放在你的專案中即可。
錯誤 3
Paste_Image.png
解決方案:
你少加了系統庫哦
加上CoreMotion.framework
即可
錯誤 4
Paste_Image.png
尼瑪,明明有 你特麼的說沒有。這個問題其實就是他找不到你的這個檔案,按照我之前的流程也是不會出現這個問題的。
解決方案: 將他需要的檔案都放在一個資料夾中,並且Header Search Path
新增路徑.
直接將專案中的相應檔案拖入即可.也可以$(SRCROOT)/檔案路徑.
錯誤 5
可能會報類似錯誤 大概就是這個第三方不支援 bitcode Xcode 7 預設為YES
Paste_Image.png
解決方案: bitcode 設定為NO
錯誤 6
這個錯誤不知道為什麼會發生? 請大神指導。。。
Paste_Image.png
我只知道如何解決。
哈哈哈。。。。
找到 Always Search User Paths
設定為YES 即可。 是不是很神奇。
說到這裡我需要介紹下
`#include“file.h”: 先搜尋當前工作目錄,如果沒有,再去搜索庫,庫沒有再搜尋資源庫;
當#include<file.h>:編譯器先從標準庫路徑開始搜尋,如果沒再搜尋資源庫目錄,最好搜尋當前工作目錄。
錯誤 7
在設定 應用註冊scheme 時 切勿使用與支付寶系統重複命名,否則無法呼叫sdk。
Paste_Image.png