iOS开发之ApplePay体验

作者: 相关函数 | 来源:发表于2016-03-14 10:03 被阅读670次

2016年2月18日凌晨5:00,Apple Pay业务在中国上线。虽然毁誉参半,但是不得不承认国内很多的公司和商家已经开通了Apple Pay的这个事实。

ApplePay开发流程

配置证书

App ID

1.首先我们需要创建一个App ID,登录苹果开发者中心,选择创建一个App ID。

App ID

2.点击“+”添加一个App ID。填写App ID Description,和Bundle ID。

填写AppID 和 Bundle ID

3.这里我们要实现Apple Pay的相关功能,所以我们接下来要勾选一下Apple Pay这一选项。

勾选Apply Pay

4.点击Continue继续下一步我们会看到Apple Pay的状态还是黄色的(Configurable)。

Apple Pay的状态

Merchant ID

1.创建Merchant ID,这里我们需要创建一个商业ID。

Merchant ID

2.同样的填写Description,这里还需要填写一个identifier,这个ID必须是以merchant开头。

创建Merchant ID

3.点击下一步就行了。

配置App ID

1.这个时候我们回到App IDs选项卡下找到我们刚刚创建的App ID。点击选择编辑选项。

Edit

2.这个时候下拉我们就可一看到Apple Pay选项 勾选并点击Edit按钮,进入编辑页面。

Edit

3.选择我们刚刚创建的Merchant ID然后Continue。

关联Merchant ID

创建证书

1.回到Merchant ID 点击选择YES选项。

选择YES

2.下一步,我们可以看到这时候需要一个证书。

需要一个证书 上传证书页面

3.那么创建一个证书。打开钥匙串。

钥匙串

4.点击状态栏的钥匙串,选择证书助理选项,从证书颁发机构请求证书。

从证书颁发机构请求证书

5.创建,选择存储到磁盘。保存到一个容易找到的位置。

存储到磁盘

6.选择刚刚创建的证书文件上传,并点击下一步。

上传证书

7.我们就可以看到Your certificate is ready说明我们的证书已经创建好了。我们点击download下载就好了。

下载证书

8.到这里我们的证书部分就已经配置好了。

证书

代码

1.创建一个工程设置其Bundle ID 必须和描述文件中的Bundle ID一致。

设置工程的Bundle ID

2.在Capability标签中把ApplePay选项打开,并且将Merchant ID选中,

设置merchant ID

3.在工程中导入对应的头文件PassKit/PassKit.h 和AddressBook/AddressBook.h,并且遵循PKPaymentAuthorizationViewControllerDelegate协议。

#import <PassKit/PassKit.h>
#import <AddressBook/AddressBook.h>
@interface ViewController ()<PKPaymentAuthorizationViewControllerDelegate>

4.支付响应事件

// 点击支付响应事件
- (IBAction)payAction:(UIButton *)sender {
    
    // 订单请求对象
    PKPaymentRequest *pkPayment = [[PKPaymentRequest alloc]init];
    // 商品订单信息对象
    
    PKPaymentSummaryItem *item1 = [PKPaymentSummaryItem summaryItemWithLabel:@"BMW" amount:[NSDecimalNumber decimalNumberWithString:@"100"]];
    PKPaymentSummaryItem *item2 = [PKPaymentSummaryItem summaryItemWithLabel:@"BenZ" amount:[NSDecimalNumber decimalNumberWithString:@"200"]];
    PKPaymentSummaryItem *item3 = [PKPaymentSummaryItem summaryItemWithLabel:@"Audi" amount:[NSDecimalNumber decimalNumberWithString:@"300"]];
    
    pkPayment.paymentSummaryItems = @[item1,item2,item3];
    
    // 指定国家和地区编码
    pkPayment.countryCode = @"CN";
    // 指定国家货币种类
    pkPayment.currencyCode = @"CNY";
    // 指定的支持的网上银行支付方法
    pkPayment.supportedNetworks = @[PKPaymentNetworkVisa,PKPaymentNetworkChinaUnionPay,PKPaymentNetworkMasterCard];
    
    // 指定APP需要的商业ID
    pkPayment.merchantIdentifier = @"merchant.com.coderqiao.applepay.pay01";
    // 指定支付的权限的范围限制
    pkPayment.merchantCapabilities = PKMerchantCapabilityEMV;
    // 指定订单接受的地址
    pkPayment.requiredBillingAddressFields = PKAddressFieldEmail | PKAddressFieldPostalAddress;
    
    // 支付界面显示对象
    PKPaymentAuthorizationViewController *pvc = [[PKPaymentAuthorizationViewController alloc]initWithPaymentRequest:pkPayment];
    pvc.delegate = self;
    
    if (!pvc) {
        NSLog(@"有问题,请查看");
        @throw [NSException exceptionWithName:@"QQ_Error" reason:@"有问题,请查看" userInfo:nil];
    }else {
        [self presentViewController:pvc animated:YES completion:nil];
    }
}

5.支付回调方法

/ 在支付的过程中进行调用,直接影响支付结果在界面上的显示
// payment代表支付对象,支付相关的信息,存在与这个对象 1.token 2.address
// completion是一个回调block,里面传递的参数直接影响界面结果的显示
- (void)paymentAuthorizationViewController:(PKPaymentAuthorizationViewController *)controller
                       didAuthorizePayment:(PKPayment *)payment
                                completion:(void (^)(PKPaymentAuthorizationStatus status))completion{
    // 拿到token
    PKPaymentToken *token = payment.token;
    NSString *city = payment.billingContact.postalAddress.city;
    NSLog(@"city:%@",city);
    // 将token和city地址发送到自己的服务器,有自己的服务器与银行和商家进行接口调用和支付,将结构返回到这里
    // 根据结果生成对应的状态对象,根据状态对象,显示不同的支付结果
    // 状态对象
    PKPaymentAuthorizationStatus status = PKPaymentAuthorizationStatusSuccess;
    completion(status);
    
    
    
}

// 当支付过程完成的时候调用
- (void)paymentAuthorizationViewControllerDidFinish:(PKPaymentAuthorizationViewController *)controller{
    [controller dismissViewControllerAnimated:YES completion:nil];
}

END

相关文章

  • iOS开发之ApplePay体验

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

  • iOS开发之ApplePay

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

  • iOS开发之ApplePay

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

  • iOS ApplePay开发

    最近开发ApplePay支付,在网上搜索到有用的干货链接 ApplePay详情介绍及开发流程截图 www.cnbl...

  • iOS -ApplePay开发流程

    1. 硬件方面 微信、支付宝: 各种 Apple Pay:必须是iOS设备 2. 网络环境要求 Apple Pay...

  • iOS开发之定位

    iOS开发之定位 iOS开发之定位

  • iOS applePay

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

  • iOS开发之GCD并发队列

    iOS开发多线程之GCDiOS开发之GCD同步任务加强iOS开发之GCD串行队列iOS开发之GCD并发队列 03 ...

  • iOS开发之NSURLSessionUploadTask上传数据

    iOS开发之NSURLSessionUploadTask上传数据 iOS开发之NSURLSessionUpload...

  • iOS开发多线程之GCD

    iOS开发多线程之GCDiOS开发之GCD同步任务加强iOS开发之GCD串行队列iOS开发之GCD并发队列 GCD...

网友评论

本文标题:iOS开发之ApplePay体验

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