7- ApplePay最全支付界面調(diào)用和獲取Payment參數(shù),銀聯(lián)扣款流程

這兩天Apple Pay貌似很是火熱,自己下載的app里,'Enjoy'和'美團(tuán)'也都集成了Apple Pay. 我最近也看了一下Apple Pay的集成,客服端確實(shí)很簡單,不過需要提示大家?guī)讉€(gè)我自己躺雷和遇到問題的地方. 然后給大家附上一些我一些參考的帖子.

前話

Apple Pay功能支持的是iPhone6以上,iOS9.2以上. 且目前企業(yè)級(jí)證書是不支持的,只有個(gè)人開發(fā)者證書才支持所以我們下邊提到的所有情況都是在滿足這個(gè)前提下出現(xiàn)的.

文章主要結(jié)構(gòu)如下:

  • 客戶端apple pay支付界面代碼流程

  • 真實(shí)銀聯(lián)扣款流程

另外,我遇到的兩個(gè)雷是:

(1) 注冊(cè)了merchant ID之后,在XCode配置完成,但是運(yùn)行時(shí)候出現(xiàn)"Payment request is invalid: check your entitlements. Connection to remote alert view service failed"的情況

(2) 輸入指紋(輸入PIN碼),支付完成后,沒有進(jìn)入didAuthorizePayment方法

遇到的一個(gè)問題:

(1) 根據(jù)開通Apple Pay的App ID創(chuàng)建的描述文件,會(huì)在剛剛創(chuàng)建狀態(tài)直接變成"invalid",或者過一段時(shí)間狀態(tài)自動(dòng)從"activity"變成"invalid."

客戶端apple pay支付界面代碼流程

這里我分為三個(gè)部分,如下:

  1. 注冊(cè)merchant ID,配置支付證書,創(chuàng)建支付App ID,創(chuàng)建Profile.
  2. 本地判斷是被是否支持Apple Pay,然后創(chuàng)建顯示支付的sheet
  3. 支付完成后,回調(diào)方法中獲取Payment相關(guān)加密數(shù)據(jù)

注冊(cè)merchant ID,配置支付證書,創(chuàng)建支付App ID,創(chuàng)建Profile.

這一步驟很簡單,推薦簡書作者Yasin的簡書的文章《Apple Pay準(zhǔn)備工作-申請(qǐng)MerchantID及對(duì)應(yīng)證書詳細(xì)圖文教程》祥国,鏈接地址:http://www.reibang.com/p/2e5e45afc246

本地判斷是被是否支持Apple Pay,然后創(chuàng)建顯示支付的sheet

這一步就是具體代碼舌稀,沒有太多的技術(shù)含量.相關(guān)的文章也都寫的很好壁查,直接看這些文章和對(duì)應(yīng)的Demo即可。需要提及的是康谆,Apple Pay中是可以選擇收貨方式和填寫收貨地址的沃暗,但是這種方式在我們現(xiàn)在的app上,不是很合適嚼黔。

推薦demo:

  1. 這個(gè)demo比較全面,包括機(jī)型判斷,首推. 地址:https://github.com/SummertimSadness/ApplePayDemo
  2. 這個(gè)文章好像是印度妹子寫的唬涧,分為part1和part2兩部分盛撑,并且附有Demo地址抵卫。這兩個(gè)Demo中就有對(duì)選擇收貨方式和填寫收貨地址的代碼介粘。 蘋果中,用戶選擇收貨地址和收貨方式雅采,是通過回調(diào)代理方法的方式來獲取的 文章地址:https://itechroof.wordpress.com/2016/01/15/apple-pay-part-1/
  3. 這個(gè)demo地址很簡單婚瓜,但是沒有對(duì)于設(shè)備是否支持Apple Pay做判斷巡雨,但是在最開始躺雷的時(shí)候铐望,我和作者溝通了好多次,回調(diào)不進(jìn)入**didAuthorizePayment**方法,就是和該作者討論的. demo地址:https://github.com/lintide/ApplePayDemo

