美文网首页iOS进阶iOS && AndroidiOS Developer
华山论剑之浅谈iOS的ApplePay

华山论剑之浅谈iOS的ApplePay

作者: 神经骚栋 | 来源:发表于2016-03-05 16:08 被阅读179次

在发布近两年、历经各种周折之后,苹果公司的Apple Pay移动支付服务终于在2016年2月18日来到了中国大陆.对中国用户来说,移动支付其实已经不是什么陌生事物,抢红包和支付宝早完成用户启蒙。但与这两者有区别的是,Apple Pay只是苹果搭建的一个支付服务,它链接银行、店面及用户,但又不像支付宝那样把钱存在自己这。
对于技术人员的我们,不管其市场如何,当我们看到一个新的技术的时候,我们就应该想着如何去使用它,今天作为前端开发者的我就对ApplePay进行一个简单的讲解.

商业证书的配置

当我们使用到ApplePay的时候,首先就是要到我们的开发者中心配置一个证书,这个证书就叫做商业证书,下面我们就看一下商业证书配置的相关问题吧.

首相我们进入到我们证书页面,当我们进入我们的证书页面之后,首先我们需要如图添加一个商业证书.

进入到下面的页面的时候,我们要填写我们的类型名称以及我们的ID,根据要求填写即可.

完成之后点击一下,进入如下的页面

当然了这样我们并没有配置完成.点击register 注册,然后返回到上一页面.如图 找到我们所配置的文件.然后我们就要对我们的证书进行进一步的配置😁

点击Edit进入详情页面

不解释,直接点击下一步就可.

点击下一步之后我们进入如下的页面,这时候跟我们配置证书一个,我们需要从钥匙串中配置一个申请文件出来.

首先先打开我们的钥匙串🔑,如下图进行下一步.点击"证书助理",然后点击 "从证书颁发机构请求而证书".

然后进行如下图的的操作,电子邮箱可以填写的稍微随意一点,😃

填写完整之后,我们点击继续即可,然后我们就需要上传我们的证书请求文件了.

完成之后,就点击下载我们的商业证书就行.

证书配置完了,就要配置我们App ID 和 工程的描述文件.我们首先配置一下App ID,App ID的配置和前面的差不多,唯一的区别就是我们需要勾选Apply Pay功能. 如图所示

当我们点击下一步的时候,发现Apply Pay 的状态是黄色的,所以我们就需要把他变成可用状态.

我们点击Regiser注册完成之后,就在我们的APP ID列表中找到对应的APP ID信息.

如图,找到对应的Apply Pay 信息

进入选择证书的页面,选择我们的证书.

看完下面三张图 我们的App ID 的配置就完成了.

描述文件

上面的App ID 我们已经配置完成了,下面我们就配置我们的 描述文件.


选择对应的ID

完成之后下载我们的描述文件就行.

注意:这里有个问题是关于证书的,就是我们的证书不管怎么下载都会显示的状态是证书是无效的或者证书是未知机构颁发的. 我们需要做的就是去网上下两个证书. 如图所示
---->点击前往证书下载页面

工程配置

当我们完成了我们的证书的配置之后,我们就需要到我们的工程中配置我们的Apple Pay了,首先就要先查看我们的ID.

ID查看完成之后就配置我们的Apply Pay 相关的信息.

当然了,我们还是要配置我们的商业证书和描述文件的

代码部分

当我们的上面两个整完之后,我们就要开始我们的代码部分了.因为是测试,所以我就简单的用storyboard做一下.代码如下


#import "ViewController.h"

//我们要使用Apple Pay 首先要先导入两个库
#import <PassKit/PassKit.h>

#import <AddressBook/AddressBook.h>

//这里要遵守一个协议.
@interface ViewController ()<PKPaymentAuthorizationViewControllerDelegate>

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
}

//这里我使用storyboard用一个按钮拖成一个事件
- (IBAction)payAction:(id)sender {
    
    //首先我们要先确定设备是否支持Apple Pay功能,现在支持Apple Pay功能功能的有iPhone 6,iPhone 6 Plus,iPhone 6s, iPhone 6s Plus;iPad Air 2,iPad mini 3,iPad mini 4,iPad Pro;还有Apple Watch.
    if ([PKPaymentAuthorizationViewController canMakePayments]) {
        
        //我们首先创建一个请求支付PKPaymentRequest类的对象
        PKPaymentRequest *request = [[PKPaymentRequest  alloc]init];
        
        //然后设置支付的商品的目录  NSDecimalNumber是用于记录商品的价格的一个类
        PKPaymentSummaryItem * item1 = [PKPaymentSummaryItem summaryItemWithLabel:@"栋哥的87键黑轴纪念版键盘" amount:[NSDecimalNumber decimalNumberWithString:@"400"]];
        
        PKPaymentSummaryItem * item2 = [PKPaymentSummaryItem summaryItemWithLabel:@"栋哥的IE3.0纪念版鼠标" amount:[NSDecimalNumber decimalNumberWithString:@"200"]];
        
        PKPaymentSummaryItem * item3 = [PKPaymentSummaryItem summaryItemWithLabel:@"栋哥的赛睿纪念版霜冻之蓝耳机" amount:[NSDecimalNumber decimalNumberWithString:@"1000"]];
        
        
        PKPaymentSummaryItem * item4 = [PKPaymentSummaryItem summaryItemWithLabel:@"神经骚栋" amount:[NSDecimalNumber decimalNumberWithString:@"6000"] type:PKPaymentSummaryItemTypeFinal];
        
        //设置paymentSummaryItems的数组元素.
        request.paymentSummaryItems = @[item1,item2,item3,item4];
        
        //指定国家区域编号
        request.countryCode = @"CN";
        
        //指定国家货币种类,在下面我会说到各国的货币种类都叫什么,现在我们就用RMB来说吧
        request.currencyCode = @"CNY";
        
        //然后指定支持的网上银行支付手段
        request.supportedNetworks = @[PKPaymentNetworkMasterCard,PKPaymentNetworkVisa];
        
        //指定App需要的商业ID
        request.merchantIdentifier = @"merchant.com.Dong.ApplePay";
        
        //指定支付的权限的范围限制
        request.merchantCapabilities = PKMerchantCapabilityEMV;
        
        //设置订单接受的地址
        request.requiredBillingAddressFields = PKAddressFieldEmail | PKAddressFieldPostalAddress;
        
        
        /***********************request支付请求已经设置完成**********************/
        
        //设置支付页面的相关信息
        PKPaymentAuthorizationViewController *payMentVC = [[PKPaymentAuthorizationViewController alloc]initWithPaymentRequest:request];
        
        //设置代理
        payMentVC.delegate = self;
        
        if (!payMentVC) {
            
            NSLog(@"支付页面失败!");
            
        }else{
        
            [self presentViewController:payMentVC animated:YES completion:nil];
            
        }
        

    }else{
    
        NSLog(@"设备不支持Apply Pay 功能!");
    
    }
    
    
    
}

