1 导入头文件

导入需要的框架对应的头文件PassKit/PassKit.h 和AddressBook/AddressBook.h,并且遵循PKPaymentAuthorizationViewControllerDelegate
#import <PassKit/PassKit.h>

#import <AddressBook/AddressBook.h>
@interface ViewController ()<PKPaymentAuthorizationViewControllerDelegate>

2 处理支付页面

支付界面都是采用的PKPaymentAuthorizationViewController,每一条支付信息可以采用PKPaymentSummaryItem来进行编辑,最后调用苹果支付的时候就是调用的这个
- (IBAction)payAction:(UIButton *)sender {
    if([PKPaymentAuthorizationViewController canMakePayments]) {
        NSLog(@"支持支付");
        // 我们后面创建出来的支付页面就是根据这个request
        PKPaymentRequest *request = [[PKPaymentRequest alloc] init];
        // 商品目录
        PKPaymentSummaryItem *widget1 = [PKPaymentSummaryItem summaryItemWithLabel:@"麻辣烫"
                                                                            amount:[NSDecimalNumber decimalNumberWithString:@"0.01"]];
        PKPaymentSummaryItem *widget2 = [PKPaymentSummaryItem summaryItemWithLabel:@"肯德基"
                                                                            amount:[NSDecimalNumber decimalNumberWithString:@"0.01"]];
        PKPaymentSummaryItem *widget3 = [PKPaymentSummaryItem summaryItemWithLabel:@"海鲜大餐"
                                                                            amount:[NSDecimalNumber decimalNumberWithString:@"0.02"]];
        PKPaymentSummaryItem *widget4 = [PKPaymentSummaryItem summaryItemWithLabel:@"coderqi" amount:[NSDecimalNumber decimalNumberWithString:@"0.03"] type:PKPaymentSummaryItemTypeFinal];
        request.paymentSummaryItems = @[widget1, widget2, widget3, widget4];
//        request.countryCode = @"CN";
//        request.currencyCode = @"CNY";//人民币
        request.countryCode = @"US";
        request.currencyCode = @"USD";
        request.supportedNetworks = @[PKPaymentNetworkChinaUnionPay, PKPaymentNetworkMasterCard, PKPaymentNetworkVisa];
        // 这里填的是就是我们创建的merchat IDs
        request.merchantIdentifier = @"merchant.com.coderqi.applepay.pay";
        request.merchantCapabilities = PKMerchantCapabilityEMV;
        //增加邮箱及地址信息
        request.requiredBillingAddressFields = PKAddressFieldEmail | PKAddressFieldPostalAddress;
        // 根据request去创建支付页面
        PKPaymentAuthorizationViewController *paymentPane = [[PKPaymentAuthorizationViewController alloc] initWithPaymentRequest:request];
        // 设置代理
        paymentPane.delegate = self;
        if (!paymentPane) {
            NSLog(@"出问题了");
        } else {
            // 模态推出页面
            [self presentViewController:paymentPane animated:YES completion:nil];
        }
    } else {
       
        NSLog(@"该设备不支持支付");

    }
}

3 编写代理回调

接下来就是代理回调的处理,服务器接收到了我们的请求之后收到返回信息会调用对应的方法。
#pragma mark ----支付状态
- (void)paymentAuthorizationViewController:(PKPaymentAuthorizationViewController *)controller
                       didAuthorizePayment:(PKPayment *)payment
                                completion:(void (^)(PKPaymentAuthorizationStatus status))completion{
    /* //这是老版,已过时
    NSError *error;
    ABMultiValueRef addressMultiValue = ABRecordCopyValue(payment.billingAddress ,kABPersonAddressProperty);
    NSDictionary *addressDictionary = (__bridge_transfer NSDictionary *) ABMultiValueCopyValueAtIndex(addressMultiValue, 0);
    //这里模拟取出地址里的每一个信息。
    NSLog(@"%@",addressDictionary[@"State"]);
    NSData *json = [NSJSONSerialization dataWithJSONObject:addressDictionary options:NSJSONWritingPrettyPrinted error: &error];
    // 这里需要将Token和地址信息发送到自己的服务器上,进行订单处理,处理之后,根据自己的服务器返回的结果调用completion()代码块,根据传进去的参数界面的显示结果会不同
    PKPaymentAuthorizationStatus status; // From your server
    completion(status);
    */
    //这是新版
       //拿到token,
    PKPaymentToken *token = payment.token;
    //拿到订单地址
    NSString *city = payment.billingContact.postalAddress.city;
    NSLog(@"city:%@",city);
    ///在这里将token和地址发送到自己的服务器,有自己的服务器与银行和商家进行接口调用和支付将结果返回到这里
    //我们根据结果生成对应的状态对象,根据状态对象显示不同的支付结构
    //状态对象
    PKPaymentAuthorizationStatus status = PKPaymentAuthorizationStatusFailure;
    completion(status);
}
#pragma mark ----支付完成
- (void)paymentAuthorizationViewControllerDidFinish:(PKPaymentAuthorizationViewController *)controller {
   
    // 支付完成后让支付页面消失
    [controller dismissViewControllerAnimated:YES completion:nil];
}

