iOS开发之 Apple Pay(PassKit)的基本使用

业界资讯 来源:鹏威の博客 发布:2016-04-12 浏览:3107

摘要:最近一个特别火的词组出现在我们的生活中Apple Pay,尤其是在四大行的柜台机,或者一些商店,都可以见到他们的身影其实在 iOS8.1 之后 Apple Pay功能已经开放了,只不过在大陆在今年 2 月才可以使用,Apple Pay 是一个基于 NFC 的支付系统,类似于你的银行卡,走到哪刷到哪,那么作为开发人员的我们该如何去开发和使用呢?其实,Apple Pay也并非想象中的那么难~

【本文转自:鹏威の博客,作者:鹏威   文章链接:iOS开发之 Apple Pay(PassKit)的基本使用】  ( SDK.cn已获得转载授权,如有转载请联系作者本人)


最近一个特别火的词组出现在我们的生活中Apple Pay,尤其是在四大行的柜台机,或者一些商店,都可以见到他们的身影其实在 iOS8.1 之后 Apple Pay功能已经开放了,只不过在大陆在今年 2 月才可以使用,Apple Pay 是一个基于 NFC 的支付系统,类似于你的银行卡,走到哪刷到哪,那么作为开发人员的我们该如何去开发和使用呢?其实,Apple Pay也并非想象中的那么难~

前期准备

1、打开Apple开发者中心

点击进入 Apple开发者中心,然后点击账户

如果你的电脑没有保存密码,则会提示你输入开发者帐号和密码,因为我的电脑已经保存了,所以直接进入。

2.点击:Certificates, Identifiers & Profiles

3.点击Devices

4、点击Merchart IDs

这里我们是来申请Apple 的 支付证书

5、我们要去设置Merchant IDs

点击continue

在设置Identifier的时候注意ID的格式Description为描述名,可以随便写,注意不要使用特殊字符即可ID为你工程中的Bundle Identifier,要一致,建议直接从工程中复制Register

Done

注册成功以后的样子

6、编辑Merchant IDs

7、确认使用地区是在China

8、申请证书

到这一步的时候,先不要选择Choose file,也不要关闭浏览器,切换到桌面

打开钥匙串访问,点击电脑左上角的钥匙串访问–证书助理–从证书颁发机构请求证书

会出现如下界面,选择存储到磁盘,点击继续

选择存储到桌面,存储

点击完成

你会在桌面上看到下面的文件

然后回到浏览器,点击choose File.. 选择创建好的:CertificateSigningRequest.certSigningRequest 文件,点击Generate

点击Download下载创建好的发布证书(cer后缀的文件),然后点击Done,你创建的发布证书就会存储在帐号中。

注:一般一个开发者帐号创建一个发布证书就够了,如果以后需要在其他电脑上上架App,只需要在钥匙串访问中创建p12文件,把p12文件安装到其他电脑上。这相当于给予了其他电脑发布App的权限。


Xcode等信息配置

添加描述文件

到目前为止我们的基本设置已经设置好了,现在我们要去Xcode里面去配置相关信息由于我们要在真机上测试,所以我们要选择描述文件(模拟器上也可以进行测试)target——> Build Settings ——>Code Sign,在Provisoning选择刚才申请证书的账户即可

打开Apple Pay功能

我们在Xcode里面把Apple pay打开 (必须是开发者账号,否则你的里面是没有Apple Pay的)

当我们打钩了以后有可能会报两个错

这时候,我们修复一下即可

代码示例

1、在相应的viewController里面添加框架

首先我们在对应的Controller里面导入头文件,使用Apple Pay ,是导入的#import <PassKit/PassKit.h>框架

2、遵守协议PKPaymentAuthorizationViewControllerDelegate

@ interface ViewController () < PKPaymentAuthorizationViewControllerDelegate>

3、实现协议里面的方法

 
#pragma mark -----点击支付
-(void)doit:(id)sender{
//判断设备是否支持支付
    if([PKPaymentAuthorizationViewController canMakePayments]) {
        NSLog(@"支持支付");
        // 我们后面创建出来的支付页面就是根据这个request
        PKPaymentRequest *request = [[PKPaymentRequest alloc] init];
        // 商品目录
        PKPaymentSummaryItem *widget1 = [PKPaymentSummaryItem 
                        summaryItemWithLabel:@"商品名字" 
                        amount:[NSDecimalNumber decimalNumberWithString:@"888"]];
        PKPaymentSummaryItem *widget2 = [PKPaymentSummaryItem 
                        summaryItemWithLabel:@"商品名字"
                        amount:[NSDecimalNumber decimalNumberWithString:@"888"]];
        PKPaymentSummaryItem *widget3 = [PKPaymentSummaryItem 
                        summaryItemWithLabel:@"2个treney"
                        amount:[NSDecimalNumber decimalNumberWithString:@"8888"]];
        PKPaymentSummaryItem *widget4 = [PKPaymentSummaryItem 
                        summaryItemWithLabel:@"总金额" 
                        amount:[NSDecimalNumber decimalNumberWithString:@"8888"] 
                        type:PKPaymentSummaryItemTypeFinal];
        
        request.paymentSummaryItems = @[widget1, widget2, widget3, widget4];
        request.countryCode = @"CN";
        request.currencyCode = @"CNY";//人民币
        request.supportedNetworks = 
                @[
                PKPaymentNetworkChinaUnionPay, 
                PKPaymentNetworkMasterCard,
                PKPaymentNetworkVisa
                ];
        
        // 这里填的是就是我们创建的merchat IDs
        request.merchantIdentifier = @"treney.com.Apple-Pay";
        request.merchantCapabilities = PKMerchantCapabilityCredit;
        //增加邮箱及地址信息
        request.requiredBillingAddressFields = 
                        PKAddressFieldEmail | PKAddressFieldPostalAddress;
        
        // 根据request去创建支付页面
        PKPaymentAuthorizationViewController *paymentPane = 
                    [[PKPaymentAuthorizationViewController alloc]
                    initWithPaymentRequest:request];
        
        // 设置代理
        paymentPane.delegate = self;
        
        if (!paymentPane) {
            
            NSLog(@"出问题了");
        } else {
            
            // 模态推出页面
            [self presentViewController:paymentPane animated:YES         
                            completion:nil];
        }     
    } else {
        
原    文:鹏威の博客

「Apple」都使用了那些技术和工具?他又是怎样从0到1发展起来的?
点击查看「Apple」-- 技术栈

免责声明:

  1. SDK.cn遵循行业规范,所有转载文章均征得作者同意授权并明确标注来源和链接。
  2. 我们十分尊重原创作者的付出,本站禁止二次转载如需转载请与原作者取得联系。
  3. 转载SDK.cn的原创文章需注明文章作者、链接和"来源:SDK.cn"并保留文章及标题完整性未经作者同意不得擅自修改。
  4. 作者投稿可能会经SDK.cn适当编辑修改或补充。
推荐工具 意见反馈