文档章节

Apple Pay 应用内支付

诚实的钟
 诚实的钟
发布于 2016/09/27 14:16
字数 670
阅读 32
收藏 0

Merchant ID

在苹果开发网站上,添加Merchant ID

为Merchant ID 配置Apple Pay证书

 

CSR文件:

 

 

指定秘钥对信息      算法:ECC   key size:256bits

 

说明:中国区接入ApplePay使用的算法时RSA方式

 

Xcode配置

Xcode 6.1+

Xcode Capabilities 设置 Apple Pay 开关on

选中添加的Merchant ID

 

头文件引用

#import <PassKit/PassKit.h>

PKPaymentAuthorizationViewController

指定初始化方法:

- (instancetype)initWithPaymentRequest:(PKPaymentRequest *)request;

展现方式:

presentViewController

 

是否支持ApplePay

  • iOS版本 8.1+
  • 调用PKPaymentAuthorizationViewController判断:
    • + (BOOL)canMakePayments;
      + (BOOL)canMakePaymentsUsingNetworks:(NSArray *)supportedNetworks;

       

  • 目前支持Apple Pay的应用内支付的设备有:iPhone 6、iPhone 6 Plus、iPad Air 2、iPad mini3
  • Apple watch 不支持应用内支付

PKPaymentRequest

属性说明:

  • countryCode (字符串)例:US(ISO国家编码)
  • currencyCode (字符串)例:USD(ISO货币编码)
  • merchantCapabilities(枚举,支持或运算)例:PKMerchantCapabilityEMV, PKMerchantCapability3DS
  • merchantIdentifier(字符串)例:merchant.merchant3.ggg.com
  • supportedNetworks(数组)例:PKPaymentNetworkAmex,    PKPaymentNetworkVisa,    PKPaymentNetworkMasterCard
  • paymentSummaryItems (数组,最后的对象必须是总价格)存放类型:PKPaymentSummaryItem
  • requiredBillingAddressFields(枚举,支持或运算)例:PKAddressFieldNone
  • requiredShippingAddressFields(枚举,支持或运算)例:PKAddressFieldNone
  • shippingMethods(数组)存放类型:PKShippingMethod
  • applicationData(NSData)

PKPaymentRequest 的 paymentSummaryItems

PKPaymentSummaryItem

初始化:

+ (instancetype)summaryItemWithLabel:(NSString *)label amount:(NSDecimalNumber *)amount;

属性

  • label
  • amount

 

补充:NSDecimalNumber

一个以10为底数的数值。可以使用指定尾数和指数的方式来创建这个类的实例,也可以通过指定字符串和locale来实例化。
例: 12.75

NSDecimalNumber *subtotalAmount = [NSDecimalNumber decimalNumberWithMantissa:1275 exponent:-2 isNegative:NO];

像float或者Double这样的IEEE浮点数类型是不适合作财务计算的,这些数据类型使用的是以2为底数的数值表示方法,有一些十进制数值不能准确得被表示--例如0.42必须以0.41999这样的循环小数来近似表示,而这种近似表示常常会造成财务计算的错误结果。

 

PKShippingMethod

label 例:空运

amount

identifier

detail(字符串)例:快速送货,2天必到

  

 

PKPaymentAuthorizationViewControllerDelegate

required:
 

- (void)paymentAuthorizationViewController:(PKPaymentAuthorizationViewController *)controller

                       didAuthorizePayment:(PKPayment *)payment

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


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


PKPaymentAuthorizationStatus :

    PKPaymentAuthorizationStatusSuccess

    PKPaymentAuthorizationStatusFailure

Optional:

- (void)paymentAuthorizationViewController:(PKPaymentAuthorizationViewController *)controller

                   didSelectShippingMethod:(PKShippingMethod *)shippingMethod

                                completion:(void (^)(PKPaymentAuthorizationStatus status, NSArray *summaryItems))completion;



- (void)paymentAuthorizationViewController:(PKPaymentAuthorizationViewController *)controller

                  didSelectShippingAddress:(ABRecordRef)address

                                completion:(void (^)(PKPaymentAuthorizationStatus status, NSArray *shippingMethods, NSArray *summaryItems))completion;

 

流程

 

验证流程

 

服务端处理

  • 把支付信息,以及支付流程+所需的其他信息,一起发送给服务器。
  • 验证支付数据的哈希表和签名
  • 为加密过的支付数据解码
  • 向支付处理系统提交支付数据
  • 向订单追踪系统提交订单

 

