轉自:http://www.open-open.com/lib/view/open1471952847228.htmlhtml
Apple Pay,是蘋果公司在2014年蘋果秋季新品發佈會上發佈的一種基於NFC(近場通信)的手機支付功能,2016年2月18日凌晨5點,Apple Pay業務在中國上線。ios
它的支付方式是經過 Touch ID/Passcode 驗證方式,用戶可以使用事先已經儲存在IPhone 6 ,6p或者更新設備上的銀行卡支付證書來受權支付,固然最新的5e,一樣支持Apple Pay支付。git
也就是說你的蘋果設備要在IOS8.0及以上版本,並在wallet應用中,添加銀行卡信息,從而使用Apple Pay。github
它所支持的銀行能夠到官方查看,這裏給出 官方連接swift
手機怎麼添加銀行卡,這裏不過多介紹,只須要按照手機提示便可。安全
首先Apple Pay支付必需要Iphone手機,而且不低於iphone6。微信
可是Apple Pay對於支付無需聯網也可使用,使用的是 NFC 近場通信。網絡
對於支付寶和微信,他們的功能能夠說更多,不光支付,還能夠進行理財、轉帳等一系列的玩法,這是由於咱們已經將錢轉給第三方,而Apple Pay的錢從始至終都在你本身的銀行卡里,它所儲蓄的只是你銀行卡的電子信息,當你進行支付的時候,至關於你與銀行直接對接,不會講錢在通過別的第三方,從而安全性,是支付寶,微信等第三方不可比的。app
它的付款流程以下圖:iphone
Apple Pay的集成能夠說是至關的簡單的,只不過在這裏須要咱們用到證書,蘋果也給出了Apple Pay的集成教程, 地址在這裏 .
這裏怎麼添加證書我只簡單的說一下,你們應該都很熟了
1.登陸開發者帳號,添加 App ID (記得勾選下面的Apple Pay)
2.添加 Merchant IDs
3.將建立的App ID裏面的Apple Pay設置本身的Merchant IDs
4.檢查App ID裏面的Apple Pay的兩個選項是否都爲綠色
5.建立 Merchant 證書,綁定App ID並安裝
Apple Pay原理圖:
在Xcode中,將 Capabilities 中的Apple Pay開啓
中間會生成你設置的App ID,將其勾選。
首先咱們要導入頭文件 import PassKit .
添加判斷代碼
//判斷設備是否支持Apple Pay if !PKPaymentAuthorizationViewController.canMakePayments() { print("不支持Apple Pay") // 判斷是否添加了銀行卡 }else if !PKPaymentAuthorizationViewController.canMakePaymentsUsingNetworks([PKPaymentNetworkVisa, PKPaymentNetworkChinaUnionPay]) { }else { }
但咱們判斷了設備時候支持支付和是否添加銀行卡後,咱們須要再次建立按鈕,這裏用到的不是 UIButton 而是 PKPaymentButton 代碼以下
//判斷設備是否支持Apple Pay if !PKPaymentAuthorizationViewController.canMakePayments() { print("不支持Apple Pay") // 判斷是否添加了銀行卡 }else if !PKPaymentAuthorizationViewController.canMakePaymentsUsingNetworks([PKPaymentNetworkVisa, PKPaymentNetworkChinaUnionPay]) { //建立跳轉按鈕 let btn = PKPaymentButton.init(type: PKPaymentButtonType.SetUp, style: PKPaymentButtonStyle.WhiteOutline) btn.addTarget(self, action: #selector(ViewController.jumpBankCard), forControlEvents: UIControlEvents.TouchUpInside) btn.frame = CGRect(x: 100, y: 100, width: 100, height: 20) view.addSubview(btn) }else { //建立支付按鈕 let btn = PKPaymentButton.init(type: PKPaymentButtonType.Buy, style: PKPaymentButtonStyle.Black) btn.addTarget(self, action: #selector(ViewController.buyShop), forControlEvents: UIControlEvents.TouchUpInside) btn.frame = CGRect(x: 100, y: 100, width: 100, height: 20) view.addSubview(btn) }
分別建立了兩個按鈕, 一個在沒用添加銀行卡的狀況下, 另外一個是所有經過, 支付按鈕
這裏咱們在 跳轉銀行卡方法 代碼以下
//跳轉添加銀行卡頁面 func jumpBankCard(){ PKPassLibrary().openPaymentSetup() print("跳轉設置界面") }
支付請求按鈕 ,裏面要特別說明一下,在方法裏面,雖然咱們能夠直接建立支付請求 let request = PKPaymentRequest() ,並用 PKPaymentAuthorizationViewController 跳轉,可是這樣會直接崩潰,由於你的支付請求裏面沒有添加信息
直接看代碼:
//購買 func buyShop(){ print("開始購買") //1.建立支付請求 let request = PKPaymentRequest() //2.配置商家ID request.merchantIdentifier = "yimouelng.com"; //3.配置貨幣代碼和國家代碼 request.countryCode = "CN"; request.currencyCode = "CNY"; //4.配置請求支持的支付網絡 request.supportedNetworks = [PKPaymentNetworkVisa,PKPaymentNetworkChinaUnionPay]; //5.配置處理方式 request.merchantCapabilities = PKMerchantCapability.Capability3DS //6.配置購買的商品列表 注意支付列表最後一個表明總和 注意名稱和價錢 let num = NSDecimalNumber.init(string:"988") let item = PKPaymentSummaryItem.init(label: "商品", amount: num) request.paymentSummaryItems = [item] //附加選項(選填) -------- request.requiredBillingAddressFields = PKAddressField.All//添加收貨地址 request.requiredShippingAddressFields = PKAddressField.All//運輸地址 //添加快遞 let price = NSDecimalNumber.init(string:"988") let method = PKShippingMethod.init(label: "順豐", amount: price) method.identifier = "sf" method.detail = "貨到付款"//備註 request.shippingMethods = [method] request.applicationData = "id = 1" .dataUsingEncoding(NSUTF8StringEncoding)//添加附加數據 //7.驗證用戶的支付請求並跳轉支付頁面 let auth = PKPaymentAuthorizationViewController.init(paymentRequest: request) self.presentViewController(auth, animated: true, completion: nil) }
這裏附加選項裏面的可填可不填,可是上面的內容必填
這裏須要注意的是 第6步是配置購買的商品列表 注意支付列表最後一個表明總和 注意名稱和價錢
好比你添加了三個商品,前兩個每一個都是10元, 而最後一個名字最好使用商家名字,加個則是前兩個的總和
代碼到這裏就結束了,沒有什麼難度,只有幾個小點須要注意一下,也都以註明。
代碼看一遍就能記住,不須要硬背,若是有錯誤請及時指出。
Demo用swift寫的,後又寫了一個OC版的,都會在這裏放出,點擊下載。
來自:http://yimouleng.com/2016/05/27/ios-ApplePay/