当我们完成上面的工作之后,就要必须完成下面的两个代理方法.


#pragma mark----支付过程中调用这个方法-----

//payment就是支付的对象相关的所有信息都存在这个对象当中.
-(void)paymentAuthorizationViewController:(PKPaymentAuthorizationViewController *)controller didAuthorizePayment:(PKPayment *)payment completion:(void (^)(PKPaymentAuthorizationStatus))completion{

    //获取到服务器发给用户的token.token里面含有成功或者是失败的信息.
    PKPaymentToken *token = payment.token;
    
    //拿到订单人相关的信息,其实包括地址,姓名,邮箱等等
    NSString *name = payment.billingContact.name.nickname;
    
    NSLog(@"%@",name);
    
    //上面的token和name发送到自己的服务器,由自己的服务器和商家进行接口的调用返回一个结果,我们将这个返回的结果再与客户端的用户进行交互,
    

    //状态结果的类为PKPaymentAuthorizationStatus,因为我们做的是测试,所以我们就先指定他为成功
    PKPaymentAuthorizationStatus status = PKPaymentAuthorizationStatusSuccess;
    
    completion(status);

}


#pragma mark----支付完成-----

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

    //隐藏支付界面
    [controller dismissViewControllerAnimated:YES completion:nil];

}


@end


下面就是世界主要货币的英文简写表,希望对大家有所帮助..

国家货币名称 货币英文简写
人民币 CNY
英镑 GBP
比利时法郎 BEF
新西兰元 NZD
港币 HKD
意大利里拉 ITL
奥地利先令 ATS
美元 USD
国家货币名称 货币英文简写
日元 JPY
挪威克朗 NOK
瑞士法郎 CHF
加拿大元 CAD
泰国铢 THB
德国马克 DEM
澳大利亚元 AUD
丹麦克朗 DKK
法国法郎 FRF
西班牙比塞塔 ESP
国家货币名称 货币英文简写
菲律宾比索 PHP
新加坡元 SGD
欧元 EUR
瑞典克朗 SEK
荷兰盾 NLG
芬兰马克 FIM
澳门元 MOP
代码我都做了详细的注释,如果还有不懂的,可以参考我的Demo 以及 下面的资料
-------->点击下载Demo
-------->点击进入codeqi博客
今天的Apply Pay就介绍到这,😃,如果大家有什么意见可以给我留言.

相关文章

  • 华山论剑之浅谈iOS的ApplePay

    如果你恨他,就让他舔门口的棒棒糖 ----------军哥 在发布近两年、历经各种周折之后,苹果公司的Apple ...

  • UICollectionViewLayout之瀑布流

    原帖子:华山论剑之浅谈iOS瀑布流 我是模仿上面的代码自己写了一份,实现的是简单的瀑布流:就是把UICollect...

  • APP支付之ApplePay浅谈

    前段时间移动支付界发生了一件大事,估计使得支付宝、微信、百度等运营移动支付业务的公司感到一阵强风来临,这件事情就是...

  • iOS开发之ApplePay

    前言 美国时间于2014年10月20日苹果公司正式推出Applepay支付功能,直到2016年2月18日凌晨5:0...

  • iOS开发之ApplePay

    "iOS8.1就已经有这个功能了,只是木有现在这么的火,现在的趋势是要火的节奏,因此很多电商平台B2B,P2P,C...

  • iOS applePay

    首先需要在开发者账号里面做操作,然后在代码中生成: 在ViewController中添加代码:

  • 浅谈iOS进阶路线

    浅谈iOS进阶路线 浅谈iOS进阶路线

  • 华山论剑之浅谈iOS瀑布流

    心灵鸡汤可不是谁想喝就喝的! --------------栋哥 看完千篇一律的UI布局之后,当我们看到瀑布流的...

  • iOS开发之ApplePay体验

    2016年2月18日凌晨5:00,Apple Pay业务在中国上线。虽然毁誉参半,但是不得不承认国内很多的公司和商...

  • iOS内功篇:浅谈Crash

    iOS内功篇:浅谈Crash iOS内功篇:浅谈Crash

网友评论

本文标题:华山论剑之浅谈iOS的ApplePay

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