接口调用

最近更新时间:2019-07-09 14:53:32

SDK 接口调用方法

SDK 代码调用的入口为 com.webank.mbank.ocr.WbCloudOcrSDK 这个类。

public class WbCloudOcrSDK{

/**
* 该类为一个单例,需要先获得单例对象再进行后续操作
   */
       public static synchronized WbCloudOcrSDK getInstance() {
       //    ...
       }

/**
* 在使用 SDK 前先初始化,传入需要的数据 data,由 OcrLoginListener 返回是否登录 SDK 成功
* 关于传入数据 data 见后面的说明
*/
public void init(Context context,Bundle data,OcrLoginListener loginListerner){
//    ...
}
   /**
     * 登录成功后,调用此函数拉起 sdk 页面
     * @param context                  拉起 SDK 的上下文
     * @param idCardScanResultListener 返回到第三方的接口
     * @param type                     进入 SDK 的模式,参数是枚举类型
     */
    public void startActivityForOcr(Context context,IDCardScanResultListener,WBOCRTYPEMODE type){
  // ...
 }
/**
  * 登录回调接口
  */
public interface OcrLoginListener {
        void onLoginSuccess();
        void onLoginFailed(String errorCode, String errorMsg);
    }

/**
  * 退出 SDK,返回第三方的回调,同时返回 ocr 识别结果
  */
public interface IDCardScanResultListener{
        /**
         * @RARAM exidCardResult   SDK 返回的识别结果的错误码  
* @RARAM exidCardResult   SDK 返回的识别结果的错误信息    
         */
        void onFinish(String errorCode, String errorMsg);
}

WbCloudOcrSdk.init()的第二个参数用来传递数据,可以将参数打包到data(Bundle)中,必须传递的参数包括:

//这些都是 WbCloudOcrSdk.InputData 对象里的字段,是需要传入的数据信息
String orderNo;  //订单号
String openApiAppId;  //APP_ID 
String openApiAppVersion;  //openapi  Version
String openApiNonce; //32 位随机字符串
String openApiUserId; //user id
String openApiSign; //签名信息

注意:

以上参数被封装在 WbCloudFaceVerifySdk.InputData 对象中(它是一个 Serializable 对象)。

EXBankCardResult 代表 SDK 返回的识别银行卡的结果,该类属性如下所示:

public String ocrId;//识别的唯一标识
public String bankcardNo;//识别的银行卡号
public String bankcardValidDate;//识别的银行卡的有效期
public String orderNo;//订单号
public String warningMsg;   //识别的警告信息
public String warningCode;  //识别的警告码
public Bitmap bankcardNoPhoto;//识别的银行卡的卡号图片

登录回调接口

/**
  * 登录回调接口
  */
public interface OcrLoginListener {
        void onLoginSuccess();//登录成功
          /**
           * @PARAM errorCode 登录失败错误码
           * @PARAM errorMsg  登录失败错误信息
           */        
         void onLoginFailed(String errorCode, String errorMsg);
    }

返回第三方接口

/**
  * 退出 SDK,返回第三方的回调,同时返回ocr识别结果
  */
public interface IDCardScanResultListener{
        /**
         * 退出 SDK,返回第三方的回调,同时返回 ocr 识别结果
         * @param errorCode        返回错误码,识别成功返回 0
         * @param errorMsg        返回错误信息,和错误码相关联         */
        void onFinish(String errorCode, String errorMsg);
}

银行卡识别结果类
银行卡识别结果封装在 EXBankCardResult 类中,通过WbCloudOcrSDK.getInstance().getBankCardResult()获得,该类属性如下所示:

public String ocrId;//ocrId
public String bankcardNo;//卡号
public String bankcardValidDate;//有效期
public String orderNo;//订单号
public String warningMsg;//告警信息
public String warningCode;//告警码
public Bitmap bankcardNoPhoto; //卡号切边图
public String bankcardFullPhoto;//银行卡图片存放路径

接口参数说明

InputData 是用来给 SDK 传递一些必须参数所需要使用的对象(WbCloudOcrSdk.init() 的第二个参数),合作方需要加入 SDK 需要的一些数据以便启动 OCR SDK。
其中 InputData 对象中的各个参数定义如下表,请合作方按下表标准加入对应的数据。

参数 说明 类型 长度(字节) 是否必填
orderNo 订单号,合作方订单的唯一标识 String 32
openApiAppId 腾讯云线下对接分配的 app_id String 腾讯服务分配
openApiAppVersion 接口版本号,默认填1.0.0 String 20
openApiNonce 32位随机字符串,每次请求需要的一次性 nonce String 32
openApiUserId User Id,每个用户唯一的标识 String 30
openApiSign 合作方后台服务器通过 ticket 计算出来的签名信息 String 40
clientIp 用户 ip 信息
格式:“ip=xxx.xxx.xxx.xxx”
示例:“ip=58.60.124.0”
String -
gps 用户 GPS 信息
格式:“lgt=xxx;lat=xxx”
示例:“lgt=22.5044;lat=113.9537”
String -

个性化参数设置

WbCloudOcrSdk.init()里的Bundle data,除了必须要传的 InputData 对象之外,还可以由合作方为其传入一些个性化参数,量身打造更契合自己 App 的 SDK。如果合作方未设置这些参数,则以下所有参数按默认值设置。

设置 SDK 的扫描识别的时间上限

合作方可以设置 SDK 的扫描识别时间的上限。 SDK 打开照相机进行扫描识别的时间上限默认是20秒,20秒内若识别成功则退出扫描界面,否则一直识别,直到20秒后直接退出扫描界面。第三方可对其个性化设置,设置的时间上限不能超过60秒,建议第三方采用默认值,不要修改这个参数。设置代码如下:

# 在 MainActivity 中单击某个按钮的代码逻辑:
  //先将必填的 InputData 放入 Bundle 中
  data.putSerializable(WbCloudFaceVerifySdk.INPUT_DATA, inputData);
  //设置 SDK 扫描识别证件(身份证、银行卡)的时间上限,如果不设置则默认 20 秒;设置了则以设置为准
  //此处设置 SDK 的扫描识别时间的上限为 20 秒
   data.putLong(WbCloudOcrSDK.SCAN_TIME, 20000);

个性化设置接入示例

# 在 MainActivity 中单击某个按钮的代码逻辑:
  //先将必填的 InputData 放入 Bundle 中
  data.putSerializable(WbCloudOcrSDK.INPUT_DATA, inputData);
  //设置扫描识别的时间上限,默认 20 秒,此处设置为 20 秒
  data.putLong(WbCloudOcrSDK.SCAN_TIME, 20000);