http://www.coderqi.com/2016/02/25/AppPay/

Apple Pay 详解相关推荐

  1. Apply pay详解

    Apply pay详解 文章出处:http://weibo.com/p/2304187ac5be450102v6oa?pids=&feed_filter=1 北京时间2014年9月10日凌晨1 ...

  2. 【干货】PMcaff干货课程学习精彩分享:Apple Watch 技术特性详解

    昨天PMcaff给大家推荐了Apple Watch的发布会,好多小伙伴们在后台留言,所以PMcaff小咖今天给大家找来一篇干货,看完感觉还不错,在这里分享给大家. 作为苹果主推的智能穿戴产品,Appl ...

  3. 华为怎么装android pay,华为pay如何使用 huawei pay使用方法详解

    华为pay如何使用?huawei pay使用方法详解.华为pay已于3月8日正式与中国银行合作,传说中的华为支付服务终于亮相,名为"Huawei Pay",那么华为pay如何使用呢 ...

  4. Java(enum)枚举用法详解

    转载自 Java(enum)枚举用法详解 本篇文章主要介绍了Java 枚举用法详解,枚举的好处:可以将常量组织起来,统一进行管理.有兴趣的可以一起来了解一下. 概念 enum的全称为 enumerat ...

  5. 接入Apple Pay流程

    接入Apple Pay流程 最近在做IOS内购的后端事项,所以总结下整个流程,都是参考网上大佬的. 首先我们要搞清楚两个概念:苹果支付(Apple Pay)和IOS内购(IAP) 苹果支付:是一种支付 ...

  6. 配置文件格式详解之终极无惑

    文章目录 1.键值对 2.JSON 2.1 JSON 语法 2.2 JSON 实例 2.3 JSON 解析 3.XML 3.1 XML 语法 3.2 XML 实例 3.3 XML 解析 4.YAML ...

  7. 第60期:详解移动互联网背后的安全技术

    [主题]详解移动互联网背后的安全技术 [讲师]张楚 豆荚科技创始人 [时间]10月10日 20:00-21:00 [地点]物联网智库微信群 [提纲] 1.移动支付带来的影响 2.生物识别背后的安全保护 ...

  8. iOS 内购(In-App Purchase)详解

    iOS 内购(In-App Purchase)详解 概述 IAP 全称:In-App Purchase,是指苹果 App Store 的应用内购买,是苹果为 App 内购买虚拟商品或服务提供的一套交易 ...

  9. 苹果支付apple pay遇到的一些问题

    苹果支付今年2月18号进入中国,很快网上便有了各种接入流程详解,尽管如此,我还是很不幸的遇到了问题,还搞了我一天的时间,这里拿来分享下,希望遇到的朋友能少走弯路. 首先是下面这里:很多技术文档并没有写 ...

  10. Apache POI使用详解

    转载自:http://www.bubuko.com/infodetail-654763.html 非原创 [首页] [新闻] [文章] [登录]  [注册] 首页 Web开发 Windows开发 编程 ...

最新文章

  1. 控制台打印汉字的方法
  2. 利用Wireshark和OSS的API文档简单实现上传和下载
  3. java变量设置_配置环境变量
  4. mysql查询递增列_mysql在查询结果列表前添加一列递增的序号列(最简)
  5. html5 can,微软想要从HTML5中分离Can
  6. (转)用Java获得当前性能信息
  7. 我也来记录我的一些开发心得和笔记!
  8. java局部内部类 final_Java的局部内部类以及final类型的参数和变量
  9. 1. 方程求根(二分法)
  10. 学号程序编辑 c语言,C语言程序设计实习报告 行编辑器 学生管理系统
  11. 某企业虚拟化平台时间同步异常排查
  12. DataSet本地化数据的二表链接操作
  13. 【详细】小程序模板使用教程
  14. php 检查货币类型_PHP如何获取货币汇率-百度经验
  15. java 微信网页授权_java微信网页授权获取openid(第十四课)
  16. 解决output directory already exists
  17. 设置MFC对话框背景图片
  18. 左边是地狱右边也是地狱_像我这样的设计师的特别地狱
  19. 信息收集:CCF大学生计算机系统与程序设计竞赛(CCSP)
  20. 六上计算机基础知识ppt课件,计算机应用基础(windows 7+office 2010)课件 第六章 文稿演示软件PowerPoint 2010.ppt.pdf-汇文网...

热门文章

  1. 360视频:分段球面投影SSP
  2. 服务器插sata硬盘启动不了怎么办,双SATA硬盘启动无法进入系统故障解决办法
  3. 组合数的各种性质和定理
  4. isPrime()函数:判断素数,构造素数表
  5. UiPath PDF拆分
  6. 计算机学科代表的思维,【判断题】计算思维,是指计算机、软件及计算相关学科中的科学家和工程技术人员的思维模式。计算思维又称构造思维,它以设计和构造为特征, 以计算机学科为代表。...
  7. STM32学习笔记一:开发环境
  8. 一键开关机电路图解析
  9. python 取名字_个人儿子叫派森,用python程序化取名字,他管这叫爹?
  10. 物联网开发 无线433MHz安防报警系统 上