Apple Pay

一、概述

1.支付方式:Touch ID/ Passcode

2.设备要求:iPhone6以上(iphone:线上/线下 ipad:线上 watch:线下)

3.系统要求:iOS8.0以上,银联(中国):9.2

4.基于NFC

5.2014年10月20日在美国正式上线,2016年2月18日凌晨5:00, Apple Pay 业务在中国上线。

6.与微信支付以及支付宝等第三方支付平台的区别:

  (1). 硬件方面

    Apple Pay:必须是iOS设备, 而且是按照线上支付和线下支付区分不同的真机设备(具体参考表1)

微信、支付宝: 基本跟硬件设备无关, 支持大多数的只能手机

  (2). 网络环境要求

    Apple Pay:线上支付需要联网, 线下支付无需联网就可以支付

微信、支付宝: 无论是线上还是线下支付, 都需要联网使用

  (3). 使用技术

Apple Pay:线下支付使用的是 基于NFC的近场通讯技术

微信、支付宝: 线下支付使用的是 扫码支付(条形码、二维码)

  (4). 主要功能

Apple Pay:线上支付、线下支付、部分升级后的ATM机可以取款

微信、支付宝: 线上支付、线下支付、转账、理财等

  (5)5. 安全性能

Apple Pay:不保留银行卡信息,并且不会暴漏给外界、不分流银行存款(不需要从银行卡转钱到另外一个平台)、不能充值  安全性较高

微信、支付宝: 密码保护,身份验证等手段保护账户  安全性相对稍差

  (6). 支付时长

Apple Pay:无论是线上支付,还是线下支付, 只需要验证指纹即可支付。非常迅速

微信、支付宝: 需要扫码支付, 流程相对繁琐,所以时长较长

  (7). 各自弊端

Apple Pay:只适用于苹果设备, 支付场景单一,无转账理财等业务

微信、支付宝: 安全性较差, 必须联网操作,需要充值到对应平台

二、注册并配置一个商业标示符

1.添加一个App ID

2.配置Merchant ID

3.为Merchant ID 配置证书, 并下载证书安装到钥匙串

4.检查安装到钥匙串中的证书是否有效

5.绑定Merchant ID 到 APP ID

证书失效,请到以下地址下载重新安装:https://www.apple.com/certificateauthority/

三、代码实现

//一.判断当前设备是否支持支付

if (![PKPaymentAuthorizationViewController canMakePayments]) {

NSLog(@"该设备不支持ApplePay");

return;

//二.判断Wallet有没有添加该支付网络的储蓄卡/信用卡

}else if ([PKPaymentAuthorizationViewController canMakePaymentsUsingNetworks:@[PKPaymentNetworkChinaUnionPay,PKPaymentNetworkVisa]]){

NSLog(@"Wallet没有添加该支付网络的储蓄卡/信用卡");

//创建一个添加卡的按钮

PKPaymentButton *btn = [PKPaymentButton buttonWithType:PKPaymentButtonTypeSetUp style:PKPaymentButtonStyleBlack];

[btn addTarget:self action:@selector(jumpToSetup) forControlEvents:UIControlEventTouchUpInside];

[self.payView addSubview:btn];

}else{

//创建一个支付按钮

PKPaymentButton *btn = [PKPaymentButton buttonWithType:PKPaymentButtonTypeBuy style:PKPaymentButtonStyleWhiteOutline];

[btn addTarget:self action:@selector(jumpToPay) forControlEvents:UIControlEventTouchUpInside];

[self.payView addSubview:btn];

}

- (void)jumpToSetup{

NSLog(@"跳转到添加银行卡页面");

PKPassLibrary * pk = [[PKPassLibrary alloc]init];

[pk openPaymentSetup];

}