支付完成后,回調(diào)方法中獲取Payment相關(guān)加密數(shù)據(jù)

在我們錄入指紋督弓,并且輸入正確PIN碼后愚隧,會(huì)返回下列兩個(gè)方法中:

- (void)paymentAuthorizationViewController:(PKPaymentAuthorizationViewController *)controller didAuthorizePayment:  (PKPayment *)payment completion:(void (^)(PKPaymentAuthorizationStatus))completion {
    NSLog(@"驗(yàn)證指紋成功狂塘,蘋果返回銀聯(lián)卡相關(guān)加密數(shù)據(jù)did authorize payment token: %@, %@", payment.token, payment.token.transactionIdentifier);

    completion(PKPaymentAuthorizationStatusSuccess);
}

- (void)paymentAuthorizationViewControllerDidFinish:(PKPaymentAuthorizationViewController *)controller {
    NSLog(@"支付完成或者用戶點(diǎn)擊取消");
    [controller dismissViewControllerAnimated:controller completion:NULL];
}

第一個(gè)方法didAuthorizePayment如log中寫的那樣荞胡,是在成功之后返回的.我們不管是跟第三方SDK還是自己公司后臺(tái)服務(wù)器處理加密數(shù)據(jù),我們都要Payment數(shù)據(jù). 另外廊营,真實(shí)的扣款流程我們?cè)谙旅嫘」?jié)中提到.

第二個(gè)方法露筒,就是我們?cè)趐resent彈起Apple Pay相關(guān)sheet之后敌卓,我們點(diǎn)擊"取消"按鈕和驗(yàn)證指紋成功,系統(tǒng)會(huì)回調(diào)這個(gè)方法,我們主要在這個(gè)方法中,把彈起的支付sheet再給diss下去.

至于其他方法,我這里就不做提及(另外上邊說的和在支付sheet中用戶填入收貨地址和選擇收貨方式),我們可以點(diǎn)擊去看頭文件.

真實(shí)銀聯(lián)扣款流程

我們?cè)?code>didAuthorizePayment方法中獲取到Payment相關(guān)加密數(shù)據(jù)后,并不是真正的完成了扣款的交易.這里我們需要提到Aplle Pay他只是一種代為扣款的方式,就好比你直接給商家現(xiàn)金,給現(xiàn)金就是一種方式,但是真正的扣錢,還是要等商家給你找零錢回來才算是真正的完成. 在大陸地區(qū),銀聯(lián)就好比是這個(gè)大商家.

在正式接入Apple Pay功能時(shí),還需要注冊(cè):https://open.unionpay.com/ajweb/product/detail?id=80

我們還需要利用Payment相關(guān)加密數(shù)據(jù)和銀聯(lián)后臺(tái)做扣款業(yè)務(wù)的對(duì)接. 這里也分為兩種形式: 第一種是使用第三方SDK ,這種方式的優(yōu)點(diǎn)是我們不用處理加密數(shù)據(jù),缺點(diǎn)就是支付的界面我們不能自定義.具體參考銀聯(lián)相關(guān)文檔.地址:https://open.unionpay.com/ajweb/help/file/techFile?productId=80

第二種是公司后臺(tái)對(duì)加密數(shù)據(jù)進(jìn)行解密處理,然后調(diào)用銀聯(lián)接口. 這種方式的優(yōu)點(diǎn)就是能對(duì)支付界面自己掌控,缺點(diǎn)就是解密過程尤為辛苦.

接下來

關(guān)于實(shí)際的demo例子的話,推薦大家追蹤關(guān)注下邊三個(gè)地址瞬捕,其中兩個(gè)作者正在申請(qǐng)銀聯(lián)的接入資格,想必之后肯定會(huì)更新相關(guān)文章.還有一個(gè)就是接入"Enjoy"的開發(fā)者承諾過段時(shí)間會(huì)把后臺(tái)解析Payment相關(guān)加密數(shù)據(jù)和銀聯(lián)支付相關(guān)惧蛹,有需要的同學(xué)可以繼續(xù)關(guān)注.

