iOS App整合Apple Pay教程(附範例程式碼),iosapple

來源:互聯網
上載者:User

iOS App整合Apple Pay教程(附範例程式碼),iosapple

蘋果在本周一發布了iOS 8.1版本,並正式開放了Apple Pay支付系統。Apple Pay是一個基於NFC的支付系統,不久將被數以萬計的線下零售商店予以支援。即便這項科技並不是徹底的突破性進展,但它足以推動許多公司和零售商來支援這種支付方式,並成為蘋果又一項成功的投資。

Apple Pay還給開發人員帶來了處理支付的新渠道,使用者將期望在應用中使用它,因為它將驗證和交易極端簡化,僅需手指輕輕一觸即可完成,如果應用裡面有涉及到交易,開發人員很有必要整合Apple Pay。那麼如何將Apple Pay功能整合到你的應用裡呢?

在App裡設定Apple Pay

 

Xcode 6.1提供了非常方便的介面來設定Apple Pay。第一步先修改target為iOS 8.1,然後在項目Capabilities裡將Apple Pay設定為on,這將自動匯入需要的庫檔案,然後添加一個許可權檔案並設定,最後修改或建立你的App ID。

你可能會注意到上面沒有有效Merchant ID,我們需要建立一個,訪問蘋果iOS 開發人員中心的位於Identifiers > Merchant ID的頁面。

然後隨著流程指引,建立一個Merchant ID並註冊它。

現在,我們需要給Merchant ID添加一個認證簽章要求(Certificate Signing Request),以便加密支付令牌來保證其安全性。為達到這個目的,導航至你的Merchant ID,並點擊Edit按鈕來修改它。

現在,你需要建立一個認證。點擊下面的Create Certificate按鈕,並跟隨蘋果的流程指引完成建立。

現在Merchant ID設定好了,你可以回到Xcode並重新整理Merchant ID區塊,如果一切正常,你應當看到剛建立的ID出現在列表上。將它選中,然後可以進入下一部分。

編寫代碼

我們在Github上提供了一個整合Apple Pay的樣本項目:cjbeauchamp/ApplePayDemo ,許可權檔案和App設定檔案已經剝離出去了,可以放心將它添加到你自己的項目裡。下面我們將討論一些開發中的要點。

設定項目

Apple Pay使用了PassKit架構,所以你需要在適當的檔案裡匯入標頭檔:

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

你還需要接收Apple Pay處理資訊的回調,所以確保將委託添加到接收類上:

12 @interface ViewController : UIViewController<pkpaymentauthorizationviewcontrollerdelegate></pkpaymentauthorizationviewcontrollerdelegate>

建立支付請求

首先你需要確認裝置是否支援Apple Pay支付,確認的代碼是:

123 if([PKPaymentAuthorizationViewController canMakePayments]) {     ... }

在上面的代碼塊裡,你能使用PKPayment類來建立支付請求。下面是相應的代碼,你需要將其中一些資訊修改成自己的,比如merchantIdentifier需要與你之前建立的Merchant ID相匹配。

123456 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來建立物品並顯示,這個對象描述了一個物品和它的價格,數組最後的對象必須是總價格。

1234567 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,接下來它將自動處理認證。

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

實現委託方法

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

12 - (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的官網上找到它們。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.