iOS App集成Apple Pay教程(附示例代碼)

蘋果在本週一發佈了iOS 8.1版本,並正式開放了Apple Pay支付系統。Apple Pay是一個基於NFC的支付系統,不久將被數以萬計的線下零售商店予以支持。即使這項科技並非完全的突破性進展,但它足以推進許多公司和零售商來支持這種支付方式,併成爲蘋果又一項成功的投資。ios

Apple Pay還給開發者帶來了處理支付的新渠道,用戶將指望在應用中使用它,由於它將驗證和交易極端簡化,僅需手指輕輕一觸便可完成,若是應用裏面有涉及到交易,開發者頗有必要集成Apple Pay。那麼如何將Apple Pay功能集成到你的應用裏呢?git

在App裏設置Apple Paygithub

 

Screen-Shot-2014-10-21-at-1.31.40-PM.png

Xcode 6.1提供了很是方便的界面來設置Apple Pay。第一步先修改target爲iOS 8.1,而後在項目Capabilities裏將Apple Pay設置爲on,這將自動導入須要的庫文件,而後添加一個權限文件並設置,最後修改或建立你的App ID。數組

screen1.png

你可能會注意到上面沒有有效的Merchant ID,咱們須要建立一個,訪問蘋果iOS 開發者中心的位於Identifiers > Merchant ID的頁面安全

而後隨着流程指引,建立一個Merchant ID並註冊它。服務器

screen2.png

如今,咱們須要給Merchant ID添加一個證書籤名請求(Certificate Signing Request),以便加密支付令牌來保證其安全性。爲達到這個目的,導航至你的Merchant ID,並點擊Edit按鈕來修改它。app

screen3.png

如今,你須要建立一個證書。點擊下面的Create Certificate按鈕,並跟隨蘋果的流程指引完成建立。框架

screen4.png

如今Merchant ID設置好了,你能夠回到Xcode並刷新Merchant ID區塊,若是一切正常,你應當看到剛建立的ID出如今列表上。將它選中,而後能夠進入下一部分。ide

screen5.png

編寫代碼優化

咱們在Github上提供了一個集成Apple Pay的示例項目:cjbeauchamp/ApplePayDemo ,權限文件和App設置文件已經剝離出去了,能夠放心將它添加到你本身的項目裏。下面咱們將討論一些開發中的要點。

設置項目

Apple Pay使用了PassKit框架,因此你須要在適當的文件裏導入頭文件:

1
#import <passkit passkit.h=""></passkit>

你還須要接收Apple Pay處理信息的回調,因此確保將委託添加到接收類上:

1
2
@interface ViewController : UIViewController
<pkpaymentauthorizationviewcontrollerdelegate></pkpaymentauthorizationviewcontrollerdelegate>

建立支付請求

首先你須要確認設備是否支持Apple Pay支付,確認的代碼是:

1
2
3
if ([PKPaymentAuthorizationViewController canMakePayments]) { 
     ... 
}

在上面的代碼塊裏,你能使用PKPayment類來建立支付請求。下面是相應的代碼,你須要將其中一些信息修改爲本身的,好比merchantIdentifier須要與你以前建立的Merchant ID相匹配。

1
2
3
4
5
6
PKPaymentRequest *request = [[PKPaymentRequest alloc] init];
request.countryCode = @ "US" ;
request.currencyCode = @ "USD" ;
request.supportedNetworks = @[PKPaymentNetworkAmex, PKPaymentNetworkMasterCard, PKPaymentNetworkVisa];
request.merchantCapabilities = PKMerchantCapabilityEMV;
request.merchantIdentifier = @ "merchant.com.myMerchantID" ;

添加物品到支付頁

你可使用PKPaymentSummaryItem來建立物品並顯示,這個對象描述了一個物品和它的價格,數組最後的對象必須是總價格。

1
2
3
4
5
6
7
PKPaymentSummaryItem *widget1 = [PKPaymentSummaryItem summaryItemWithLabel:@ "Widget 1"  amount:[NSDecimalNumber decimalNumberWithString:@ "0.99" ]];
 
PKPaymentSummaryItem *widget2 = [PKPaymentSummaryItem summaryItemWithLabel:@ "Widget 2"  amount:[NSDecimalNumber decimalNumberWithString:@ "1.00" ]];
 
PKPaymentSummaryItem *total = [PKPaymentSummaryItem summaryItemWithLabel:@ "Grand Total"  amount:[NSDecimalNumber decimalNumberWithString:@ "1.99" ]];
 
request.paymentSummaryItems = @[widget1, widget2, total];

顯示認證視圖

最後,顯示由PassKit框架提供的view controller,接下來它將自動處理認證。

1
2
3
PKPaymentAuthorizationViewController *paymentPane = [[PKPaymentAuthorizationViewController alloc] initWithPaymentRequest:request];
paymentPane.delegate = self;
[self presentViewController:paymentPane animated:TRUE completion:nil];

實現委託方法

被請求的委託方法是被認證成功和認證完成兩個事件調用的。是否解除view controller,以及讓用戶知道認證是否成功都取決於你。方法的簽名以下:

1
2
- (void)paymentAuthorizationViewController:didAuthorizePayment:completion:
- (void)paymentAuthorizationViewControllerDidFinish:

支付驗證

在Apple Pay驗證了支付以後,仍然須要開發者來完成交易,這能夠用didAuthorizePayment委託方法來完成,它須要你鏈接服務器並上傳支付令牌和 其餘信息,以完成整個支付流程。在服務器呼叫結束後,你須要調用completion方法,摒棄提供success或failure標記的參數。你能夠在 示例代碼裏找到具體實現。

監控並優化交易

Apple Pay是現有的結帳流程很是棒的解決方案,在應用裏使用它無疑會讓用戶們高興。儘管Apple Pay讓支付流程極端簡化,仍然有許多變更地方,他們的表現將直接與app的營收掛鉤。

交易監控

Crittercism公司的新Transaction Management是一種很棒的方法,用來監控各類交易確保它們工做正常。若是一個API端末或服務執行緩慢,或者若是用戶決定取消交易,或者你的應用崩潰了,你須要知道這些信息才能更好的優化它們。你能夠到Crittercism官方網站瞭解更多信息。

總結

但願這個入門教程讓你更好的理解和使用Apple Pay。別忘了閱讀蘋果的指南和文檔來了解如何與供應商集成,以及用戶界面的指導規範。你能夠在蘋果Apple Pay的官網上找到它們。

相關文章
相關標籤/搜索