Apple Pay的簡單介紹。
Apple
Pay并不是獨立的第三方支付服務(wù),相比較支付寶和微信支付,他沒有自己的賬戶,也不參與資金的流動, Apple
Pay只是將原有的實體銀行卡變成手機上“虛擬的銀行卡”。Apple
Pay依賴iPhone系統(tǒng)底層的整合,在便捷程度上,非第三方支付能比。如果你們真的要和第三方的支付對比的話.只說一句話:一個是系統(tǒng)級的,一個是應(yīng)用級的,剩下的,你們自己看著辦。
Apple Pay 是在 iOS 8 中第一次被介紹,它可以為你的應(yīng)用中的實體商品和服務(wù),提供簡單、安全、私密的支付方式。它使得用戶支付起來非常簡便,只需按一下指紋就可以授權(quán)進行交易。
并且Apple
Pay 也只能在特定的設(shè)備上使用,目前為止,這些設(shè)備包括 iPhone 6, iPhone 6+, iPad Air? 2, iPad
mini 3. 這是因為 Apple Pay 需要特定的硬件芯片來支持,這個硬件叫做 Secure Element
(簡稱SE,安全元件),他可以用來存儲和加解密信息??梢园阉斫獬尚枰环N硬件的支持.
實際上Apple Pay是在2016年的2月份才來到中國大陸.也就是說,如果我們要實現(xiàn)Apple Pay就要讓版本號支持到iOS9.2以上的系統(tǒng).
開發(fā)流程
我們在寫代碼前需要做一些工程的配置:我們需要有一個具有ApplePay服務(wù)的APP ID.以及真機測試的證書和描述文件
1、登錄開發(fā)者賬號,創(chuàng)建證書。
創(chuàng)建APPID(都會的,此處不在細說)
最最最重要的有點,我們要勾選ApplePay的服務(wù):
記得勾選Apple Pay服務(wù)
然后繼續(xù)
沒錯,你們看見這個Apple Pay服務(wù)了。但是他是黃色的不可用的。是不是和我們做遠程推送服務(wù)的時候有點像。沒錯,我們還需要一樣?xùn)|西:Merchant IDs(商業(yè)ID)
或者選擇已有的APPID 編輯, 添加 Apple Pay服務(wù)[和推送類 PushNotifications]
已有的APP ID 添加Apple Pay
然后繼續(xù)
創(chuàng)建 Merchant ID(商業(yè)ID)
點擊創(chuàng)建商業(yè)ID
點擊"+"添加
注意商業(yè)ID命名格式,merchant.com.kede.ApplePayDemoCN 這個值,我們工程中需要用到。
商業(yè)ID命名 命名格式一定要正確[此處merchant 字段會自動補全]
注:此處ID 要復(fù)制保留一下 xcode工程會用到
continue 繼續(xù)
生成完成后,還沒有結(jié)束,我們還需要進行商業(yè)id的修改:
點擊編輯
生成Apple Pay證書
點擊CreateCertificate后會出現(xiàn)這樣的界面
選擇YES
然后, continue。
*******************************************************
[注: 我測試的時候選擇NO 無法創(chuàng)建證書會報以下錯誤]
*******************************************************
接著需要一個CSR文件
CSR文件創(chuàng)建和平常申請證書一樣,就是鑰匙串從證書頒發(fā)機構(gòu)請求證書
[CertificateSigningRequest.certSigningRequest]
存儲到桌面
然后回到開發(fā)者中心,選擇上傳
選取桌面上的CSR[CertificateSigningRequest.certSigningRequest]
之后就可以繼續(xù),并下載到本地雙擊安裝到鑰匙串,? 然后選擇done
證書創(chuàng)建完成
**************************************
注: 此處測試時候生成的證書安裝到鑰匙串中會提示"此證書是由未知頒發(fā)機構(gòu)簽名的"[貌似不影響測試] [對接第三方的時候可能會對證書操作]
按照網(wǎng)上方法處理后會變?yōu)?此證書標(biāo)記為受此賬戶信任".
暫時這樣處理, 還沒找到其他方法
參考:
證書問題
http://www.lxweimin.com/p/a5f0795cf781
**************************************
配置證書和描述文件(真機測試)
接下來就是代碼部分了,新建工程。創(chuàng)建完成后,對當(dāng)前xcode進行配置信息。
配置xcode [注意bundle id 別錯了]
配置開發(fā)證書
接著還需要配置一個Capabilities
選擇一個可用的Merchant ID
選擇后,如果下面會出現(xiàn)一些紅色的錯誤。可能因為我們當(dāng)前這個工程中的配置還未完成。接著可能需要開發(fā)整證書/發(fā)布證書/描述文件。
這里證書創(chuàng)建,描述文件的創(chuàng)建(齒輪文件)[大家都會的]。
然后證書和描述文件下載下來,雙擊運行。然后繼續(xù)配置xcode
然后你回到Capabilities的位置, 你就會發(fā)現(xiàn),紅色錯誤解決了。
所有配置完成
以上就是Xcode的配置。
接下來,代碼部分:
我們需要添加一個按鈕,進行支付代碼的實現(xiàn)。我們要添加的按鈕是一個 PKPaymentButton, 這個在 iOS 8.3 時引入。這個按鈕是本地化的,能夠提供標(biāo)準(zhǔn)的樣式。因此,我們強力推薦使用這個按鈕來啟動 Apple Pay 的支付頁面。
//??? Type : 類型
//??? PKPaymentButtonTypePlain
//??? PKPaymentButtonTypeBuy
//??? PKPaymentButtonTypeSetUp (ios 9)
//??? PKPaymentButtonTypeInStore (ios 10)
//? ? style : 樣式
//??? PKPaymentButtonStyleWhite
//??? PKPaymentButtonStyleWhiteOutline
//??? PKPaymentButtonStyleBlack
也就是說,系統(tǒng)給我們提供了一個按鈕,專門用來處理ApplePay的操作,其實這個按鈕可不是隨便都可以使用:
顯示 Apple Pay 按鈕
https://developer.apple.com/apple-pay/Apple-Pay-Identity-Guidelines-CN.pdf
首先我們需要在我們的工程中引入頭文件#import
創(chuàng)建UI
支付按鈕方法
我的測試機是國行的 必須要支持銀聯(lián) 否則會崩潰, [countryCode,currencyCode都要正確]
[我個人判斷可能與Merchant ID證書創(chuàng)建的時候有關(guān),我用的開發(fā)者賬號只能選擇YES ]
判斷是否能使用Apple Pay
然后還需要遵循他的協(xié)議并且實現(xiàn)他的代理方法
遵循協(xié)議
實現(xiàn)代理方法:
在Apple Pay驗證了支付之后,仍然需要開發(fā)者來完成交易,這可以用didAuthorizePayment委托方法來完成,它需要你連接服務(wù)器并上傳支付令牌和其他信息,以完成整個支付流程。
效果[模擬器]
支付授權(quán)的流程:
1.框架發(fā)送支付請求給安全模塊,只有安全模塊可以訪問存儲在設(shè)備上的標(biāo)記化的卡信息。
2.安全模塊把特定的卡和商家等支付數(shù)據(jù)加密,以保證只有蘋果可以讀取,然后發(fā)送給框架??蚣軙⑦@些數(shù)據(jù)發(fā)送給蘋果。
3.蘋果服務(wù)器再次加密這些支付數(shù)據(jù),以保證只有商家可以讀取。然后服務(wù)器對它進行簽名,生成支付token,然后發(fā)送給設(shè)備。
4.框架調(diào)用相應(yīng)的代理方法并傳入這個token,然后你的代理方法傳送token給你的服務(wù)器。
也就說,Apple Pay只做了支付信息的傳遞,不做支付功能。真正實現(xiàn)Apple Pay功能的是我們公司的后臺人員。
服務(wù)器接收到token后的一般處理流程
1.驗證支付數(shù)據(jù)的哈希表和簽名 為加密過的支付數(shù)據(jù)解碼 向支付處理系統(tǒng)提交支付數(shù)據(jù) 向訂單追蹤系統(tǒng)提交訂單
2.處理支付請求時,你有兩個選擇;你既可以利用支付平臺處理支付請求,也可以自己實現(xiàn)支付請求處理流程。一個常用的支付平臺可以完成上述大部分操作。
注: demo測試的時候 , 首先硬件要支持Apple Pay [iPhone 6 以上設(shè)備]
系統(tǒng)版本我用iOS 8.1.1測試的Apple Pay不可用, iOS 9.3.5測試的可以
[網(wǎng)上有資料說是,國內(nèi)的要iOS 9.2 以上才可以]
1https://developer.apple.com/apple-pay/
2https://support.apple.com/zh-cn/HT203027
3https://developer.apple.com/apple-pay/get-started/cn/
4https://developer.apple.com/apple-pay/Apple-Pay-Identity-Guidelines-CN.pdf
5http://www.lxweimin.com/p/347379007a14
證書準(zhǔn)備:http://www.lxweimin.com/p/2e5e45afc246
證書問題