APP支付

iOS接入要点说明

以下项目开发环境以Xcode9.2,运行环境为IOS8.0为例,说明其开发中需要的操作。

1. 项目设置

在Xcode中打开项目:

  • 在info.plist中增加LSApplicationQueriesSchemes白名单配置,值为cmbmobilebank。

  • 在URL Types中新增URL Schemes,值设置为招行分配给商户的scheme(需与安卓设置的scheme保持一致),如分配到的scheme为abcdefg则配置如下图所示。

iosaccess.png


2. 调起请求

根据业务功能接口生成请求数据(如根据一网通支付的订单接口生成订单数据),以下是发起请求的关键代码:

    CMBRequest *reqObj = [[CMBRequest alloc] init];    
   reqObj.requestData= requestData;//业务功能请求数据,格式由业务功能定义,必填    
   reqObj.method = method;//由业务功能自己定义,必填    
   reqObj.h5Url = h5Url;//业务功能相应的weburl, h5Url与CMBJumpUrl至少有一个赋值   
   reqObj.CMBJumpUrl = CMBJumpUrl;//业务功能在招行内部对应的JumpUrl,h5Url与CMBJumpUrl至少有一个赋值    
   [CMBApi sendRequest:reqObj appid:appid viewController:self delegate:[CMBApiManager sharedManager]];

3. 请求结果URL传递

当这笔请求(如支付)完成后招商银行APP会提示用户“返回”。此时需要在商户的APAppDelegate.m的中拦截返回结果的url

//ios9之前使用如下两个接口拦截,并传递给招商银行SDK

- (BOOL)application:(UIApplication *)application
 openURL:(NSURL *)url
 sourceApplication:(NSString *)sourceApplication
 annotation:(id)annotation {
     return [CMBApi handleOpenURL:url delegate:xxx];
 }

//ios9之后使用此接口,并传递给招商银行SDK

- (BOOL)application:(UIApplication *)app
 openURL:(NSURL *)url
 options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {
     return [CMBApi handleOpenURL:url delegate:xxx];
 }

4. 请求结果回调

参照招商银行SDK Sample,在类实现onResp函数,请求完成(如支付)后,招商银行APP会返回到商户APP并回调onResp函数,开发者需要在该函数中接收通知,判断返回错误码,如果请求(如支付)处理成功则去后台查询请求结果再展示用户实际结果。注意:一定不能以客户端的回调结果作为展示给用户的结果,应以服务器端的接收的请求(如支付)处理通知或查询API返回的结果为准。代码示例如下:

- (void)onResp:(CMBResponse *)resp {
     if (resp.errCode == 0) {
         NSLog(@"Success!");//以后台结果为准
     } else {
         NSLog(@"xxxx!");//以后台结果为准
     }
 }