最近一個(gè)特別火的詞組出現(xiàn)在我們的生活中Apple Pay,大家又對(duì)其了解多少呢?其實(shí)在 iOS8.1 之后 Apple Pay 功能已經(jīng)開放了,只不過在大陸在今年 2 月才可以使用,Apple Pay 是一個(gè)基于 NFC 的支付系統(tǒng),類似于你的銀行卡,走到哪刷到哪,那么作為開發(fā)人員的我們?cè)撊绾稳ラ_發(fā)和使用呢?
1、我們要去設(shè)置Merchant IDs

Merchat IDs 設(shè)置
在設(shè)置 Identifier 的時(shí)候要注意 ID 的格式

Merchat IDs identifier 設(shè)置

注冊(cè)成功以后

點(diǎn)擊Edit

點(diǎn)擊Continue

Choose File

從證書頒發(fā)機(jī)構(gòu)請(qǐng)求證書

選擇

下載
2、到目前為止我們的基本設(shè)置已經(jīng)設(shè)置好了,現(xiàn)在我們要去Xcode里面去配置相關(guān)信息
由于我們要在真機(jī)上測(cè)試,所以我們要選擇描述文件(模擬器上也可以進(jìn)行測(cè)試)

屏幕快照 2016-02-23 16.16.04.png
我們?cè)赬code里面把Apple pay打開 (必須是開發(fā)者賬號(hào),否則你的里面是沒有Apple Pay的)

屏幕快照 2016-02-23 16.15.46.png
當(dāng)我們打鉤了以后有可能會(huì)報(bào)兩個(gè)錯(cuò)

0C85B03A5F41E601EC8A24E8EACCDD8F.jpg
這個(gè)時(shí)候回到點(diǎn)擊fix即可

屏幕快照 2016-02-24 11.32.24.png
3、代碼示范
導(dǎo)入頭文件PassKit/PassKit.h 遵循PKPaymentAuthorizationViewControllerDelegate
#pragma mark ----支付狀態(tài)
- (void)paymentAuthorizationViewController:(PKPaymentAuthorizationViewController *)controller
didAuthorizePayment:(PKPayment *)payment
completion:(void (^)(PKPaymentAuthorizationStatus status))completion
{
NSLog(@"花費(fèi): %@", payment);
BOOL asyncSuccessful = FALSE;
if(asyncSuccessful) {
completion(PKPaymentAuthorizationStatusSuccess);
NSLog(@"支付成功");
} else {
completion(PKPaymentAuthorizationStatusFailure);
NSLog(@"支付失敗");
}
}
#pragma mark ----支付完成
- (void)paymentAuthorizationViewControllerDidFinish:(PKPaymentAuthorizationViewController *)controller {
// 支付完成后讓支付頁(yè)面消失
[controller dismissViewControllerAnimated:YES completion:nil];
}
支付方法
#pragma mark -----點(diǎn)擊支付
- (IBAction)checkOut:(id)sender
{
if([PKPaymentAuthorizationViewController canMakePayments]) {
NSLog(@"支持支付");
// 我們后面創(chuàng)建出來的支付頁(yè)面就是根據(jù)這個(gè)request
PKPaymentRequest *request = [[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:@"2個(gè)大展"
amount:[NSDecimalNumber decimalNumberWithString:@"0.02"]];
PKPaymentSummaryItem *widget4 = [PKPaymentSummaryItem summaryItemWithLabel:@"總金額" amount:[NSDecimalNumber decimalNumberWithString:@"0.01"] type:PKPaymentSummaryItemTypeFinal];
request.paymentSummaryItems = @[widget1, widget2, widget3, widget4];
request.countryCode = @"CN";
request.currencyCode = @"CNY";//人民幣
request.supportedNetworks = @[PKPaymentNetworkChinaUnionPay, PKPaymentNetworkMasterCard, PKPaymentNetworkVisa];
// 這里填的是就是我們創(chuàng)建的merchat IDs
request.merchantIdentifier = @"merchant.com.dazhan.applePayDemo";
request.merchantCapabilities = PKMerchantCapabilityCredit;
//增加郵箱及地址信息
request.requiredBillingAddressFields = PKAddressFieldEmail | PKAddressFieldPostalAddress;
// 根據(jù)request去創(chuàng)建支付頁(yè)面
PKPaymentAuthorizationViewController *paymentPane = [[PKPaymentAuthorizationViewController alloc] initWithPaymentRequest:request];
// 設(shè)置代理
paymentPane.delegate = self;
if (!paymentPane) {
NSLog(@"出問題了");
} else {
// 模態(tài)推出頁(yè)面
[self presentViewController:paymentPane animated:YES completion:nil];
}
} else {
NSLog(@"該設(shè)備不支持支付");
}
}

效果圖.gif
如有雷同,你就是抄我的!?????? --大展