集成 Union Pay - 銀聯支付


作者感言

前面已經把WeChat SDK的支付, AliPay SDK搞得七七八八了, 接下來就是銀聯支付的Union Pay SDK.

最后:
如果你有更好的建議或者對這篇文章有不滿的地方, 請聯系我, 我會參考你們的意見再進行修改, 聯系我時, 請備注Union Pay SDK如果覺得好的話, 希望大家也可以打賞一下~嘻嘻~祝大家學習愉快~謝謝~


簡介

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


准備工作

在這里, 我不得不吐槽一下, 如果是第一次集成銀聯的童鞋, 估計一開始還真是夠嗆的, 或許你連SDK都找不到在哪里下載, 這網站還真的很難找, 所以我在這里貼出來給你們了, 方便各位童鞋們自行去查找下載商家技術服務

這里還有怎么去查找SDK的示例, 大家也看看唄

1

2

3

4

5

這里我下載下來的是3.3.3版本, 54.8MB大小, 或許之后銀聯會繼續更新SDK包, 這個的話, 大家看着辦吧~~


廢話來一段

慣例, 繼續來一段廢話, 打開我們之前的集成WeChat SDKAliPay SDk的工程, 新建一個工程叫做UnionPay-Objective-C的新工程

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM