Apple Pay
公司在2014蘋果秋季新品發(fā)布會上發(fā)布的一種基于NFC近距離無線通訊技術(shù)的手機(jī)支付功能,于2014年10月20日在美國正式上線砰碴。
2016年2月18日凌晨5:00, Apple Pay 業(yè)務(wù)在中國上線奸晴。
屏幕快照 2016-08-02 下午6.20.32.png
支持系統(tǒng)和機(jī)型
操作系統(tǒng)最低iOS9.0以上坐搔,部分信息設(shè)置需要iOS9.2以上
適用設(shè)備.png
App接入Apple Pay
- 基于iOS的PassKitFramework:
需要對Payment Sheet的邏輯和異常情況做好相應(yīng)的UI處理何恶。同時在后臺也需要做好支付信息解密、銀聯(lián)接口的交互以及訂單狀態(tài)處理哼拔。 - 使用第三方SDK接入
- 中國銀聯(lián)
- 連連支付
- 首信易支付
-
易寶支付
蘋果目前建議國內(nèi)和第三方合作接入ApplePay引有,能夠省去了一家家銀行簽約的過程,由第三方和一家家銀行溝通事項倦逐,商戶和第三方溝通譬正。所以簽約部分就是和第三方支付平臺簽約了,錢會進(jìn)入和第三方簽約的銀行卡內(nèi)檬姥。
基于基于iOS PassKit Framework 接入Apple Pay
- 申請Merchant ID以及證書
-
工程中Capbility 啟用ApplePay權(quán)限
工程設(shè)置.png
集成
- 導(dǎo)入頭文件
#import<PassKit/PassKit.h>用戶綁定的銀行卡信息
#import<PassKit/PKPaymentAuthorizationViewController.h>Apple pay的展示控件
- 系統(tǒng)檢測
if (![PKPaymentAuthorizationViewController class]) {
PKPaymentAuthorizationViewController需iOS8.0以上支持
return;
}
- 設(shè)備檢測
if (![PKPaymentAuthorizationViewController canMakePayments]) {
支付需iOS9.0以上支持
如果當(dāng)前設(shè)備不支持ApplePay需要隱藏ApplePay支付按鈕
return;
}
- 檢測用戶可進(jìn)行支付卡的類型
是否支持Amex曾我、MasterCard、Visa與銀聯(lián)四種卡健民,根據(jù)自己項目的需要進(jìn)行檢測
NSArray *supportedNetworks = @[PKPaymentNetworkAmex, PKPaymentNetworkMasterCard,PKPaymentNetworkVisa,PKPaymentNetworkChinaUnionPay];
if (![PKPaymentAuthorizationViewController canMakePaymentsUsingNetworks:supportedNetworks])
{
如果當(dāng)前設(shè)備未設(shè)置/當(dāng)前設(shè)備設(shè)置的支付銀行卡無法在商戶提供的支付平臺支付抒巢,則隱藏ApplePay支付按鈕,可以顯示SetApple Pay按鈕(可選)荞雏,提醒用戶進(jìn)行設(shè)置ApplePay虐秦。
return;
}
- 創(chuàng)建支付請求
PKPaymentRequest
?//設(shè)置幣種、國家碼及merchant標(biāo)識符等基本信息
PKPaymentRequest *payRequest = [[PKPaymentRequest alloc]init];
payRequest.countryCode = @"CN"; //國家代碼
payRequest.currencyCode = @“CNY”; //RMB的幣種代碼payRequest.merchantIdentifier = @“merchant.ApplePayAiitecDemo”; //申請的merchantID
payRequest.supportedNetworks = supportedNetworks; //用戶可進(jìn)行支付的銀行卡
payRequest.merchantCapabilities = PKMerchantCapability3DS|PKMerchantCapabilityEMV;
- 送貨地址
需要根據(jù)不同的商品類型來設(shè)置requiredShippingAddressFields
?如果使電子/虛擬商品(一般為提取/下載鏈接)凤优,則顯示聯(lián)系人郵箱悦陋。
?如果為實物,則顯示聯(lián)系人地址筑辨、手機(jī)號以及郵箱
payRequest.requiredShippingAddressFields = PKAddressFieldPostalAddress|PKAddressFieldPhone|PKAddressFieldName;
//送貨地址信息俺驶,這里設(shè)置需要地址和聯(lián)系方式和姓名,如果需要進(jìn)行設(shè)置,默認(rèn)PKAddressFieldNone(沒有送貨地址)
- 配送方式
//設(shè)置商品的配送方式
PKShippingMethod *freeShipping = [PKShippingMethod summaryItemWithLabel:@"包郵" amount:[NSDecimalNumber zero]];
freeShipping.identifier = @"freeshipping";
freeShipping.detail = @"6-8 天 送達(dá)";
PKShippingMethod *expressShipping = [PKShippingMethod summaryItemWithLabel:@"極速送達(dá)" amount:[NSDecimalNumber decimalNumberWithString:@"10.00"]];
expressShipping.identifier = @"expressshipping";
expressShipping.detail = @"2-3 小時 送達(dá)”;
payRequest.shippingMethods = @[freeShipping, expressShipping];
- 賬單信息
賬單列表使用PKPaymentSummaryItem添加描述和價格暮现,價格使用NSDecimalNumber还绘。
PKPaymentSummaryItem初始化:
label為商品名字或者是描述,amount為商品價格栖袋,折扣為負(fù)數(shù)拍顷,type為該條賬單為最終價格還是估算價格
NSDecimalNumber*subtotalAmount= [NSDecimalNumber decimalNumberWithMantissa:1275 exponent:-2isNegative:NO]; //12.75
PKPaymentSummaryItem *subtotal =[PKPaymentSummaryItem summaryItemWithLabel:@"商品價格"amount:subtotalAmount];
NSDecimalNumber*discountAmount = [NSDecimalNumber decimalNumberWithString:@"-12.74"]; //-12.74
PKPaymentSummaryItem *discount =[PKPaymentSummaryItem summaryItemWithLabel:@"優(yōu)惠折扣"amount:discountAmount];
- 顯示Apple Pay 控件
PKPaymentAuthorizationViewController *viewController = [[PKPaymentAuthorizationViewController alloc]initWithPaymentRequest:payRequest];
viewController.delegate= self;
[self presentViewController:viewController animated:YES completion:nil];
界面1.png
界面2.png
代理方法
代理方法.png
Apple Pay UI強(qiáng)制要求
UI要求.png
官方文檔