- (void)jumpToPay{

//三.创建支付请求并配置各项信息

//1.创建支付请求

PKPaymentRequest *request = [[PKPaymentRequest alloc]init];

//2.配置参数

//2.1 商店标识

request.merchantIdentifier = @"";

//2.2 国家代码

request.countryCode = @"CN";

//2.3 货币代码

request.currencyCode = @"CNY";

//2.4 支持的支付网络

request.supportedNetworks = @[PKPaymentNetworkChinaUnionPay,PKPaymentNetworkVisa];

//2.5 支付请求包含一个支付摘要项目的列表

NSDecimalNumber *price1 = [NSDecimalNumber decimalNumberWithString:@"10.0"];

PKPaymentSummaryItem *item1 = [PKPaymentSummaryItem summaryItemWithLabel:@"iPhone" amount:price1];

NSDecimalNumber *price2 = [NSDecimalNumber decimalNumberWithString:@"20.0"];

PKPaymentSummaryItem *item2 = [PKPaymentSummaryItem summaryItemWithLabel:@"iPad" amount:price2 type:PKPaymentSummaryItemTypePending];

NSDecimalNumber *totalPrice = [NSDecimalNumber zero];

totalPrice = [totalPrice decimalNumberByAdding:price1];

totalPrice = [totalPrice decimalNumberByAdding:price2];

PKPaymentSummaryItem *total = [PKPaymentSummaryItem summaryItemWithLabel:@"财务中心" amount:totalPrice type:PKPaymentSummaryItemTypePending];

//注意:数组最后一个是总价格

request.paymentSummaryItems = @[item1,item2,total];

//2.6运输方式

NSDecimalNumber *shippingPrice = [NSDecimalNumber decimalNumberWithString:@"18.0"];

PKShippingMethod *method = [PKShippingMethod summaryItemWithLabel:@"顺风快递" amount:shippingPrice];

method.identifier = @"shunfeng";

method.detail = @"24小时内送到";

request.shippingMethods = @[method];

request.shippingType = PKShippingTypeServicePickup;

//2.7通过指定merchantCapabilities属性来指定你支持的支付处理标准,3DS支付方式是必须支持的,EMV方式是可选的

request.merchantCapabilities = PKMerchantCapability3DS | PKMerchantCapabilityEMV | PKMerchantCapabilityCredit | PKMerchantCapabilityDebit;

//2.8需要的配送信息和账单信息

request.requiredBillingAddressFields = PKAddressFieldAll;

request.requiredShippingAddressFields = PKAddressFieldAll;

//2.9 存储额外信息

request.applicationData = [@"购物车ID:123456" dataUsingEncoding:NSUTF8StringEncoding];

//四.弹出授权控制器,让用户给支付授权

//开始支付

PKPaymentAuthorizationViewController *pkCtrl = [[PKPaymentAuthorizationViewController alloc]initWithPaymentRequest:request];

if (pkCtrl == nil) {

NSLog(@"授权控制器创建失败");

return;

}

pkCtrl.delegate = self;

[self presentViewController:pkCtrl animated:YES completion:nil];

}

#pragma mark - PKPaymentAuthorizationViewControllerDelegate

//五.处理支付凭证

//授权成功

- (void)paymentAuthorizationViewController:(PKPaymentAuthorizationViewController *)controller

didAuthorizePayment:(PKPayment *)payment

completion:(void (^)(PKPaymentAuthorizationStatus status))completion{

/*

服务器接收到token后的一般处理流程:

1.验证支付数据的哈希表和签名

2.为加密过的支付数据解码

3.向支付处理系统提交支付数据

4.向订单追踪系统提交订单

*/

NSLog(@"验证授权---%@",payment.token);

/*

处理支付请求时,你有两个选择:

1.你既可以利用支付平台处理支付请求,

2.也可以自己实现支付请求处理流程。

一个常用的支付平台可以完成上述大部分操作。

*/

NSLog(@"验证通过后,需要开发中继续完成交易");

BOOL isSuccess = YES;

if (isSuccess) {

completion(PKPaymentAuthorizationStatusSuccess);

}else{

completion(PKPaymentAuthorizationStatusFailure);

}

}

//六.关闭授权控制器

//授权成功或者取消授权之后会调用此方法

- (void)paymentAuthorizationViewControllerDidFinish:(PKPaymentAuthorizationViewController *)controller{

NSLog(@"取消或者交易完成");

[self dismissViewControllerAnimated:YES completion:nil];

}

参考自大顺子写的博客,详细请看原文,写的非常好,非常详细。

原文地址:http://www.cnblogs.com/dashunzi/archive/2016/02/23/ApplePay.html#undefined

转载于:https://www.cnblogs.com/guchunli/p/6232466.html

