iOS信用卡支付接入iPayLinks及開發(fā)注意點

來源: 簡書
作者:2狗子你變了
時間:2020-12-03
18051
iPayLinks信用卡,它沒有提供主要的SDK來調(diào)用,唯一的一個ios app 設備指紋獲取示例.zip是用來生成一個必填的參數(shù),具體可以查看《iPayLinks商戶API收單接口規(guī)范v1.1虛擬商品》.pdf文檔中的API下單接口的提交參數(shù)說明。

這幾天在做新版本需求,因為項目是面向國際市場的,隱藏涉及到的支付問題,產(chǎn)品除了國內(nèi)周知的支付寶、微信、銀聯(lián)、apple pay這幾個主要支付手段之后,為了國外用戶方便,新需求接入了信用卡支付。關于信用卡支付的方式,我們產(chǎn)品對接iPayLinks,具體你可以去搜索,官網(wǎng)查看。

關于iPayLinks的申請過程,不在技術討論范圍,這讓你們公司產(chǎn)品去處理,我們只要知道申請的結(jié)果,比如開發(fā)文檔,實例demo等。

我從產(chǎn)品那里獲取到的有下面開發(fā)文件:

ia_100000612.png

這里有需要iOS客戶端開發(fā)用到的就

《iPayLinks商戶API收單接口規(guī)范v1.1虛擬商品》.pdf

ios app設備指紋獲取示例.zip

iPayLinks聯(lián)調(diào)環(huán)境測試卡.txt

iPayLinks信用卡,它沒有提供主要的SDK來調(diào)用,唯一的一個ios app設備指紋獲取示例.zip是用來生成一個必填的參數(shù),具體可以查看《iPayLinks商戶API收單接口規(guī)范v1.1虛擬商品》.pdf文檔中的API下單接口的提交參數(shù)說明。

這里因為涉及到資金方面的安全問題,提交參數(shù)里面涉及到API key之列的需要主要參數(shù)都放在后端,客戶端這里只是生產(chǎn)一些商品訂單相關的參數(shù),提交給后端,后端統(tǒng)一去調(diào)用支付接口,在返回支付信息回調(diào)給客戶端。

總的來說真?zhèn)€支付流程沒有什么太大的難道,跟著流程來就行。但是我在獲取需要提交的參數(shù)時候,碰到一個坑,問題就出在設備指紋ID這個參數(shù)的獲取上,讓我坑了一回兒。

ia_100000613.png

這個參數(shù)需要把訂單號通過它提供的ios app設備指紋獲取示例.zip的Demo里面的SDK去處理請求生成。

主要的請求生成代碼如下:

ia_100000614.png

THMTrustDefender是一個單例,通過configure方法來進行初始化的配置。這里的NSDictionary內(nèi)容跟著demo來就行。

/*!
* Configure the shared instance of TrustDefenderMobile object with the supplied configuration dictionary.
* @code
* [THM configure:@{ THMOrgID: @"my orgid" }];
* @endcode
*
* @return The result of the configuration call.
*
* @remark This method only run once and any following calls to it has no effect.
*/-(BOOL) configure:(NSDictionary *)config;

這里的profileComplete是它的生成指紋識別id的代理回調(diào)方法。

/*!
*    Once profiling is complete, this method is called.
*
*    @param profileResults describes the profiling status
*/-(void) profileComplete: (NSDictionary *) profileResults;

到這里的話,跟著demo來就能生成需要的參數(shù)了(補充,這里還有個坑爹的地方,文檔沒有說清楚,這里需要的設備指紋id其實是要跟訂單id一樣的,所有這里返回的profileResults里面的那個session_id并不是設備指紋id,而且這個請求生成過程只是一個驗證過程,只要能成功就行,回調(diào)的信息并不是需要的參數(shù)),但是問題就坑在這里的THMDelegate。因為THMTrustDefender是一個單例,然后代理又是當前的頁面控制器對象。這就出現(xiàn)一個問題,當我支付結(jié)束退出這個界面,然后再繼續(xù)生成新的一個訂單,又會來這個支付選擇界面,然后在生成設備指紋id的時候,回調(diào)一直沒有進入,問題就是因為THMTrustDefender是一個單例,可能之前的第一次持有了這個界面控制器,導致回調(diào)不會對新進入的界面控制器有反應。

然后我想了一下,看了下THMTrustDefender,還好它有一個block回調(diào),不用THMDelegate采用block的話,就不受單例問題影響了。

然后還有一個解決辦法,只要這指定THMDelegate不是當前的界面控制器就行,你可以生產(chǎn)一個單例類單獨處理設備指紋識別,在回調(diào)給當前界面就行。

立即登錄,閱讀全文
版權說明:
本文內(nèi)容來自于簡書,本站不擁有所有權,不承擔相關法律責任。文章內(nèi)容系作者個人觀點,不代表快出海對觀點贊同或支持。如有侵權,請聯(lián)系管理員(zzx@kchuhai.com)刪除!
優(yōu)質(zhì)服務商推薦
更多
掃碼登錄
打開掃一掃, 關注公眾號后即可登錄/注冊
加載中
二維碼已失效 請重試
刷新
賬號登錄/注冊
個人VIP
小程序
快出海小程序
公眾號
快出海公眾號
商務合作
商務合作
投稿采訪
投稿采訪
出海管家
出海管家