地址一:https://github.com/lintide/ApplePayDemo

地址二:http://www.cocoachina.com/ios/20160219/15345.html

地址三:http://blog.nswebfrog.com/2016/02/20/apple-pay-analysis/

說說前邊的雷和問題

另外,我遇到的兩個(gè)雷是:

(1) 注冊(cè)了merchant ID之后,在XCode配置完成,但是運(yùn)行時(shí)候出現(xiàn)"Payment request is invalid: check your entitlements. Connection to remote alert view service failed"的情況

這個(gè)問題困擾了我一天,問題出現(xiàn)在自己太過于疏忽了.粗心大意害死人啊.我們要注意在XCode中的Capability選擇了merchant ID之后,我們還需要在代碼這一行對(duì)應(yīng)修改merchant ID.

payment.merchantIdentifier = @"merchant.com.lauren.nihao11";

(2 ) 輸入指紋(輸入PIN碼)后,支付完成后,沒有進(jìn)入didAuthorizePayment方法

這個(gè)問題當(dāng)時(shí)也比較郁悶,因?yàn)樵谀M器上是會(huì)進(jìn)入這個(gè)方法的.后來才發(fā)現(xiàn)我們?cè)谥付╩erchantCapabilities的時(shí)候,必須有PKMerchantCapability3DSPKMerchantCapabilityEMV. 否則只會(huì)進(jìn)入paymentAuthorizationViewControllerDidFinish這個(gè)回調(diào). 另外其他兩個(gè)'PKMerchantCapabilityCredit'和'PKMerchantCapabilityDebit'我們也可以酌情添加.

payment.merchantCapabilities = PKMerchantCapability3DS | PKMerchantCapabilityEMV | PKMerchantCapabilityCredit | PKMerchantCapabilityDebit;

遇到的一個(gè)問題:

(1) 根據(jù)開通Apple Pay的App ID創(chuàng)建的描述文件,會(huì)在剛剛創(chuàng)建狀態(tài)直接變成"invalid",或者過一段時(shí)間狀態(tài)自動(dòng)從"activity"變成"invalid."

這個(gè)問題貌似不單單只是出現(xiàn)在開通了Apple Pay的App ID創(chuàng)建Profile的時(shí)候.解決方法就是點(diǎn)擊對(duì)應(yīng)描述文件那行,然后點(diǎn)擊'Edit',接著重新'Generate'一下即可.

結(jié)尾

Apple Pay編程指導(dǎo):http://www.reibang.com/p/a5342940afa3

蘋果Apple Pay開發(fā)文檔:https://developer.apple.com/apple-pay/Getting-Started-with-Apple-Pay.pdf

Swift相關(guān):http://nshipster.com/apple-pay/

其它:http://www.cocoachina.com/ios/20140910/9573.html

交流


