玩轉iOS開發:集成 Union Pay - 銀聯支付

文章分享至:https://cainluo.github.io/14740149724404.htmlhtml


做者感言

前面已經把**WeChat SDK**的支付, AliPay SDK搞得七七八八了, 接下來就是銀聯支付的Union Pay SDK. 最後: 若是你有更好的建議或者對這篇文章有不滿的地方, 請聯繫我, 我會參考大家的意見再進行修改, 聯繫我時, 請備註Union Pay SDK若是以爲好的話, 但願你們也能夠打賞一下~嘻嘻~祝你們學習愉快~謝謝~git


簡介

銀聯嘛, 用過銀行卡的人都懂的, 咱們大天朝的產物, 主要是用來聯合大天朝各個銀行, 實現各個銀行互通, 可跨行, 跨區, 跨境使用等等....其實換了一句話來講, 就是中國版的**VISA, MasterCard, 雖然銀聯起步的比較晚, 但發展的腳步不比VISA**, **MasterCard**要差.github


準備工做

在這裏, 我不得不吐槽一下, 若是是第一次集成銀聯的童鞋, 估計一開始還真是夠嗆的, 或許你連**SDK都找不到在哪裏下載, 這網站還真的很難找, 因此我在這裏貼出來給大家了, 方便各位童鞋們自行去查找下載商家技術服務** 這裏還有怎麼去查找SDK的示例, 你們也看看唄微信

1

2

3

4

5

這裏我下載下來的是3.3.3版本, 54.8MB大小, 或許以後銀聯會繼續更新SDK包, 這個的話, 你們看着辦吧~~網絡


廢話來一段

慣例, 繼續來一段廢話, 打開咱們以前的集成**WeChat SDKAliPay SDk的工程, 新建一個工程叫作UnionPay-Objective-C**的新工程app

6


配置工程

配置工程的話, 首先咱們要引入**Union Pay SDK**的依賴包, 一共五個, 這或許是第三方支付品臺裏須要導入最少依賴的.佈局

  • LocalAuthentication.framework
  • SystemConfiguration.framework
  • CoreGraphics.framework
  • CFNetwork.framework
  • libz.tbd

7

而後呢, 咱們須要去到**Info.plist**裏, 添加三個屬性學習

  • App Transport Security Settings
    • Allow Arbitrary Loads
  • Application requires iPhone environment
  • LSApplicationQueriesSchemes * uppaysdk * uppaywallet * uppayx1 * uppayx2 * uppayx3

8

接下來, 咱們要去添加**URL Schemes**了,測試

9

最後, 就是咱們要把**Union Pay SDK導進來了, 這樣子就配置好整個工程了, 順帶說一聲, 這個SDKpaymentcontrol**這個目錄下~網站

10

差點別忘了把**-ObjC**這個宏加上, 否則無法跑

11


佈局UI界面

慣例, 這裏咱們也是隻給一個**UIButton以及一個Action**事件.

12


補充多一個點

這裏還須要補充一個點, 因爲銀聯是採用**CC++以及Objective-C混編的, 因此這個有些蛋疼, 官方提供三種方式去適配, 我這裏採用了最簡單的一種, 直接把.m改爲.mm**.

第一種

  • 因爲支付控件使用到了**CC++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 PathsHeader Search PathsLibrary Search Paths**的路徑設置,看設置路徑是否正確,另外還要注意裏邊是否多餘一些不肯定的路徑。

第三種

  • 將**Xcode工程中Build Setting** -> Apple LLVM compiler Language標籤下的C++ Language DialectC++ 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**文件確實存在於此路徑,可能爲上下文路徑配錯。

實現銀聯支付

集成的時候, 這裏咱們須要分爲兩個步驟, 一個是網絡, 一個是本地操做.

本地部分

所謂的本地部分, 指的就是彈框, 滅框的一些操做, 還有發起網絡一些點擊事件等等.

13

網絡部分

銀聯支付須要用到一個網絡交互的流程, 這裏的話, 咱們直接引用**Demo**裏的代碼, 而後再加以修改一丟丟, 就能夠了~

14


測試支付

在測試支付這點上, 微信和銀聯都作的挺不錯的, 惟獨支付寶這個連個測試帳號都不提供, 真的是蛋疼...疼...疼, 打開銀聯接入指南, 裏面就會有兩個測試卡號.

測試帳號 測試信息
姓名 張三
手機號碼 18100000000
證件類型 01身份證
證件號 510265790128303
招商銀行卡 6226090000000048
密碼 111101
驗證碼 123456(先點獲取驗證碼以後再輸入
測試帳號 測試信息
姓名 張三
手機號碼 18100000000
證件類型 01身份證
CVN2 248
有效期 1219
證件號 510265790128303
華夏銀行貸記卡 6226388000000095
密碼 111101
驗證碼 123456(先點獲取驗證碼以後再輸入

最終效果

15


工程地址

項目地址: https://github.com/CainRun/PayProject


最後

碼字很費腦, 看官賞點飯錢可好

微信

支付寶
相關文章
相關標籤/搜索