APP支付之ApplePay淺談

前段時(shí)間移動支付界發(fā)生了一件大事,估計(jì)使得支付寶、微信、百度等運(yùn)營移動支付業(yè)務(wù)的公司感到一陣強(qiáng)風(fēng)來臨,這件事情就是ApplePay登陸中國。
ApplePay這一使用指紋和NFC功能通訊的支付服務(wù),帶著比較明顯的優(yōu)勢殺入這一市場,同時(shí)也為我們開發(fā)者提供了另一個(gè)支付選擇,那么今天我們就來聊一聊如何在我們項(xiàng)目中集成這一功能。
首選我們需要在蘋果開發(fā)者中心進(jìn)行商業(yè)證書的配置,只需要根據(jù)提示一步一步配置即可,這里我就不一一敘述了(注意:bundle名稱一定要和工程中一致并且設(shè)置描述文件時(shí)要將Apple Pay這一選項(xiàng)選中)

商業(yè)證書配置

證書配置完成后,我們需要在鑰匙串中安裝并在工程中進(jìn)行相關(guān)配置

工程中配置

代碼部分

首先我們需要導(dǎo)入兩個(gè)頭文件

#import "ViewController.h"
//需要導(dǎo)入兩個(gè)頭文件
#import <PassKit/PassKit.h>
#import <AddressBook/AddressBook.h>
//并遵循一個(gè)代理
@interface ViewController ()<PKPaymentAuthorizationViewControllerDelegate>

@end

在storyBoard中設(shè)置一個(gè)按鈕,并關(guān)聯(lián)成事件(支付按鈕)

- (IBAction)payButton:(UIButton *)sender {
//判斷設(shè)備是否支持支付
if([PKPaymentAuthorizationViewController canMakePayments]) {

    PKPaymentRequest *request = [[PKPaymentRequest alloc]init];
    //商品目錄
    PKPaymentSummaryItem *widget1 = [PKPaymentSummaryItem summaryItemWithLabel:@"寶馬" amount:[NSDecimalNumber decimalNumberWithString:@"1000"]];
    
    PKPaymentSummaryItem *widget2 = [PKPaymentSummaryItem summaryItemWithLabel:@"貼膜" amount:[NSDecimalNumber decimalNumberWithString:@"80"]];
    //將訂單信息放到請求對象上
    request.paymentSummaryItems = @[widget1,widget2];
    //指定國家編碼
    request.countryCode = @"CN";
    //指定貨幣
    request.currencyCode = @"CNY";
    //指定網(wǎng)上銀行支付方式
    request.supportedNetworks = @[PKPaymentNetworkChinaUnionPay, PKPaymentNetworkMasterCard, PKPaymentNetworkVisa];
    //指定app需要的商業(yè)ID
    request.merchantIdentifier = @"merchant.com.mx.test";
    //指定支付的權(quán)限 范圍限制
    request.merchantCapabilities = PKMerchantCapabilityEMV;
    //指定訂單接收的地址 
    request.requiredBillingAddressFields = PKAddressFieldEmail | PKAddressFieldPostalAddress;
    
    //創(chuàng)建支付頁面
    PKPaymentAuthorizationViewController *paymentPane = [[PKPaymentAuthorizationViewController alloc] initWithPaymentRequest:request];
    //設(shè)置代理
    paymentPane.delegate = self;
    
    //判斷是否成功
    if (!paymentPane) {
        NSLog(@"出問題了");
        
    }else{
        [self presentViewController:paymentPane animated:YES completion:nil];
    }
}else{
    
    NSLog(@"此設(shè)備不支持支付");
}
       
}

實(shí)現(xiàn)代理方法

/**
 *  這個(gè)方法在支付過程中進(jìn)行調(diào)用,這個(gè)方法直接影響支付結(jié)果在界面的顯示
 *
 *  @param controller 支付頁面
 *  @param payment   代表著支付對象,支付的所有相關(guān)信息都在這個(gè)對象中 比較重要的兩個(gè)屬性token(系統(tǒng)返回的信息)和address(訂單地址)
 *  @param completion 這是一個(gè)回調(diào)block塊,這里傳的參數(shù),直接應(yīng)用界面結(jié)果的顯示
 */
-(void)paymentAuthorizationViewController:(PKPaymentAuthorizationViewController *)controller didAuthorizePayment:(PKPayment *)payment completion:(void (^)(PKPaymentAuthorizationStatus))completion{
    
    //拿到token
    PKPaymentToken *token = payment.token;
    //拿到訂單地址
    NSString *address = payment.billingContact.postalAddress.city;
    NSLog(@"city:%@",address);
    //在這里將token和address 發(fā)送到自己的服務(wù)器,由自己的服務(wù)器與銀行和商家進(jìn)行接口調(diào)用和支付將結(jié)果返回到這里
    //我們根據(jù)結(jié)果生成對應(yīng)的狀態(tài)對象,根據(jù)狀態(tài)對象顯示不同的支付結(jié)構(gòu)
    //狀態(tài)對象(枚舉值)
    PKPaymentAuthorizationStatus status = PKPaymentAuthorizationStatusSuccess;completion(status);
    
}

//支付完成后調(diào)用 讓支付頁面消失

- (void)paymentAuthorizationViewControllerDidFinish:(PKPaymentAuthorizationViewController *)controller{
    [controller dismissViewControllerAnimated:YES completion:nil];
}

運(yùn)行之后的效果

運(yùn)行之后的效果

這樣我們就集成了一個(gè)簡單的支付功能
如果想更深入了解的童鞋可以看下官方文檔:
https://developer.apple.com/library/ios/ApplePay_Guide/index.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,781評論 25 709
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 15,071評論 4 61
  • 今天一早就看到一個(gè)朋友發(fā)了一條鏈接給我,內(nèi)容是:你為什么不發(fā)朋友圈了?看完信息內(nèi)容,不能不感動。 其中...
    四葉草軟軟閱讀 249評論 0 0
  • 文章來源:http://www.motortrend.com/news/2015-honda-cr-v-touri...
    克超閱讀 649評論 0 0
  • 文/四夕 一直對大胡子拍的《神雕俠侶》無感,所以很多情節(jié)都是看過就忘,然而公孫綠萼吃花瓣的情景,卻讓我記憶深刻。因...
    四夕姑娘閱讀 814評論 6 5

友情鏈接更多精彩內(nèi)容