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

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

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

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

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

ia_100000612.png

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

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

ios app設(shè)備指紋獲取示例.zip

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

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

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

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

ia_100000613.png

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

主要的請(qǐng)求生成代碼如下:

ia_100000614.png

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

/*!
* 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是它的生成指紋識(shí)別id的代理回調(diào)方法。

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

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

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

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

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