作者感言
前面已經把
WeChat SDK的支付,AliPay SDK搞得七七八八了, 接下來就是銀聯支付的Union Pay SDK.
最后:
如果你有更好的建議或者對這篇文章有不滿的地方, 請聯系我, 我會參考你們的意見再進行修改, 聯系我時, 請備注Union Pay SDK如果覺得好的話, 希望大家也可以打賞一下~嘻嘻~祝大家學習愉快~謝謝~
簡介
銀聯嘛, 用過銀行卡的人都懂的, 我們大天朝的產物, 主要是用來聯合大天朝各個銀行, 實現各個銀行互通, 可跨行, 跨區, 跨境使用等等....其實換了一句話來說, 就是中國版的
VISA,MasterCard, 雖然銀聯起步的比較晚, 但發展的腳步不比VISA,MasterCard要差.
准備工作
在這里, 我不得不吐槽一下, 如果是第一次集成銀聯的童鞋, 估計一開始還真是夠嗆的, 或許你連
SDK都找不到在哪里下載, 這網站還真的很難找, 所以我在這里貼出來給你們了, 方便各位童鞋們自行去查找下載商家技術服務
這里還有怎么去查找SDK的示例, 大家也看看唄





這里我下載下來的是3.3.3版本, 54.8MB大小, 或許之后銀聯會繼續更新SDK包, 這個的話, 大家看着辦吧~~
廢話來一段
慣例, 繼續來一段廢話, 打開我們之前的集成
WeChat SDK和AliPay SDk的工程, 新建一個工程叫做UnionPay-Objective-C的新工程

配置工程
配置工程的話, 首先我們要引入
Union Pay SDK的依賴包, 一共五個, 這或許是第三方支付品台里需要導入最少依賴的.
- LocalAuthentication.framework
- SystemConfiguration.framework
- CoreGraphics.framework
- CFNetwork.framework
- libz.tbd

然后呢, 我們需要去到
Info.plist里, 添加三個屬性
- App Transport Security Settings
- Allow Arbitrary Loads
- Application requires iPhone environment
- LSApplicationQueriesSchemes
- uppaysdk
- uppaywallet
- uppayx1
- uppayx2
- uppayx3

接下來, 我們要去添加
URL Schemes了,

最后, 就是我們要把
Union Pay SDK導進來了, 這樣子就配置好整個工程了, 順帶說一聲, 這個SDK在paymentcontrol這個目錄下~

差點別忘了把
-ObjC這個宏加上, 不然沒法跑

布局UI界面
慣例, 這里我們也是只給一個
UIButton以及一個Action事件.

補充多一個點
這里還需要補充一個點, 由於銀聯是采用
C、C++以及Objective-C混編的, 所以這個有些蛋疼, 官方提供三種方式去適配, 我這里采用了最簡單的一種, 直接把.m改成.mm.
第一種
由於支付控件使用到了
C、C++和Objective-C混編的情況,所以商戶工程引入UPPaymentControl.h頭文件以后可能會出現鏈接錯誤,這個時候可以通過以下三種方式解決:
將涉及到引用
UPPaymentControl.h的源文件的后綴名都改為.mm;如果商戶不想修改源文件的后綴名,可以在工程中添加一個空的繼承自
NSObject的類,並將文件.m后綴名該改為.mm即可方法為New File->Objective-C class->類名自取->保存->修改后綴名為.mm;將工程的
compile source as選項的值設置為Objective–C++;
第二種
- 由於在Demo工程中添加了自定義的庫文件
libPaymentControl.a,當編譯Demo工程時,應該檢查工程設置Search Paths里的Framework Search Paths、Header Search Paths、Library Search Paths的路徑設置,看設置路徑是否正確,另外還要注意里邊是否多余一些不確定的路徑。
第三種
- 將
Xcode工程中Build Setting->Apple LLVM compiler Language標簽下的C++ Language Dialect和C++ Standard Library屬性值修改為Compiler Default如實在無法解決,嘗試添加-ObjC宏的地方修改為-force_load+空格+控件路徑,如:-force_load $(PROJECT_DIR)/ libPaymentControl.a,如果還報錯,上下文應該會有libPaymentControl.a文件找不到異常,比如ld: file not found: /Users/apple/Desktop/Communication 2/ libPaymentControl.a clang: error: linker command failed with exit code 1 (use -v to see invocation)請確定libPaymentControl.a文件確實存在於此路徑,可能為上下文路徑配錯。
實現銀聯支付
集成的時候, 這里我們需要分為兩個步驟, 一個是網絡, 一個是本地操作.
本地部分
所謂的本地部分, 指的就是彈框, 滅框的一些操作, 還有發起網絡一些點擊事件等等.

網絡部分
銀聯支付需要用到一個網絡交互的流程, 這里的話, 我們直接引用
Demo里的代碼, 然后再加以修改一丟丟, 就可以了~

測試支付
在測試支付這點上, 微信和銀聯都做的挺不錯的, 唯獨支付寶這個連個測試賬號都不提供, 真的是蛋疼...疼...疼, 打開銀聯接入指南, 里面就會有兩個測試卡號.
| 測試賬號 | 測試信息 |
|---|---|
| 姓名 | 張三 |
| 手機號碼 | 18100000000 |
| 證件類型 | 01身份證 |
| 證件號 | 510265790128303 |
| 招商銀行卡 | 6226090000000048 |
| 密碼 | 111101 |
| 驗證碼 | 123456(先點獲取驗證碼之后再輸入) |
| 測試賬號 | 測試信息 |
|---|---|
| 姓名 | 張三 |
| 手機號碼 | 18100000000 |
| 證件類型 | 01身份證 |
| CVN2 | 248 |
| 有效期 | 1219 |
| 證件號 | 510265790128303 |
| 華夏銀行貸記卡 | 6226388000000095 |
| 密碼 | 111101 |
| 驗證碼 | 123456(先點獲取驗證碼之后再輸入) |
最終效果

