简述ApplePay

Apple Pay

公司在2014苹果秋季新品发布会上发布的一种基于NFC近距离无线通讯技术的手机支付功能,于2014年10月20日在美国正式上线。
2016年2月18日凌晨5:00, Apple Pay 业务在中国上线。

简述ApplePay_第1张图片
屏幕快照 2016-08-02 下午6.20.32.png

支持系统和机型

操作系统最低iOS9.0以上,部分信息设置需要iOS9.2以上


简述ApplePay_第2张图片
适用设备.png

App接入Apple Pay

  • 基于iOS的PassKitFramework:
    需要对Payment Sheet的逻辑和异常情况做好相应的UI处理。同时在后台也需要做好支付信息解密、银联接口的交互以及订单状态处理。
  • 使用第三方SDK接入
  • 中国银联
  • 连连支付
  • 首信易支付
  • 易宝支付
    苹果目前建议国内和第三方合作接入ApplePay,能够省去了一家家银行签约的过程,由第三方和一家家银行沟通事项,商户和第三方沟通。所以签约部分就是和第三方支付平台签约了,钱会进入和第三方签约的银行卡内。

基于基于iOS PassKit Framework 接入Apple Pay

  • 申请Merchant ID以及证书
  • 工程中Capbility 启用ApplePay权限


    简述ApplePay_第3张图片
    工程设置.png

集成

  • 导入头文件
#import用户绑定的银行卡信息
#importApple pay的展示控件
  • 系统检测
if (![PKPaymentAuthorizationViewController class]) {
        PKPaymentAuthorizationViewController需iOS8.0以上支持
        return;
    }
  • 设备检测
 if (![PKPaymentAuthorizationViewController canMakePayments]) {
        支付需iOS9.0以上支持
     如果当前设备不支持ApplePay需要隐藏ApplePay支付按钮
        return;
    }
  • 检测用户可进行支付卡的类型
是否支持Amex、MasterCard、Visa与银联四种卡,根据自己项目的需要进行检测
NSArray *supportedNetworks = @[PKPaymentNetworkAmex, PKPaymentNetworkMasterCard,PKPaymentNetworkVisa,PKPaymentNetworkChinaUnionPay];
if (![PKPaymentAuthorizationViewController canMakePaymentsUsingNetworks:supportedNetworks]) 
{
  如果当前设备未设置/当前设备设置的支付银行卡无法在商户提供的支付平台支付,则隐藏ApplePay支付按钮,可以显示SetApple Pay按钮(可选),提醒用户进行设置ApplePay。
        return;
}
  • 创建支付请求
PKPaymentRequest
Ø//设置币种、国家码及merchant标识符等基本信息
PKPaymentRequest *payRequest = [[PKPaymentRequest alloc]init];
payRequest.countryCode = @"CN";     //国家代码
payRequest.currencyCode = @“CNY”;       //RMB的币种代码payRequest.merchantIdentifier = @“merchant.ApplePayAiitecDemo”;  //申请的merchantID
payRequest.supportedNetworks = supportedNetworks;   //用户可进行支付的银行卡
payRequest.merchantCapabilities = PKMerchantCapability3DS|PKMerchantCapabilityEMV; 
  • 送货地址
需要根据不同的商品类型来设置requiredShippingAddressFields
Ø如果使电子/虚拟商品(一般为提取/下载链接),则显示联系人邮箱。
Ø如果为实物,则显示联系人地址、手机号以及邮箱
payRequest.requiredShippingAddressFields = PKAddressFieldPostalAddress|PKAddressFieldPhone|PKAddressFieldName;
  //送货地址信息,这里设置需要地址和联系方式和姓名,如果需要进行设置,默认PKAddressFieldNone(没有送货地址)
  • 配送方式
//设置商品的配送方式
 PKShippingMethod *freeShipping = [PKShippingMethod summaryItemWithLabel:@"包邮" amount:[NSDecimalNumber zero]];
  freeShipping.identifier = @"freeshipping";
  freeShipping.detail = @"6-8 天 送达";
   
  PKShippingMethod *expressShipping = [PKShippingMethod summaryItemWithLabel:@"极速送达" amount:[NSDecimalNumber decimalNumberWithString:@"10.00"]];
  expressShipping.identifier = @"expressshipping";
  expressShipping.detail = @"2-3 小时 送达”;
  payRequest.shippingMethods = @[freeShipping, expressShipping];
  • 账单信息
账单列表使用PKPaymentSummaryItem添加描述和价格,价格使用NSDecimalNumber。
PKPaymentSummaryItem初始化:
label为商品名字或者是描述,amount为商品价格,折扣为负数,type为该条账单为最终价格还是估算价格
NSDecimalNumber*subtotalAmount= [NSDecimalNumber decimalNumberWithMantissa:1275 exponent:-2isNegative:NO];   //12.75
    PKPaymentSummaryItem *subtotal =[PKPaymentSummaryItem summaryItemWithLabel:@"商品价格"amount:subtotalAmount];
    NSDecimalNumber*discountAmount = [NSDecimalNumber decimalNumberWithString:@"-12.74"];      //-12.74
    PKPaymentSummaryItem *discount =[PKPaymentSummaryItem summaryItemWithLabel:@"优惠折扣"amount:discountAmount];  

关于NSDecimalNumber

  • 显示Apple Pay 控件
 PKPaymentAuthorizationViewController *viewController = [[PKPaymentAuthorizationViewController alloc]initWithPaymentRequest:payRequest];
 viewController.delegate= self;
 [self presentViewController:viewController animated:YES completion:nil];
简述ApplePay_第4张图片
界面1.png

简述ApplePay_第5张图片
界面2.png

代理方法

简述ApplePay_第6张图片
代理方法.png

Apple Pay UI强制要求

简述ApplePay_第7张图片
UI要求.png

官方文档

你可能感兴趣的:(简述ApplePay)