Apple Pay 初探相关推荐

  1. 苹果内购和 Apple Pay

    作者:CC老师_MissCC 链接:http://www.jianshu.com/p/e3bc47e81785 來源:简书 苹果内购 1.什么是内购? 如果你购买的商品,是在本app中使用和消耗的,就 ...

  2. Apple Pay和Samsung Pay可以支付BCH了

    提到BCH,你最先想到的是什么?是点对点电子现金的初心,是实用性强的优势,是超低手续费不拥堵的交易特性,是好用的智能合约平台,是被众多商家接受支付的事实,是技术不断改进的创新,还是成为世界上最健全的货 ...

  3. 美国星巴克肯德基明年将支持Apple Pay

    据国外媒体报道,苹果旗下的Apple Pay即将大范围地扩大触角,全美各地的星巴克.肯德基和Chili's正准备在2016年支持该项移动支付服务,今年将展开试行项目. Apple Pay高管詹妮弗•贝 ...

  4. Apple Pay会不会成为下一个eBay(完结)

    聊Apple Pay完全不是为了什么竞品分析,也不是鸡蛋里挑骨头,更不是带有很强"功利主义"色彩的去"知己知彼,百战不殆",找不足,见缝插针,推己而代之.很简单 ...

  5. Apple Pay与银联的联姻,是战略,不是产品

    近日,互联网圈被Apple Pay入华与银联联姻的消息刷屏了!!!! 一时间,各大媒体网站纷纷为支付宝和微信支付担忧,肿么办肿么办,大鳄来啦!不免我们这些屌丝都替马云马化腾捏把汗,多年经营的支付天下就 ...

  6. 为何银联选择了Apple pay?

    咖友提问:为什么银联支持Apple Pay,却不搭理支付宝? 在线上,微信支付和支付宝支付几乎已经接入了大大小小各种电商,水电煤气.交通违章罚款等城市服务也可以用它们付款,而红包带来的则是在社交关系中 ...

  7. Apple Pay,呸!

    嘀,学生卡 嘀,老宁卡 嘀,Apple Pay 我们当中出了一个叛徒! 2月18日上午,Apple Pay正式入华 果粉圈.银行圈.朋友圈.饭友圈.炮友圈 一片沸腾 追捧.吐槽,评论纷杂 1 果粉圈 ...

  8. Apple Pay及其背后的安全技术

    2019独角兽企业重金招聘Python工程师标准>>> 1.  什么是Apple Pay Apple Pay是Apple公司创新的一种安全支付方式.利用Apple Pay,用户可以在 ...

  9. android pay 绑定失败,实战Apple Pay失败!Android Pay你期待吗?

    原标题:实战Apple Pay失败!Android Pay你期待吗? ▲这两天朋友圈最热议的话题相信就是Apple Pay入华的重磅消息了,自2月18日凌晨5点上线以来,短短一天时间已有三千万张银行卡 ...

最新文章

  1. python怎么编辑图片_python读取图片并修改格式与大小的方法
  2. OO-ALV标准工具栏按钮
  3. SAP收货后更改采购单价格
  4. bootstrap学习(三)表单
  5. Hyperledger Fabric 1.0 从零开始(十二)——fabric-sdk-java应用
  6. 如何将一个向量投影到一个平面上_CameraLidar投影:2D3D导航
  7. 一加Ace外观设计理念揭晓:主推硬朗直线条力量感/速度感十足
  8. 神经网络算法识别手写数字minst
  9. 数据分析流程(学习)
  10. powerdesigner下载,注释转换和导出word
  11. Go工程管理和业务实践
  12. Monyer黑客小游戏 踩坑总结
  13. C解决duplicate symbol
  14. banner 图片自动轮播
  15. 陪着时光,走过羊肠阡陌
  16. 打开showModalDialog模式窗体并提交,且不打开新的IE窗口
  17. 一种踩内存的定位方法(C++)
  18. 本体开发日记03-理解代码
  19. JAVA sleep函数如何用_转载:java中Thread.sleep()函数使用
  20. android township 游戏存档备份,游戏闪退存档全没了?不要怕,可以这样备份与还原游戏存档!...

热门文章

  1. 基于JAVA层次分析法食堂评价系统计算机毕业设计源码+系统+lw文档+部署
  2. java计算机毕业设计ssm医疗垃圾管理系统f5aj8(附源码、数据库)
  3. 整理了200多个Python实战案例,都有完整且详细的教程
  4. MBD-从一个示例看代码生成过程(rtw文件、TLC语言)
  5. 五行塔怎么吃第五个_洪荒之炼器狂人云中子
  6. 【Vue 3 实战一】搭建一个新项目并上传至gitee
  7. oracle instr 反向,Oracle中的instr()函数
  8. hdu-多校联赛6301 Distinct Values
  9. 荣耀智慧屏刷鸿蒙2,首搭鸿蒙OS的荣耀智慧屏,真的有那么“神奇”吗?
  10. Fluentd 配置