本文是投稿文章,作者:南栀傾寒
當初集成支付寶的時候,覺得見了這麼丑的代碼,加上這麼難找的下載地址,在配上幾乎為零的文檔,寒哥就要吐血了。
下午去集成銀聯,才知道血吐的早了。
下載地址:https://open.unionpay.com/upload/download/Development_kit85427986.rar
其實我找了半個小時 也不知道怎麼就下載好了 這個我在Chrome的下載記錄裡找到的
解壓之後會有這樣的目錄結構
Paste_Image.png
文檔在下面 sdk在upmp_iPhone裡面
Paste_Image.png
1、SDK 說明
SDK 分為以下兩個版本:
1.支持純無卡交易靜態庫,以下簡稱 UPPayPlugin,包含文件:
UPPayPlugin.h UPPayPluginDelegate.h libUPPayPlugin.a
2、支持純無卡交易和 VIPOS 音頻口支付靜態庫,以下簡稱 UPPayPluginPro,
包含文件:
UPPayPluginPro.h
UPPayPluginDelegate.h libUPPayPluginPro.a
3、添加 SDK 包
a.根據商戶選擇的SDK版本,將sdk/inc目錄和sdk/libs目錄下對應版本的三個文件添加到 UPPayDemo 工程中;
b.如 果 你 選 擇 的 是 UPPayPlugin 版 本 , 添 加 QuartzCore.framework 、Security.framework 到工程中;
c.如 果 你 選 擇 的 是 UPPayPluginPro 版 本 , 添 加 QuartzCore.framework 、AudioToolbox.framework, CoreAudio.framework 、 MediaPlayer.framework,AVFoundation.framework 和 Security.framework 到工程中;
d.在工程的 Build Settings 中找到 Other Linker Flags 中添加-ObjC 宏;(這個可能是遺留的問題 我就沒寫 不報錯)
Paste_Image.png
4、調用插件
a.在需要調用支付控件的源文件內引用頭文件 UPPayPlugin.h 或 UPPayPluginPro.h(注意:如果工程的 compile source as 選項的值不是 Objective–C++,則引用此頭文件的文件類型都要改為.mm)
b.通過調用
(BOOL)startPay:(NSString)tn mode:(NSString)mode
viewController:(UIViewController*)viewController delegate:(id
實現控件的調用
c.處理支付結果
銀聯手機支付控件有三個支付狀態返回值:success、fail、cancel,分別代表:支付成功、支付失敗、用戶取消支付。這三個返回狀態值以字符串的形式作為回調函數參數(NSString)result 返回。通過在工程中添加頭文件“UPPayPluginDelegate.h”,在處理交易結果的界面,實現 UPPayPluginDelegate接口,根據該頭文件中的回調函數:-(void)UPPayPluginResult:(NSString)result來實現回調方法,從而可以根據支付結果的不同進行相關的處理。
a.將 xcode 工程中 Build Setting -> Apple LLVM compiler Language 標簽下的 C++ Language Dialect 和 C++ Standard Library 屬性值修改為 Compiler Default
b.將涉及到引用 UPPayPlugin.h 的源文件的後綴名都改為.mm;
c.參照demo,檢查工程設置 Search Paths 裡的 Framework Search Paths、Header Search Paths、Library Search Paths 的路徑設置,看設置路徑是否正確
d.添加 QuartzCore.framework、AudioToolbox.framework, CoreAudio.framework、 MediaPlayer.framework, AVFoundation.framework 和 Security.framework
e.工程的 Build Settings 中找到 Other Linker Flags 中添加-ObjC 宏;
上面提到的幾點網上都可以找到,如果已經正確設置,還是編譯不通過,那麼趕緊檢查下 項目targets 對應的sdk版本,選擇7.0以下的,目前銀聯的sdk貌似還不支持7.0,
注:
銀聯支付目測只需要2個參數 1 tn 其實就是訂單號 2 mode 是測試環境還是線上環境
和支付寶不同的是 支付寶要求本地把訂單的信息書寫完畢 調起sdk支付即可 銀聯是我把一些生成訂單的信息 如 付款方 收款方 訂單描述 金額等信息傳遞到服務器 由服務器生成一個訂單號 然後客戶端調起sdk進入支付
mode 竟然是個死的字符串 真是醉了 "00" 表示線上環境"01"表示測試環境
返回的代理結果 更是坑爹 :success、fail、cancel,分別代表:支付成功、支付失敗、用戶取消支付
測試環境 賬號
提供測試使用卡號、手機號信息(此類信息僅供測試,不會發生正式交易)招商銀行預付費卡:卡號:6226 4401 2345 6785密碼:111101