在发布近两年、历经各种周折之后,苹果公司的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 |