技術部落格原位址:http://www.cnblogs.com/dashunzi/p/ApplePay.html#top
原技術部落格中有源碼和視訊,有感興趣的朋友可以研究一下!
一、什麼是Apple Pay?
1. 概念
Apple Pay,簡單來說, 就是一種移動支付方式。通過Touch ID/ Passcode,使用者可使用存儲在iPhone 6, 6p等裝置上的信用卡和借記卡支付證書來授權支付; 它是蘋果公司在2014蘋果秋季新品釋出會上釋出的一種基于NFC的手機支付功能,于2014年10月20日在美國正式上線,2016年2月18日淩晨5:00, Apple Pay 業務在中國上線。
2. 使用前提
(1). 支援裝置
線上 | 線下 | 線上&線下 |
iPad Pro | Apple Watch | iPhone 6 |
iPad Air 2 | iPhone 6 Plus | |
iPad mini 3 | iPhone 6s | |
iPad mini 4 | iPhone 6s Plus |
(2). 系統支援(iOS8.0+版本, 注意:iOS9.2才真正的支援“銀聯支付”, 意味着iOS9.2以後才可以在中國市場使用)
(3). 銀行支援
需要将被支援銀行的銀行卡, 添加到手機wallet應用當中
二、 應用場景?
1. 線下支付
> 除下使用前提之外, 還要求
> 商家支援(要求必須有支援NFC的刷卡機)
如果發現以下辨別,就代表該商家支援Apple Pay
蘋果公開的Apple Pay商家有:
2. 線上支付
> 除下使用前提之外, 還要求
> App 支援
目前支援Apple Pay支付方式的App并不多。很多公司也在內建當中,這也是寫這篇部落格的目的。
唯品會 | 大衆點評 |
目前, 蘋果公開的支援Apple Pay的APP清單
三、 與微信支付以及支付寶等第三方支付平台的差別?
1. 硬體方面
Apple Pay:必須是iOS裝置, 而且是按照線上支付和線下支付區分不同的真機裝置(具體參考表1)
微信、支付寶: 基本跟硬體裝置無關, 支援大多數的隻能手機
2. 網絡環境要求
Apple Pay:線上支付需要聯網, 線下支付無需聯網就可以支付
微信、支付寶: 無論是線上還是線下支付, 都需要聯網使用
3. 使用技術
Apple Pay:線下支付使用的是 基于NFC的近場通訊技術
微信、支付寶: 線下支付使用的是 掃碼支付(條形碼、二維碼)
4. 主要功能
Apple Pay:線上支付、線下支付、部分更新後的ATM機可以取款
微信、支付寶: 線上支付、線下支付、轉賬、理财等
5. 安全性能
Apple Pay:不保留銀行卡資訊,并且不會暴漏給外界、不分流銀行存款(不需要從銀行卡轉錢到另外一個平台)、不能充值 安全性較高
微信、支付寶: 密碼保護,身份驗證等手段保護賬戶 安全性相對稍差
6. 支付時長
Apple Pay:無論是線上支付,還是線下支付, 隻需要驗證指紋即可支付。非常迅速
微信、支付寶: 需要掃碼支付, 流程相對繁瑣,是以時長較長
7. 各自弊端
Apple Pay:隻适用于蘋果裝置, 支付場景單一,無轉賬理财等業務
微信、支付寶: 安全性較差, 必須聯網操作,需要充值到對應平台
四、線上支付內建步驟
1. 配置支付環境
- 使用XCode建立一個工程, 并設定好對應的BundleID
- 注冊并配置一個商業标示符
-
- 添加一個App ID
- 配置Merchant ID
- 為Merchant ID 配置證書, 并下載下傳證書安裝到鑰匙串
- 檢查安裝到鑰匙串中的證書是否有效
- 綁定Merchant ID 到 APP ID
2. 配置Xcode 項目
-
- 調整系統最低部署版本(iOS8.0)
- 開啟Apple Pay功能
3. 代碼實作
- 判斷目前裝置是否可以支付
- 判斷"Wallet有沒有添加該支付網絡的儲蓄卡/信用卡"
- 建立一個支付請求, 并配置各項資訊
- 彈出授權控制器,讓使用者給支付授權
- 處理支付憑證
4. 伺服器處理
五、 具體步驟實作
1. 配置支付環境
(1)添加一個App ID, 并勾選Apple Pay功能
(2)配置Merchant ID
(3)為Merchant ID 配置證書, 并下載下傳證書安裝到鑰匙串
(4)檢查安裝到鑰匙串中的證書是否有效
問題描述: 有可能會出現
提示
問題原因: 系統根證書/中級證書頒發機構過期
解決方案: 重新下載下傳證書, 并安裝,具體下載下傳清單看下圖
(5)綁定Merchant ID 到 APP ID
注意: 以上步驟截圖, 隻是關鍵處截圖, 如果在具體細節處遇到問題, 歡迎關注公衆号(王順子),共同探讨。或者參照具體視訊教程, 連結位址, 後續附上。
3. 代碼實作
(1)判斷目前裝置是否可以支付
1 2 3 4 5 | |
(2)判斷"Wallet有沒有添加該支付網絡的儲蓄卡/信用卡"
6 7 8 9 10 11 12 | |
(3)建立一個支付請求, 并配置各項資訊
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | |
(4)彈出授權控制器,讓使用者給支付授權
|
(5)處理支付憑證(token)
|
(6)關閉授權控制器
|
* 支付授權的流程:
-
- 架構發送支付請求給安全子產品,隻有安全子產品可以通路存儲在裝置上的标記化的卡資訊。
- 安全子產品把特定的卡和商家等支付資料加密,以保證隻有蘋果可以讀取,然後發送給架構。架構會将這些資料發送給蘋果。
- 蘋果伺服器再次加密這些支付資料,以保證隻有商家可以讀取。然後伺服器對它進行簽名,生成支付token,然後發送給裝置。
- 架構調用相應的代理方法并傳入這個token,然後你的代理方法傳送token給你的伺服器。
4. 伺服器接收到token後的一般處理流程
-
- 驗證支付資料的哈希表和簽名
- 為加密過的支付資料解碼
- 向支付處理系統送出支付資料
- 向訂單追蹤系統送出訂單
處理支付請求時,你有兩個選擇;你既可以利用支付平台處理支付請求,也可以自己實作支付請求處理流程。一個常用的支付平台可以完成上述大部分操作。
關于支援Apple Pay支付平台的更多資訊,請參考developer.apple.com/apple-pay/