PaymentToken内容

例如:

解token的方法

https://developer.apple.com/library/ios/documentation/PassKit/Reference/PaymentTokenJSON/PaymentTokenJSON.html

Demo

TODO:待补充

 

参考网站

http://www.cocoachina.com/ios/20150126/11019.html

https://developer.apple.com/library/ios/documentation/PassKit/Reference/PKPaymentRequest_Ref/#//apple_ref/c/tdef/PKMerchantCapability

http://www.cocoachina.com/ios/20140911/9589.html

http://www.cocoachina.com/ios/20140910/9573.html

http://www.cocoachina.com/ios/20141024/10026.html

 

 

© 著作权归作者所有

诚实的钟
粉丝 1
博文 15
码字总数 12701
作品 0
闵行
私信 提问
iOS Apple Pay开发流程

一:介绍 项目中要用到支付功能,需要支付宝支付、支付宝网页支付、微信支付、银联支付、Apple_pay,所以打算总结一下,方便以后的查阅,也方便大家, 用到的地方避免再次被坑。 今天我们就主...

展菲
2017/11/01
0
0
Apple Pay ---官方文档整理思路以及疑惑点

之前把Apple Pay的文档全部翻译了一遍,最近也是接触到了真实的项目开发。发现开发的过程还是和官方文档中的介绍有偏差,所以我会先将官方文档中的步骤有疑惑的地方记录下来,然后介绍在实际...

李周
2017/07/30
0
0
Apple Pay 应用内支付流程分析

接入方式 Apple Pay接入方式的选择上有两种。一种是使用 CUP SDK(CUP 就是 China Union Pay)等第三方的 SDK。另外一种就是使用 iOS 的 PassKit Framework 和银联的接口来接入。本质上来说,...

背锅侠
2016/02/23
104
0
雷军昨夜正式公布MI Pay:采用NFC解决方案

8月16日消息,小米终于公布了自家的移动支付服务,在昨晚介绍小米5“黑科技”的直播中,雷军介绍了小米移动支付服务名为MI Pay,目前已经开始内测活动。 据悉,MI Pay支持的银行有:建设银行...

James2016
2016/08/16
0
0
谷歌发布 Android Pay 移动支付框架

谷歌宣布公司正在研发一个名为安卓支付(Android Pay)的新型移动支付框架。负责Android、Chrome和谷歌应用程序的谷歌业务副总裁桑达尔·皮采(Sundar Pichai)在西班牙巴塞罗那召开的全球移...

oschina
2015/03/03
4K
10

没有更多内容

加载失败,请刷新页面

加载更多

Spring Boot + Mybatis-Plus 集成与使用(二)

前言: 本章节介绍MyBatis-Puls的CRUD使用。在开始之前,先简单讲解下上章节关于Spring Boot是如何自动配置MyBatis-Plus。 一、自动配置 当Spring Boot应用从主方法main()启动后,首先加载S...

伴学编程
昨天
7
0
用最通俗的方法讲spring [一] ──── AOP

@[TOC](用最通俗的方法讲spring [一] ──── AOP) 写这个系列的目的(可以跳过不看) 自己写这个系列的目的,是因为自己是个比较笨的人,我曾一度怀疑自己的智商不适合干编程这个行业.因为在我...

小贼贼子
昨天
7
0
Flutter系列之在 macOS 上安装和配置 Flutter 开发环境

本文为Flutter开发环境在macOS下安装全过程: 一、系统配置要求 想要安装并运行 Flutter,你的开发环境需要最低满足以下要求: 操作系统:macOS(64位) 磁盘空间:700 MB(不包含 IDE 或其余...

過愙
昨天
6
0
OSChina 周六乱弹 —— 早上儿子问我他是怎么来的

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @凉小生 :#今日歌曲推荐# 少点戾气,愿你和这个世界温柔以待。中岛美嘉的单曲《僕が死のうと思ったのは (曾经我也想过一了百了)》 《僕が死の...

小小编辑
昨天
2.7K
16
Excption与Error包结构,OOM 你遇到过哪些情况,SOF 你遇到过哪些情况

Throwable 是 Java 中所有错误与异常的超类,Throwable 包含两个子类,Error 与 Exception 。用于指示发生了异常情况。 Java 抛出的 Throwable 可以分成三种类型。 被检查异常(checked Exc...

Garphy
昨天
42
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部