iOS开发-Apple Pay-苹果支付

转自:http://www.open-open.com/lib/view/open1471952847228.html

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 = "货到付款"//备注
        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/

时间: 2024-11-06 07:50:00

iOS开发-Apple Pay-苹果支付的相关文章

iOS开发 Apple Pay

一.什么是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). 支持设备 Apple Pay支持的硬件设备 (表1) 线

开发apple pay碰到的问题总结

本来想简单总结一下Apple Pay 开发过程中的几个问题, 结果被下面这篇文章全碰上了, 干脆全文转载, 作者对相关资源整理得比较详细, 比较有参考价值 总的来说, 我们做过 APNs 推送的话, 申请 商户ID 并关联到 apple id, 申请证书, 生成provisioning profile等步骤都差不多 然后我真机调试有两个地方没通过, 下文也总结了, 我拎出来单独说一下: 1, Payment request is invalid: check your entitlements.

iOS开发技术之银联支付

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 24.0px "PingFang SC"; color: #333333 } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; line-height: 14.0px; font: 14.0px "PingFang SC"; color: #000000 } p.p3 { margin: 0.0px 0.0px 10.0px 0.0px; lin

iOS App集成Apple Pay教程(附示例代码)

苹果在本周一发布了iOS 8.1版本,并正式开放了Apple Pay支付系统.Apple Pay是一个基于NFC的支付系统,不久将被数以万计的线下零售商店予以支持.即便这项科技并不是彻底的突破性进展,但它足以推动许多公司和零售商来支持这种支付方式,并成为苹果又一项成功的投资. Apple Pay还给开发者带来了处理支付的新渠道,用户将期望在应用中使用它,因为它将验证和交易极端简化,仅需手指轻轻一触即可完成,如果应用里面有涉及到交易,开发者很有必要集成Apple Pay.那么如何将Apple Pa

iOS App集成Apple Pay

Xcode 6.1提供了非常方便的界面来设置Apple Pay.第一步先修改target为iOS 8.1,然后在项目Capabilities里将Apple Pay设置为on,这将自动导入需要的库文件,然后添加一个权限文件并设置,最后修改或创建你的App ID. 你可能会注意到上面没有有效的Merchant ID,我们需要创建一个,访问苹果iOS 开发者中心的位于Identifiers > Merchant ID 然后随着流程指引,创建一个Merchant ID并注册它. 现在,我们需要给Merc

Apple Pay(转)

Apple Pay 是在 iOS 8 中第一次被介绍,它可以为你的应用中的实体商品和服务,提供简单.安全.私密的支付方式.它使得用户支付起来非常简便,只需按一下指纹就可以授权进行交易. Apple Pay 只能在特定的设备上使用,目前为止,这些设备包括 iPhone 6, iPhone 6+, iPad Air 2, iPad mini 3. 这是因为 Apple Pay 需要特定的硬件芯片来支持,这个硬件叫做 Secure Element (简称SE,安全元件),他可以用来存储和加解密信息.

apple pay 集成

苹果在本周一发布了iOS 8.1版本,并正式开放了Apple Pay支付系统.Apple Pay是一个基于NFC的支付系统,不久将被数以万计的线下零售商店予以支持.即便这项科技并不是彻底的突破性进展,但它足以推动许多公司和零售商来支持这种支付方式,并成为苹果又一项成功的投资. Apple Pay还给开发者带来了处理支付的新渠道,用户将期望在应用中使用它,因为它将验证和交易极端简化,仅需手指轻轻一触即可完成,如果应用里面有涉及到交易,开发者很有必要集成Apple Pay.那么如何将Apple Pa

Swift # Apple Pay集成

苹果正式开放了Apple Pay支付系统.Apple Pay是一个基于NFC的支付系统,不久将被数以万计的线下零售商店予以支持.即便这项科技并不是彻底的突破性进展,但它足以推动许多公司和零售商来支持这种支付方式,并成为苹果的又一项成功的投资. Apple Pay还给开发者带来了处理支付的新渠道,用户将期望在应用中使用它,因为它将验证和交易极端简化,仅需手指轻轻一触即可完成,如果应用里面有涉及到交易,开发者很有必要集成Apple Pay.那么如何将Apple Pay功能集成到你的应用里呢? 在Ap

Apple Pay发展与安全

这个是无线网络安全最后留的一份作业了.去知网弄了点论文,又百度了点资料,总结出来的一份文档. 年初,也就是二月份刚上线的时候,苹果支付那叫一个火啊,现在也不怎么听人说了.但是三星和华为还有小米最近倒是都在弄自己的pay,希望以后能选择的越来越多也同时希望越来越安全吧. 再分享一个Apple Pay的笑话,今天我去楼下便利店买东西,问店员能不能使用Apple Pay.店员说,啥?你说啥?可能店员听不懂英语,那就问,能不能苹果支付.店员说,苹果支付你个大西瓜,我还拿猕猴桃支付呢. 以下是正文 一.