一、Apple pay 是什么?
其实说到底,Apple Pay就是苹果推出的支付应用(NFC手机支付功能,其实就相当于一个“卡包”),用户可以通过它绑定上自己储蓄卡或信用卡实现刷卡支付,其最大的优势是,非接触设计速度快,并且使用指纹支付,安全性高,同时使用的时候无需网络支持。
二、Apple pay 支持哪些银行?
Apple Pay目前支持的15家银行分别是:中国农业银行、中国银行、中信银行、广州银行、上海银行、中国建设银行、中国光大银行、广发银行、兴业银行、招商银行 、中国民生银行、中国工商银行、平安银行、中国邮政储蓄银行和浦发银行。
三、Apple pay支持哪些设备?
Apple Pay可以通过iPhone 6S、iPhone 6S Plus、iPhone 6、iPhone 6 Plus和Apple Watch使用;在应用中支付时,可以通过iPhone 6S、iPhone 6S Plus、iPhone 6、iPhone 6 Plus、iPad Air 2、iPad mini 3、iPad mini 4以及iPad Pro使用。其系统都最低也要在iOS 9.2。
四、如何绑定银行卡
Apple Pay绑定的过程非常简单,打开手机上的Wallet应用,选择添加信用卡或借记卡。按照提示给银行卡拍照,验证后即可完成绑定。需要注意的是,现在Apple Pay对银行卡的识别度很低,无法识别的情况下可以通过点击手动输入,之后是一些列认证,包括身份证、短信认证等。对于Apple Pay的安全性,苹果再次强调,用户的信用卡或借记卡的实际卡号既不存储在设备上,也不存储在Apple的服务器上。系统会分配一个唯一的设备账号(Device Account Number),对该账号进行加密,并以安全的方式将其存储在设备的安全芯片(Secure Element) 中。每次交易都使用一次性的唯一动态安全码进行授权。
五、哪些应用、消费场所已经支持Apply pay?
在中国大陆,目前肯德基、麦当劳、711便利店等线下店可以Apple Pay结账,苹果称之后还会增加;刷公交不行,一卡通的结算系统和银联是两回事。因为Apple Pay兼容银联闪付,所以看见闪付的地方,基本都能用。目前,唯品会,当当网,本来生活,聚美有品,美团,大众点评,Enjoy,携程旅游,去哪儿,中国国航,神州租车,易到用车,美团外卖,猫眼电影,微票儿,京东商城,网易考拉海淘,微博支付等应用都支持Apple Pay。
六、接入流程注意事项
http://www.cocoachina.com/ios/20160222/15378.html
七、如何在代码实现Apple pay?
一、申请MerchantID及对应证书。
1、注册一个merchant ID
(1)在Member Center,选择Certificates, Identifiers & Profiles。
(2)在Identifiers下面,选择“Merchant IDs”。
(3)单击右上角的“添加”按钮(+)。
(4)输入描述和标识符,然后单击“继续”。
(5)完成
2、为你的merchant ID配置一个证书
(1)在Member Center,选择Certificates, Identifiers & Profiles。
(2)在Identifiers下面,选择“Merchant IDs”。
(3)单击“编辑”。
(4)上传CSR文件。(和真机调试一样,通过钥匙串生成)
(5)下载证书通过点击下载,并点击完成。
二、工程配置
重点内容
1、打开项目。
2、选择项目
3、点击Capabilities
4、打开Apple Pay的开关
5、并且勾选当初注册的merchant ID
这个时候你应该三个灰色的小对勾,如果你按照上面的步骤是没问题的。如果碰到输入“diffrent strings”的字样,就是你的某个ID被占用了。换个名字就行。
环境配置好后,工程会多出一个文件
右边的键值其实就相当于商户号。也就是下面代码要用到的merchantIdentifier的值。
三、代码实现
1、监测系统版本是否支持
if (![PKPaymentAuthorizationViewController class]) {
NSLog(@"操作系统不支持ApplePay,请升级至9.0以上版本,且iPhone6以上设备才支持");
return;
}
2、检查当前设备是否可以支付
if (![PKPaymentAuthorizationViewController canMakePayments]) {
//支付需iOS9.0以上支持
NSLog(@"设备不支持ApplePay,请升级至9.0以上版本,且iPhone6以上设备才支持");
return;
}
3、检查用户是否可进行某种卡的支付,是否支持Amex、MasterCard、Visa与银联四种卡,根据自己项目的需要进行检测
NSArray *supportedNetworks = @[PKPaymentNetworkAmex, PKPaymentNetworkMasterCard,PKPaymentNetworkVisa,PKPaymentNetworkChinaUnionPay];
if (![PKPaymentAuthorizationViewController canMakePaymentsUsingNetworks:supportedNetworks]) {
NSLog(@"没有绑定支付卡");
return;
}
注意:如果是模拟机测试,会默认添加几张虚拟卡。
4、调用支付
// 创建支付请求PKPaymentRequest
PKPaymentRequest *payRequest = [[PKPaymentRequest alloc]init];
//价格
PKPaymentSummaryItem *subtotal = [PKPaymentSummaryItem summaryItemWithLabel:@"大排档" amount:[NSDecimalNumber decimalNumberWithString:@"0.01"]];
// 付给谁
PKPaymentSummaryItem *total = [PKPaymentSummaryItem summaryItemWithLabel:@"Cherish" amount:[NSDecimalNumber decimalNumberWithString:@"0.01"]];
payRequest.paymentSummaryItems = @[subtotal,total];
//国家代码
payRequest.countryCode = @"CN";
// 货币代码(人民币的代码 CNY)
payRequest.currencyCode = @"CNY";
//申请merchantId merchant.com.topshopcrm.payDemo
payRequest.merchantIdentifier = @"merchant.com.topshopcrm.payDemo";
//用户进行银行卡绑定
payRequest.supportedNetworks = supportedNetworks;
// 设置支持的交易处理协议(3DS必须支持)
payRequest.merchantCapabilities = PKMerchantCapability3DS | PKMerchantCapabilityEMV;
//显示购物信息并回调
PKPaymentAuthorizationViewController * vc = [[PKPaymentAuthorizationViewController alloc]initWithPaymentRequest:payRequest];
vc.delegate = self;
[self presentViewController:vc animated:YES completion:nil];
5、支付成功的代理方法和服务器验证的代理方法(require)
5.1 、付款成功苹果服务器返回信息回调,做服务器验证
-(void)paymentAuthorizationViewController:(PKPaymentAuthorizationViewController *)controller
didAuthorizePayment:(PKPayment *)payment
completion:(void (^)(PKPaymentAuthorizationStatus status))completion {
PKPaymentToken *payToken = payment.token;
//支付凭据,发给服务端进行验证支付是否真实有效
PKContact *billingContact = payment.billingContact; //账单信息
PKContact *shippingContact = payment.shippingContact; //送货信息
PKContact *shippingMethod = payment.shippingMethod; //送货方式
//等待服务器返回结果后再进行系统block调用
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
//模拟服务器通信
completion(PKPaymentAuthorizationStatusSuccess);
});
}
5.2、支付完成回调
-(void)paymentAuthorizationViewControllerDidFinish:(PKPaymentAuthorizationViewController *)controller{
NSLog(@"支付成功");
[controller dismissViewControllerAnimated:YES completion:nil];
}//支付完成回调
“`
之后陆续更新关于发票、送货地址、联系方式等功能。