首先是搜到的大神写的全套知识点:http://www.jianshu.com/p/8d7b86f1d142

http://www.cnblogs.com/dashunzi/archive/2016/02/23/ApplePay.html

银联和Apple Pay的关系

http://www.voidcn.com/blog/l964968324/article/p-5737385.html

创建AppID

给APP添加Apple Pay的权限

申请创建MerchantID

编辑Merchant ID设置支持的支付的国家地区(即是否支持国外支付,上传一个自己生成的CRS文件加密时使用)

创建描述文件,项目设定中开启支付功能,选择自己创建的Merchant ID这个是多选的,应该是可以针对不同的支付对象吧

注意事项和点项总结:

唤起苹果支付必须使用苹果提供的按钮样式否者奔溃:

 1 //    Type : 类型
 2
 3 //    PKPaymentButtonTypePlain
 4
 5 //    PKPaymentButtonTypeBuy
 6
 7 //    PKPaymentButtonTypeSetUp
 8
 9
10
11 //    style : 样式
12
13 //    PKPaymentButtonStyleWhite
14
15 //    PKPaymentButtonStyleWhiteOutline
16
17 //    PKPaymentButtonStyleBlack
18
19
20
21     PKPaymentButton * payButton = [PKPaymentButton buttonWithType:PKPaymentButtonTypePlain style:PKPaymentButtonStyleWhiteOutline];
22
23     payButton.center = self.view.center;
24
25     [payButton addTarget:self action:@selector(payAction:) forControlEvents:UIControlEventTouchUpInside];
26
27     [self.view addSubview:payButton];

唤起支付控件,苹果支付只是达到个信息传递功能,至于支付的完成还有成功还是失败的状态判定,需要通过后台和银行之间的接口调用来实现(银行和后台之间交互实现支付功能,后台和前端交互获取支付结果)

-(void)payAction:(PKPaymentButton *)button
{//系统提供了API来判断当前设备是否支持Apple Pay支付的功能。if([PKPaymentAuthorizationViewController canMakePayments]){//设备支持支付//PKPayment类来创建支付请求PKPaymentRequest *request = [[PKPaymentRequest alloc] init];//国家 //HK 香港   CN :  中国大陆request.countryCode = @"CN";//人民币 // HKD  港币  CNY : 人民币    USD : 美元request.currencyCode = @"CNY";// 其他国家以及币种的缩写自行百度///由商家支持的支付网络 所支持的卡类型//此属性限制支付卡,可以支付。//        PKPaymentNetworkAmex : 美国运通//        PKPaymentNetworkChinaUnionPay : 中国银联//        PKPaymentNetworkVisa  : Visa卡//        PKPaymentNetworkMasterCard : 万事达信用卡//        PKPaymentNetworkDiscover//        PKPaymentNetworkInterac//        PKPaymentNetworkPrivateLabel//        PKEncryptionSchemeECC_V2request.supportedNetworks = @[PKPaymentNetworkAmex, PKPaymentNetworkChinaUnionPay, PKPaymentNetworkDiscover, PKPaymentNetworkInterac, PKPaymentNetworkMasterCard, PKPaymentNetworkPrivateLabel, PKPaymentNetworkVisa, PKEncryptionSchemeECC_V2];//        PKMerchantCapability3DS // 美国的一个卡 必须支持//        PKMerchantCapabilityEMV // 欧洲的卡//        PKMerchantCapabilityCredit //信用卡//        PKMerchantCapabilityDebit //借记卡//商家的支付处理能力//PKMerchantCapabilityEMV : 他的旗下有三大银行 : 中国银联 Visa卡 万事达信用卡//也就是说merchantCapabilities指的支付的银行卡的范围。request.merchantCapabilities =   PKMerchantCapabilityDebit | PKMerchantCapabilityCredit | PKMerchantCapabilityEMV;//merchantIdentifier 要和你在开发者中心生成的id保持一致request.merchantIdentifier = @"merchant.com.ruizhihulian.applePay";//需要的配送信息和账单信息request.requiredBillingAddressFields = PKAddressFieldAll;//(配送信息非必须)request.requiredShippingAddressFields = PKAddressFieldAll;//运输方式(没有配送也就没有配送方式)NSDecimalNumber * shippingPrice = [NSDecimalNumber decimalNumberWithString:@"0.01"];PKShippingMethod *method = [PKShippingMethod summaryItemWithLabel:@"快递公司" amount:shippingPrice];method.detail = @"24小时送到!";method.identifier = @"kuaidi";request.shippingMethods = @[method];request.shippingType = PKShippingTypeServicePickup;// 2.9 存储额外信息// 使用applicationData属性来存储一些在你的应用中关于这次支付请求的唯一标识信息,比如一个购物车的标识符。在用户授权支付之后,这个属性的哈希值会出现在这次支付的token中。request.applicationData = [@"商品ID:123456" dataUsingEncoding:NSUTF8StringEncoding];//添加物品到支付页//创建物品并显示,这个对象描述了一个物品和它的价格,数组最后的对象必须是总价格。//使用PKPaymentSummaryItem来创建商品信息PKPaymentSummaryItem *widget1 = [PKPaymentSummaryItem summaryItemWithLabel:@"商品一" amount:[NSDecimalNumber decimalNumberWithString:@"0.01"]];PKPaymentSummaryItem *widget2 = [PKPaymentSummaryItem summaryItemWithLabel:@"商品二" amount:[NSDecimalNumber decimalNumberWithString:@"0.01"]];PKPaymentSummaryItem *total = [PKPaymentSummaryItem summaryItemWithLabel:@"收款方名称" amount:[NSDecimalNumber decimalNumberWithString:@"0.02"]];request.paymentSummaryItems = @[widget1, widget2, total];//        request.paymentSummaryItems = @[widget1];//显示认证视图PKPaymentAuthorizationViewController * paymentPane = [[PKPaymentAuthorizationViewController alloc] initWithPaymentRequest:request];paymentPane.delegate = self;[self presentViewController:paymentPane animated:TRUE completion:nil];}else{//设备不支持支付NSLog(@"设备不支持支付");}
}

