最近在項(xiàng)目中加入了ApplePay支付,總結(jié)一下項(xiàng)目中需要注意點(diǎn)。我們使用的是銀聯(lián)集成的ApplePay SDK,下載地址务蝠。
前期準(zhǔn)備工作
- 需要成為銀聯(lián)手機(jī)支付入網(wǎng)商戶(hù)。
- 登錄銀聯(lián)商戶(hù)服務(wù)平臺(tái),通過(guò)商戶(hù)服務(wù)平臺(tái)申請(qǐng)CSR。
- 將CSR提交至Apple馏段,生成Apple Merchant ID轩拨。
- 下載銀聯(lián)ApplePay SDK導(dǎo)入項(xiàng)目中,后臺(tái)配置好測(cè)試環(huán)境院喜。
下面開(kāi)始正式的開(kāi)發(fā)模式:
銀聯(lián)的調(diào)用代碼:
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
#import "UPAPayPluginDelegate.h"
@interface UPAPayPlugin : NSObject
/**
* 支付接口
*
* @param tn 訂單信息
* @param mode 接入模式,標(biāo)識(shí)商戶(hù)以何種方式調(diào)用支付控件,00生產(chǎn)環(huán)境亡蓉,01測(cè)試環(huán)境
* @param viewController 啟動(dòng)支付控件的viewController
* @param delegate 實(shí)現(xiàn) UPAPayPluginDelegate 方法的 UIViewController
* @param mID 蘋(píng)果公司分配的商戶(hù)號(hào),表示調(diào)用Apple Pay所需要的MerchantID;
* @return 返回函數(shù)調(diào)用結(jié)果,成功或失敗
*/
+ (BOOL)startPay:(NSString*)tn
mode:(NSString*)mode
viewController:(UIViewController*)viewController
delegate:(id<UPAPayPluginDelegate>)delegate
andAPMechantID:(NSString* )mID;
@end
很簡(jiǎn)單的只要傳入5個(gè)參數(shù)就可以了喷舀,不過(guò)由于中國(guó)區(qū)ApplePay在iOS9.2以后才支持砍濒,我們需要加入判斷:
+ (BOOL)isSupportApplePay {
NSString *iOSVersion = [UIDevice currentDevice].systemVersion;
if (iOSVersion.doubleValue >= 9.2) {
if ([PKPaymentAuthorizationViewController canMakePayments]) {
if ([PKPaymentAuthorizationViewController canMakePaymentsUsingNetworks:@[PKPaymentNetworkChinaUnionPay]]) {
return YES;
} else {
return NO;
}
}
}
return NO;
}
當(dāng)我們獲取從服務(wù)器獲取tn參數(shù),就可以調(diào)用銀聯(lián)APPlePay SDK
硫麻,等待SDK的回調(diào)處理爸邢。
#pragma mark -- UPAPayPluginDelegate
-(void) UPAPayPluginResult:(UPPayResult *) payResult
{
UPPayResult *ttPayResult = payResult;
UPPaymentResultStatus ttResultStatus = ttPayResult.paymentResultStatus;
switch (ttResultStatus) {
case UPPaymentResultStatusSuccess:
{
}
break;
case UPPaymentResultStatusCancel:
{
}
break;
default:
{
}
break;
}
}
這里我是放入了UIViewController的Category里,避免回調(diào)代碼散落到處都是拿愧。
PS:由于涉及到支付和銀聯(lián)交互很繁瑣杠河,最好預(yù)留2周時(shí)間。