美文网首页iOS
简述ApplePay

简述ApplePay

作者: captain_Lu | 来源:发表于2016-08-03 09:29 被阅读56次

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

    基于基于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

    • 显示Apple Pay 控件
     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
    官方文档

    相关文章

      网友评论

        本文标题:简述ApplePay

        本文链接:https://www.haomeiwen.com/subject/qwzfsttx.html