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

這幾天在做新版本需求,因為項目是面向國際市場的,隱藏涉及到的支付問題,產(chǎn)品除了國內(nèi)周知的支付寶、微信、銀聯(lián)、apple pay這幾個主要支付手段之后,為了國外用戶方便,新需求接入了信用卡支付。關(guān)于信用卡支付的方式,我們產(chǎn)品對接iPayLinks,具體你可以去搜索,官網(wǎng)查看。
關(guān)于iPayLinks的申請過程,不在技術(shù)討論范圍,這讓你們公司產(chǎn)品去處理,我們只要知道申請的結(jié)果,比如開發(fā)文檔,實例demo等。

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


這里有需要iOS客戶端開發(fā)用到的就
《iPayLinks商戶API收單接口規(guī)范v1.1虛擬商品》.pdf
ios app 設(shè)備指紋獲取示例.zip
iPayLinks聯(lián)調(diào)環(huán)境測試卡.txt

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

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

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


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

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

然后我想了一下,看了下THMTrustDefender,還好它有一個block回調(diào),不用THMDelegate采用block的話,就不受單例問題影響了。
然后還有一個解決辦法,只要這指定THMDelegate不是當(dāng)前的界面控制器就行,你可以生產(chǎn)一個單例類單獨處理設(shè)備指紋識別,在回調(diào)給當(dāng)前界面就行。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,068評論 25 709
  • 親愛的小寶貝: 你出生的那天晚上,媽媽大出血,顧不上你。你躺在床上,被凍得渾身發(fā)青,瑟瑟發(fā)抖,差點被凍死,同時你也...
    方圓fg閱讀 312評論 2 1
  • 文:酷啡生活 今年年初華為清理34歲以上員工到最近中興70后程序員墜樓,今年可謂是“中年危機(jī)”鋪天蓋地的一年。 其...
    海蘭生涯閱讀 814評論 2 5
  • 晚上在電腦前碼字,收到一條短信:楊奶奶于今日凌晨去世,一切安詳。 落款:李院長。 回憶了一會,這條短信應(yīng)該來自于重...
    鳴胖胖閱讀 411評論 0 1

友情鏈接更多精彩內(nèi)容