iOS開發-Apple Pay-蘋果支付

轉自: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

在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版的,都會在這裏放出,點擊下載。

下載: swiftDemo 、 OCDemo

 

來自:http://yimouleng.com/2016/05/27/ios-ApplePay/

相關文章
相關標籤/搜索