SDK集成开发指南

目录

SDK集成开发指南

为保证用户输入支付密码时的输入安全,招行自主开发了安全输入键盘,以sdk形式供商户集成到APP中,配合招行一网通支付使用,保护用户的密码安全。分为Android版和IOS版。

1、SDK集成方法

Android版集成方法

1、SDK文件目录结构:

APP截图

2、将SDK中的cmbkeyboard.jar复制到Android工程的libs目录下,并将SDK中res目录下的内容,复制到Android工程的res目录下(SDK的res下的文件都带前缀cmbkb)。具体可参见kbTest示例工程。

3、AndroidManifest.xml中声明引用jar包中的组件PBKeyboardActivity,并声明服务权限;

APP截图

4、调用键盘

需要重写webview的shouldOverrideUrlLoading,用以处理特殊的url,见示例程序kbTest

二、接口

用的类只有一个 cmb.pb.util.CMBKeyboardFunc

boolean HandleUrlCall(WebView mWebView, String url) //捕获页面发来的特殊URL,调起键盘(“http://cmbls/cmbKeyboard?id=....”)

如果出错,或者不是调用键盘的URL,则返回false;

CMBKeyboardFunc不要声明成全局对象。

三、密钥更新

res\values\cmbkb_strings.xml 中的cmbkb_publickey字段存放的时SDK使用的密钥,正式发布前需向我行申请用于生产环境的密钥,并更新到cmbkb_publickey字段后发布正式版本。

四、注意事项

1、cmbkeyboard.jar 已经做了混淆,集成的APP混淆后可能对SDK调用有影响,有两种解决办法(自选一种):

1)、 APP里不再对cmbkeyboard.jar做混淆

2)、 增加如下混淆配置:

-keepclasseswithmembers class cmb.pb.util.CMBKeyboardFunc {
    public <init>(android.app.Activity);
    public boolean HandleUrlCall(android.webkit.WebView,java.lang.String);
    public void callKeyBoardActivity();
}	

2、注意对http://cmbls/cmbKeyboard...url的拦截,因为这个url只是用于调起安全键盘的,在成功调起安全键盘后,webView不要去加载这个URL。

iOS版集成方法

1、SDK文件目录结构:

APP截图

2、在目标工程中添加库cmbkeyboard.framework,直接将库拷贝到目标工程目录下,并在Xcode中添加至项目。

3、在需要使用到安全键盘的地方,包含头文件:

#import <cmbkeyboard/CMBWebKeyboard.h>

#import <cmbkeyboard/NSString+Additions.h>

4、SecreteKeyBoard文件夹是密码键盘所用到的资源图片,将其拷贝到Assets.xcassets或者Image.xcassets目录下即可,若图片没有加载,则显示的密码键盘页面是透明的。

5、密码键盘的调用在WebViewController中,需重写webView方法,这个网页是商户自己实现的(可以参考示例工程kbTest)。当用户点击输入密码时,网页捕获到重定向url:“http://cmbls/cmbKeyboard?id=....”时调用密码键盘,在WebViewController里实现。具体调用方式如下:

 - (BOOL)webView:(UIWebView *)_webView
shouldStartLoadWithRequest:(NSURLRequest *)request
navigationType:(UIWebViewNavigationType)navigationType
{
    if ([request.URL.host isCaseInsensitiveEqualToString:@"cmbls"]) {//此处开始调用键盘
        CMBWebKeyboard* secKeyboard = [CMBWebKeyboard shareInstance];
        [secKeyboard showKeyboardWithRequest:request];
        secKeyboard.webView = _webView;
        //以下是实现点击键盘外地方,自动隐藏键盘
        UITapGestureRecognizer* myTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleTap:)];
        [self.view addGestureRecognizer:myTap]; //这个可以加到任何控件上,比如你只想响应WebView,我正好填满整个屏幕
        myTap.delegate = self;
        myTap.cancelsTouchesInView = NO; 
        return NO;
    }
    return YES;
 }

6、请注意需要隐藏键盘的情况即调用hideKeyboard方法的地方,即显示键盘的时候(隐藏原来的键盘)、关闭键盘的时候、点击键盘外的地方时、离开网页时。具体请见示例程序kbTest。

公钥配置说明:

在商户App的Info.plist文件中(不是framework中的Info.plist)增加属性CMBPublicKey:

<key>CMBPublicKey</key>
<string>公钥内容</string>

正式发布前需向我行申请用于生产环境的密钥,并更新到CMBPublicKey字段后发布正式版本。
注意事项:

1、iOS9及以上引入新特性,ATS,要求APP内访问的网络必须使用HTTPS协议,故需在项目的info.plist文件中增加如下属性:

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>

2、注意对http://cmbls/cmbKeyboard...url的拦截,因为这个url只是用于调起安全键盘的,在成功调起安全键盘后,webView不要去加载这个URL。具体做法是在webview方法中,在if语句的最后面加上一句return NO;拦截请求。

2、SDK密钥管理

安全键盘采用了RSA公私钥体系来保护密码的安全(公钥加密,私钥解密),公钥以文件形式随SDK提供,开发测试和正式投产使用不同的公私钥对。

相关问题

我要提问    |    历史提问查询


*请输入您的问题:(500个字以内)

*请输入您的昵称:(10个字以内)

 

*请输入您的邮箱(查询依据):