服务报价 | 域名主机 | 网络营销 | 软件工具| [加入收藏]
当前位置: 主页 > 开发教程 > ios开发教程 >

iOS之ApplePay的开发流程

时间:2016-03-06 17:09来源:未知 作者:好模板 点击:
是苹果公司在2014苹果秋季新品发布会上发布的一种基于NFC的手机支付功能,于2014年10月20日在美国正式上线。但是一直没有在中国上线,直到今年的2月18日,才在中国上线 最早出现appleP

是苹果公司在2014苹果秋季新品发布会上发布的一种基于NFC的手机支付功能,于2014年10月20日在美国正式上线。但是一直没有在中国上线,直到今年的2月18日,才在中国上线
最早出现applePay的就是肯德基和招商银行,但是随着时间的推移,有很多应用也开始使用applePay,例如一些团购类App和电商类App等
而作为一名iOS开发者,我们更应该早早的掌握这种新技术,要随时有一颗不断学习的心

首先需要在苹果开发者平台配置证书,以下是链接
https://developer.apple.com/account/ios/certificate/

第一步

创建merchant ID
iOS之ApplePay的开发流程


one.jpeg

名字可以随便填

iOS之ApplePay的开发流程
屏幕快照 2016-03-04 下午10.49.05.png

点击register继续下一步


屏幕快照 2016-03-04 下午10.49.24.png

创建成功之后,在列表页面将刚刚配置好的ID进行编辑,如下图置为YES


屏幕快照 2016-03-04 下午10.51.33.png

点击continue继续


屏幕快照 2016-03-04 下午10.52.21.png

会让你选择一个CSR文件,这时候我们需要打开钥匙串配置一个


屏幕快照 2016-03-04 下午10.52.29.png

屏幕快照 2016-03-04 下午10.38.45.png

将请求方式改为存储在磁盘,以便我们使用



![Uploading 屏幕快照 2016-03-04 下午10.49.05_339860.png . . .]

生成完毕之后,回到开发者平台将生成的CSR文件上传上去

第二步 我们需要注册一个支持apple Pay的AppID

屏幕快照 2016-03-04 下午10.56.28.png

此处填写bundle ID 会配置到工程中 请务必记录下


屏幕快照 2016-03-04 下午10.56.01.png

如图进行选择即可


屏幕快照 2016-03-04 下午10.53.28.png

在列表中找到刚才生成的APP ID 点击Edit


屏幕快照 2016-03-04 下午10.50.07.png

发现Apple Pay 是黄色的,意思就是还没成功,需要点击编辑


屏幕快照 2016-03-04 下午10.57.41.png

会跳转到这个页面,依旧点击编辑


屏幕快照 2016-03-04 下午10.57.52.png

全选完之后 点击continue即可


屏幕快照 2016-03-04 下午10.58.12.png

此时再看我们的apple Pay 就是可用的


屏幕快照 2016-03-04 下午10.58.36.png

//设置bundle identifier 必须和上文中的 bundle ID 相同


WeChat_1457103733.jpeg

如图选择


WeChat_1457103875.jpeg

配置证书的过程相当的繁琐,但是代码却很简单

第一步需要导入框架

#import <PassKit/PassKit.h>
#import <AddressBook/AddressBook.h>

第二步在mian.storyboard里拖一个UIButton控件,并关联方法

- (IBAction)payAction:(UIButton *)sender {
    判断是否支持支付功能
    if ([PKPaymentAuthorizationViewController canMakePayments]) {

        //初始化订单请求对象
        PKPaymentRequest *requst = [[PKPaymentRequest alloc]init];

        //设置商品订单信息对象
        PKPaymentSummaryItem *widget1 = [PKPaymentSummaryItem summaryItemWithLabel:@"火锅" amount:[NSDecimalNumber decimalNumberWithString:@"0.01"]];

        PKPaymentSummaryItem *widget2 = [PKPaymentSummaryItem summaryItemWithLabel:@"自助" amount:[NSDecimalNumber decimalNumberWithString:@"0.01"]];

        PKPaymentSummaryItem *widget3 = [PKPaymentSummaryItem summaryItemWithLabel:@"烧烤" amount:[NSDecimalNumber decimalNumberWithString:@"0.01"]];

       //设置支付对象
        PKPaymentSummaryItem *widget4 = [PKPaymentSummaryItem summaryItemWithLabel:@"FFIB" amount:[NSDecimalNumber decimalNumberWithString:@"0.01"]type:PKPaymentSummaryItemTypeFinal];
        requst.paymentSummaryItems = @[widget1 ,widget2 ,widget3 ,widget4];

        //设置国家地区编码
        requst.countryCode = @"CN";
       //设置国家货币种类 :人民币
        requst.currencyCode = @"CNY";
        //支付支持的网上银行支付方式
        requst.supportedNetworks =  @[PKPaymentNetworkChinaUnionPay, PKPaymentNetworkMasterCard, PKPaymentNetworkVisa];

        //设置的支付范围限制
        requst.merchantCapabilities = PKMerchantCapabilityEMV;
        // 这里填的是就是我们创建的merchat IDs
        requst.merchantIdentifier = @"merchant.com.ZJF";

        //设置支付窗口
        PKPaymentAuthorizationViewController * payVC = [[PKPaymentAuthorizationViewController alloc]initWithPaymentRequest:requst];
        //设置代理
        payVC.delegate = self;
        if (!payVC) {
           有问题  直接抛出异常
            @throw  [NSException exceptionWithName:@"CQ_Error" reason:@"创建支付显示界面不成功" userInfo:nil];
        }else
        {
            //支付没有问题,则模态出支付创口
            [self presentViewController:payVC animated:YES completion:nil];
        }
    }
}

第三步 实现代理

//首先需要添加代理到视图上
@interface ViewController ()<PKPaymentAuthorizationViewControllerDelegate>


//代理的回调方法
-(void)paymentAuthorizationViewController:(PKPaymentAuthorizationViewController *)controller didAuthorizePayment:(PKPayment *)payment completion:(void (^)(PKPaymentAuthorizationStatus))completion{

      //在这里将token和地址发送到自己的服务器,有自己的服务器与银行和商家进行接口调用和支付将结果返回到这里 
     //我们根据结果生成对应的状态对象,根据状态对象显示不同的支付结构 
    //状态对象
    NSLog(@"%@",payment.token);

    //在这里了 为了测试方便 设置为支付失败的状态
    //可以选择枚举值PKPaymentAuthorizationStatusSuccess   (支付成功)
    PKPaymentAuthorizationStatus staus = PKPaymentAuthorizationStatusFailure;
    completion(staus);
}


//支付完成的代理方法
-(void)paymentAuthorizationViewControllerDidFinish:(PKPaymentAuthorizationViewController *)controller
{
    [controller dismissViewControllerAnimated:YES completion:nil];
    NSLog(@"支付完成");
}
(责任编辑:好模板)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
栏目列表
热点内容