希望能和大家交流技術(shù)
歡迎大家關(guān)注我的微博和我GitHub,我會(huì)不時(shí)分享和轉(zhuǎn)發(fā)一些大牛的技術(shù)貼和開源項(xiàng)目.
GitHub:https://github.com/lilongcnc
博客:http://www.lilongcnc.cc


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末装畅,一起剝皮案震驚了整個(gè)濱河市掠兄,隨后出現(xiàn)的幾起案子蚂夕,更是在濱河造成了極大的恐慌,老刑警劉巖侈贷,帶你破解...
    沈念sama閱讀 217,406評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件俏蛮,死亡現(xiàn)場離奇詭異搏屑,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)第煮,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門包警,熙熙樓的掌柜王于貴愁眉苦臉地迎上來害晦,“玉大人暑中,你說我怎么就攤上這事鳄逾。” “怎么了殴俱?”我有些...
    開封第一講書人閱讀 163,711評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵线欲,是天一觀的道長李丰。 經(jīng)常有香客問我逼泣,道長圾旨,這世上最難降的妖魔是什么砍的? 我笑而不...
    開封第一講書人閱讀 58,380評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮谣旁,結(jié)果婚禮上滋早,老公的妹妹穿的比我還像新娘杆麸。我一直安慰自己,他們只是感情好饼问,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,432評(píng)論 6 392
  • 文/花漫 我一把揭開白布莱革。 她就那樣靜靜地躺著盅视,像睡著了一般旦万。 火紅的嫁衣襯著肌膚如雪纸型。 梳的紋絲不亂的頭發(fā)上狰腌,一...
    開封第一講書人閱讀 51,301評(píng)論 1 301
  • 那天琼腔,我揣著相機(jī)與錄音丹莲,去河邊找鬼尸诽。 笑死性含,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的叠萍。 我是一名探鬼主播苛谷,決...
    沈念sama閱讀 40,145評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼腹殿,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了绵患?” 一聲冷哼從身側(cè)響起落蝙,我...
    開封第一講書人閱讀 39,008評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤筏勒,失蹤者是張志新(化名)和其女友劉穎管行,沒想到半個(gè)月后邪媳,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體雨效,經(jīng)...
    沈念sama閱讀 45,443評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡徽龟,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,649評(píng)論 3 334
  • 正文 我和宋清朗相戀三年据悔,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了极颓。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,795評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡骚烧,死狀恐怖闰围,靈堂內(nèi)的尸體忽然破棺而出羡榴,到底是詐尸還是另有隱情,我是刑警寧澤忠售,帶...
    沈念sama閱讀 35,501評(píng)論 5 345
  • 正文 年R本政府宣布稻扬,位于F島的核電站泰佳,受9級(jí)特大地震影響尘吗,放射性物質(zhì)發(fā)生泄漏睬捶。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,119評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望徽惋。 院中可真熱鬧蜕猫,春花似錦回右、人聲如沸漱挚。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽贩耐。三九已至厦取,卻和暖如春虾攻,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背奇钞。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評(píng)論 1 269
  • 我被黑心中介騙來泰國打工景埃, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留纠亚,地道東北人筋夏。 一個(gè)月前我還...
    沈念sama閱讀 47,899評(píng)論 2 370
  • 正文 我出身青樓条篷,卻偏偏與公主長得像赴叹,于是被迫代替她去往敵國和親乞巧。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,724評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • Apple Pay 一個(gè)方便 & 安全的移動(dòng)支付技術(shù),讓用戶完成他們的支付環(huán)節(jié)并把支付相關(guān)的信息告訴你 只可以購買...
    skingtree閱讀 1,856評(píng)論 0 4
  • 最近開發(fā)一個(gè)項(xiàng)目,需要負(fù)責(zé)Apple Pay相關(guān)的業(yè)務(wù)伞租,所以寫這一篇文章來學(xué)習(xí)和研究Apple Pay相關(guān)的一些內(nèi)...
    就想遇見你閱讀 7,215評(píng)論 7 13
  • 1.About Apple Pay Apple Pay是一種移動(dòng)支付技術(shù),讓使用者把它們對(duì)真實(shí)的物品和服務(wù)的支付信...
    NEWWORLD閱讀 5,200評(píng)論 14 51
  • iOS-Apple Pay準(zhǔn)備工作-申請(qǐng)MerchantID及對(duì)應(yīng)證書在App中接入Apple Pay有兩種方式驯击,...
    亦晴工作室閱讀 3,091評(píng)論 10 5
  • 高分子材料學(xué) 聚合物的種類化學(xué)結(jié)構(gòu)熱效應(yīng)結(jié)晶能力用途通用型工程型 (50Mpa暇矫,6$KJ/m^2)耐高溫 (250...
    Mr_woniu閱讀 1,104評(píng)論 1 7