ApplePay支付总结

最近在项目中加入了ApplePay支付,总结一下项目中需要注意点。我们使用的是银联集成的ApplePay SDK,下载地址。

前期准备工作

  1. 需要成为银联手机支付入网商户。
  2. 登录银联商户服务平台,通过商户服务平台申请CSR。
  3. 将CSR提交至Apple,生成Apple Merchant ID。
  4. 下载银联ApplePay SDK导入项目中,后台配置好测试环境。

下面开始正式的开发模式:

银联的调用代码:

#import 
#import 
#import "UPAPayPluginDelegate.h"

@interface UPAPayPlugin : NSObject

/**
 *  支付接口
 *
 *  @param tn             订单信息
 *  @param mode           接入模式,标识商户以何种方式调用支付控件,00生产环境,01测试环境
 *  @param viewController 启动支付控件的viewController
 *  @param delegate       实现 UPAPayPluginDelegate 方法的 UIViewController
 *  @param mID            苹果公司分配的商户号,表示调用Apple Pay所需要的MerchantID;
 *  @return 返回函数调用结果,成功或失败
 */
+ (BOOL)startPay:(NSString*)tn
            mode:(NSString*)mode
  viewController:(UIViewController*)viewController
        delegate:(id)delegate
  andAPMechantID:(NSString* )mID;

@end

很简单的只要传入5个参数就可以了,不过由于中国区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;
}

当我们获取从服务器获取tn参数,就可以调用银联APPlePay SDK
,等待SDK的回调处理。

#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里,避免回调代码散落到处都是。


ApplePay支付总结_第1张图片

PS:由于涉及到支付和银联交互很繁琐,最好预留2周时间。

你可能感兴趣的:(ApplePay支付总结)