必须实现两个回调函数,否者会出现找不到方法而程序出错

#pragma mark -PKPaymentAuthorizationViewControllerDelegate
//这个代理方法指的是支付过程中会进行调用
- (void)paymentAuthorizationViewController:(PKPaymentAuthorizationViewController *)controllerdidAuthorizePayment:(PKPayment *)paymentcompletion:(void (^)(PKPaymentAuthorizationStatus status))completion
{//payment:代表的是一个支付对象, 支付相关的所有信息都在他的身上:1.token.   2.address//completion : 是一个回调的block  ,block回调的参数,直接影响到界面结果的展示。/*PKPaymentAuthorizationStatus 交易状态PKPaymentAuthorizationStatusSuccess, // 成功交易PKPaymentAuthorizationStatusFailure // 没有授权交易PKPaymentAuthorizationStatusInvalidBillingPostalAddress  // 拒绝账单地址PKPaymentAuthorizationStatusInvalidShippingPostalAddress, // 拒绝收货地址PKPaymentAuthorizationStatusInvalidShippingContact //提供的信息不够PKPaymentAuthorizationStatusPINRequired  // 交易需要指纹输入PKPaymentAuthorizationStatusPINIncorrect // 输入不正确,重新输入.PKPaymentAuthorizationStatusPINLockout// 输入次数超出*/PKPaymentToken * token = payment.token;NSLog(@"获取token---%@", token);//获取订单地址NSString * address = payment.billingContact.postalAddress.city;NSLog(@"获取到地址: %@", address);NSLog(@"验证通过后, 需要开发者继续完成交易");// 在这个位置, 我们开发人员需要把token值和商品的其他信息如:地址 id  这些 , 上传到自己公司的服务器。然后公司的服务器和银行的商家接口进行接口的调用,并将接口调用返回的支付结果信息返回到这里。//根据不同的支付结果状态,让block调用不同的交易状态;//比如说:服务器调用支付结果是成功的, 就让        completion(PKPaymentAuthorizationStatusSuccess);          如果失败 调用        completion(PKPaymentAuthorizationStatusFailure);//如:BOOL isSuccess = YES;if (isSuccess) {completion(PKPaymentAuthorizationStatusSuccess);}else{completion(PKPaymentAuthorizationStatusFailure);}
}
// 当授权成功之后或者取消授权之后会调用这个代理方法
- (void)paymentAuthorizationViewControllerDidFinish:(PKPaymentAuthorizationViewController *)controller
{NSLog(@"取消或者交易完成");[self dismissViewControllerAnimated:YES completion:nil];
}

转载于:https://www.cnblogs.com/yuxiaoyiyou/p/7126479.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点上线以来,短短一天时间已有三千万张银行卡 ...

  10. ios apple pay 证书配置

    一 环境配置 需要开发者账号 开发者中心https://developer.apple.com/membercenter/index.action 添加一个APP IDs 二.配置Merchant I ...

最新文章

  1. 企业大数据运用实战案例分享
  2. ACM-ICPC 2018 徐州赛区网络预赛 D. Easy Math
  3. Oracle Service Bus简介
  4. endnote修改正文中参考文献标注_如何用Endnote在论文中插入参考文献
  5. 心得复述知识体系:《强化学习》中的蒙特卡洛方法 Monte Carlo Methods in Reinforcement Learning
  6. rx550 黑苹果_黑苹果Hackintosh显卡入手指南
  7. 基于EEG信号的睡眠分期算法记录2-一种新的全自动随机森林睡眠分期算法(英)
  8. matlab非线性超定方程组求代数解,非线性超定方程组求解
  9. 工程数学(线性代数)笔记
  10. 德州理工大学计算机科学专业录取,美国留学:德州理工大学录取要求
  11. 解决Only fullscreen activities can request orientation的方法
  12. 依赖倒置、控制反转、依赖注入
  13. Contour Processing
  14. 2020 Python中文社区热门文章 Top 10
  15. UML建模-业务流程分析
  16. MODBUS调试工具(modscan32)使用说明
  17. 【CC2530授课笔记】⑧ PWM实现呼吸灯,RGB三色灯,蜂鸣器播放音乐
  18. choice() 函数
  19. MySQL(1):新建表,增,删,改,查
  20. Minio 在Linux环境部署报错error occured ErrorResponse(code=InternalError, message=We encountered an internal

热门文章

  1. React基础第一天-jsx
  2. Java环境安装以及安装SDK安装教程
  3. 计算机网络Sever服务器网络搭建实践(一)
  4. 5分钟商学院-个人篇-创新能力
  5. Window系统右键菜单功能实现
  6. 服装生产管理系统软件都有哪些实用功能?应该如何选购?
  7. apple pencil值不值得购买,ipad第三方电容笔了解下
  8. R语言如何将不规则的日期数据改为规则的日期数据
  9. jQuery.parseJSON(json)方法将字符串转换成js对象
  10. iPhone如何批量删除联系人?一次性删除联系人的好方法!