Apple Pay的快速实现
一、在Apple开发者中心配置 AppleID 和 Merchant IDs


二、配置好证书后在Xcode中开启Apple Pay

三、代码实现
3.1 判断是否支持Apple Pay,如果支持又将支持哪些银行卡。
// 判断是否支持Apple Pay
if (![PKPaymentAuthorizationViewController canMakePayments]) {
NSLog(@"不支持Apple Pay");
// 如果没有绑定VISA或者银联卡,点击按钮去绑定银行卡
}else if (![PKPaymentAuthorizationViewController canMakePaymentsUsingNetworks:@[PKPaymentNetworkVisa,PKPaymentNetworkChinaUnionPay]]){
PKPaymentButton *addPayBtn = [PKPaymentButton buttonWithType:PKPaymentButtonTypeBuy style:PKPaymentButtonStyleWhiteOutline];
[addPayBtn addTarget:self action:@selector(addPay) forControlEvents:UIControlEventTouchUpInside];
addPayBtn.center = self.view.center;
[self.view addSubview:addPayBtn];
// 如果存在VISA或者银联卡,点击按钮去支付
}else{
PKPaymentButton *payBtn = [PKPaymentButton buttonWithType:PKPaymentButtonTypeBuy style:PKPaymentButtonStyleBlack];
[payBtn addTarget:self action:@selector(buy) forControlEvents:UIControlEventTouchUpInside];
payBtn.center = self.view.center;
[self.view addSubview:payBtn];
}
3.2 如果没有绑定VISA卡或者银联卡时,点击支付按钮会跳转到绑卡页面
// 添加银行卡
-(void)addPay{
PKPassLibrary *pay = [[PKPassLibrary alloc]init];
[pay openPaymentSetup];
}
3.3 如果已经绑定银行卡,则去支付,并设置支付信息和商户信息
// 支付
-(void)buy{
// 1.创建支付请求
PKPaymentRequest *request = [[PKPaymentRequest alloc]init];
// 商户号
request.merchantIdentifier = @"merchant.com.zhangdinghao.ApplePay";
// 货币代码和国家代码
request.countryCode = @"CN";
request.currencyCode = @"CNY";
// 请求支付的网络(和之前判断的网络保持一致)
request.supportedNetworks = @[PKPaymentNetworkVisa,PKPaymentNetworkChinaUnionPay];
// 商户处理方式
request.merchantCapabilities = PKMerchantCapability3DS;
// 商品1
NSDecimalNumber *price = [NSDecimalNumber decimalNumberWithString:@"7999.00"];
PKPaymentSummaryItem *item = [PKPaymentSummaryItem summaryItemWithLabel:@"iPhone 7" amount:price];
// 商品2
NSDecimalNumber *price2 = [NSDecimalNumber decimalNumberWithString:@"149.00"];
PKPaymentSummaryItem *item2 = [PKPaymentSummaryItem summaryItemWithLabel:@"iPhone数据线" amount:price2];
// 商品汇总
NSDecimalNumber *price3 = [NSDecimalNumber decimalNumberWithString:@"8148.00"];
PKPaymentSummaryItem *item3 = [PKPaymentSummaryItem summaryItemWithLabel:@"Apple Store" amount:price3];
request.paymentSummaryItems = @[item,item2,item3];
// 账单或者发票接收地址
request.requiredBillingAddressFields = PKAddressFieldAll;
// 快递地址
request.requiredShippingAddressFields = PKAddressFieldAll;
NSDecimalNumber *kuaidi = [NSDecimalNumber decimalNumberWithString:@"0.00"];
PKShippingMethod *method = [PKShippingMethod summaryItemWithLabel:@"顺丰" amount:kuaidi];
method.identifier = @"shangmen";
method.detail = @"72小时内送货上门";
request.shippingMethods = @[method];
// 2.验证支付
PKPaymentAuthorizationViewController *avc = [[PKPaymentAuthorizationViewController alloc]initWithPaymentRequest:request];
avc.delegate = self;
[self presentViewController:avc animated:YES completion:nil];
}
3.4 实现支付的代理方法
-(void)paymentAuthorizationViewController:(PKPaymentAuthorizationViewController *)controller didAuthorizePayment:(PKPayment *)payment completion:(void (^)(PKPaymentAuthorizationStatus))completion{
// 拿到支付信息发送给服务器,服务器处理完成后返回支付状态
BOOL isSucess = YES;
if (isSucess) {
completion(PKPaymentAuthorizationStatusSuccess);
}else{
completion(PKPaymentAuthorizationStatusFailure);
}
}
-(void)paymentAuthorizationViewControllerDidFinish:(PKPaymentAuthorizationViewController *)controller{
[self dismissViewControllerAnimated:controller completion:nil];
}
四、如图为最终的实现方法,商品信息根据实际设置,配送信息等根据实际商品来选择,如果是虚拟商品则不需要

