iOS

简述ApplePay

2016-08-03  本文已影响56人  captain_Lu

Apple Pay

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

屏幕快照 2016-08-02 下午6.20.32.png

支持系统和机型

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


适用设备.png

App接入Apple Pay

基于基于iOS PassKit Framework 接入Apple Pay

集成

#import<PassKit/PassKit.h>用户绑定的银行卡信息
#import<PassKit/PKPaymentAuthorizationViewController.h>Apple 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

 PKPaymentAuthorizationViewController *viewController = [[PKPaymentAuthorizationViewController alloc]initWithPaymentRequest:payRequest];
 viewController.delegate= self;
 [self presentViewController:viewController animated:YES completion:nil];
界面1.png
界面2.png

代理方法

代理方法.png

Apple Pay UI强制要求

UI要求.png
官方文档
上一篇 下一篇

猜你喜欢

热点阅读