iOS開發-Apple Pay-蘋果支付

337517598 8年前發布 | 21K 次閱讀 iOS開發 移動開發

Apple Pay,是蘋果公司在2014年蘋果秋季新品發布會上發布的一種基于NFC(近場通訊)的手機支付功能,2016年2月18日凌晨5點,Apple Pay業務在中國上線。

它的支付方式是通過 Touch ID/Passcode 驗證方式,用戶可使用事先已經儲存在IPhone 6 ,6p或者更新設備上的銀行卡支付證書來授權支付,當然最新的5e,同樣支持Apple Pay支付。

也就是說你的蘋果設備要在IOS8.0及以上版本,并在wallet應用中,添加銀行卡信息,從而使用Apple Pay。

它所支持的銀行可以到官方查看,這里給出 官方鏈接

手機怎么添加銀行卡,這里不過多介紹,只需要按照手機提示即可。

和支付寶和微信等第三方支付的區別?

首先Apple Pay支付必須要Iphone手機,并且不低于iphone6。

但是Apple Pay對于支付無需聯網也可以使用,使用的是 NFC 近場通訊。

對于支付寶和微信,他們的功能可以說更多,不光支付,還可以進行理財、轉賬等一系列的玩法,這是因為我們已經將錢轉給第三方,而Apple Pay的錢從始至終都在你自己的銀行卡里,它所儲蓄的只是你銀行卡的電子信息,當你進行支付的時候,相當于你與銀行直接對接,不會講錢在經過別的第三方,從而安全性,是支付寶,微信等第三方不可比的。

它的付款流程如下圖:

集成

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 = "貨到付款"http://備注
        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版的,都會在這里放出,點擊下載。

下載: swiftDemoOCDemo

 

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

 

Save

 本文由用戶 337517598 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!