https://github.com/CalvinCheungCoder
Apple Pay的快速实现的更多相关文章
- 快速玩转Apple Pay开发
快速玩转Apple Pay开发 更新时间:2016年02月20日09时25分 来源:传智播客 Apple Pay 2016年2月18日上午,苹果公司宣布,与中国银联达成合作,正式在中国大陆上线Appl ...
- Apple Pay 初探
Apple Pay 一.概述 1.支付方式:Touch ID/ Passcode 2.设备要求:iPhone6以上(iphone:线上/线下 ipad:线上 watch:线下) 3.系统要求:iOS8 ...
- 【转】iOS开发 -- Apple Pay
技术博客原地址:http://www.cnblogs.com/dashunzi/p/ApplePay.html#top 原技术博客中有源码和视频,有感兴趣的朋友可以研究一下! 一.什么是Apple P ...
- 开发apple pay碰到的问题总结
本来想简单总结一下Apple Pay 开发过程中的几个问题, 结果被下面这篇文章全碰上了, 干脆全文转载, 作者对相关资源整理得比较详细, 比较有参考价值 总的来说, 我们做过 APNs 推送的话, ...
- iOS Apple Pay
iOS 苹果支付 需要证书支持支付功能 targets 打开支付功能按钮 //ApplePay#import <PassKit/PassKit.h> ...
- Apple Pay
Apple Pay运行环境:iPhone6以上设备,操作系统最低iOS9.0以上,部分信息设置需要iOS9.2以上.目前还不支持企业证书添加. 环境搭建好后可以在模拟器上面运行,xcode7.2.1+ ...
- iOS开发 Apple Pay
一.什么是Apple Pay? 1. 概念 Apple Pay,简单来说, 就是一种移动支付方式.通过Touch ID/ Passcode,用户可使用存储在iPhone 6, 6p等设备上的信用卡和借 ...
- Apple Pay(转)
Apple Pay 是在 iOS 8 中第一次被介绍,它可以为你的应用中的实体商品和服务,提供简单.安全.私密的支付方式.它使得用户支付起来非常简便,只需按一下指纹就可以授权进行交易. Apple P ...
- Apple Watch开发快速入门教程
Apple Watch开发快速入门教程 试读下载地址:http://pan.baidu.com/s/1eQ8JdR0 介绍:苹果为Watch提供全新的开发框架WatchKit.本教程是国内第一本A ...
随机推荐
- 编译2.4.X apache 常见错误
安装高版本的 apr apr-util ./configure prefix=/usr/local/apr ./configure prefix=/usr/local/apr-util -- ...
- js根据ID修改背景图片
<SCRIPT language=javascript> function expand(el) { var childObj = document.getElementById(&quo ...
- samba完美安装
感觉是一个相当强大的东西. Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件.它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务.为客户机/服务器型协议,客户机通过该协议 ...
- ADO.NET 使用通用数据库操作类Database (SQL Server)
一.Web.config配置 <connectionStrings> <add name="constr_name" connectionString=" ...
- 从PDF中提取信息----PDFMiner
今天由于某种原因需要将pdf中的文本提取出来,就去搜了下资料,发现PDFMiner是针对 内容提取的,虽然最后发现pdf里面的文本全都是图片,就没整成功,不过试了个文本可复制的 那种pdf文件,发现还 ...
- 好用的Magento一步支付插件One Step Checkout免费版
Magento免费版一步支付插件地址:http://www.magentocommerce.com/magento-connect/one-page-checkout.html 直接引用KEY:ht ...
- 初识ReactJs(一)
React的开发背景 ReactJS官网地址:http://facebook.github.io/react/ Github地址:https://github.com/facebook/react J ...
- Thymeleaf3.0内容
Thymeleaf简介 什么是Thymeleaf Thymeleaf是网站或者独立应用程序的新式的服务端java模板引擎,可以执行HTML,XML,JavaScript,CSS甚至纯文本模板. Thy ...
- Install Atom editor in ubuntu 14.04
Step 1: Add repository sudo add-apt-repository ppa:webupd8team/atom Step 2: Update the repository su ...
- SQL Server中的日期格式化
SQL Server中文版的默认的日期字段datetime格式是yyyy-mm-dd Thh:mm:ss.mmm 例如: select getdate() 2004-09-12 11:06:08 ...