银行卡接口调用流程

当把SDK集成到开发环境之后,您还需要设置相关参数等操作。身份证扫描参数与银行卡扫描参数有所不同。您需要根据您的需求,选择对应的参数设置方法。

当您需要扫描身份证时,请参考身份证接口调用流程

1.银行卡扫描参数设置

使用OCR SDK扫描银行卡前,您需要设置扫描界面的方向。具体请参考下面的代码:

/**返回裁剪过得图像或者返回原图(可选)
* *设置返回裁剪过的图像,使用BankCardActivity.EXTRA_CARD_IMAGE_RECTIFIED
* *设置为返回原图,使用BankCardActivity.EXTRA_CARD_IMAGE
**/
Intent scanIntent = new Intent(MainActivity.this, BankCardActivity.class);
scanIntent.putExtra(BankCardActivity.EXTRA_CARD_IMAGE_RECTIFIED, true);
//标题栏标题
scanIntent.putExtra(BankCardActivity.EXTRA_SCAN_TITLE, "请扫描银行卡");
//扫描框文字
scanIntent.putExtra(BankCardActivity.EXTRA_SCAN_TIPS,“扫描框文字”);
//设置是否开启扫描光标
scanIntent.putExtra(BankCardActivity.EXTRA_SCAN_LINE_STATUS, true);
/**竖屏模式下支持扫描框位置微调
 * *通过设置参数BankCardActivity.EXTRA_SCAN_RECT_OFFSET(int)微调位置
 * *阈值为-75到75;+75表示向上移动的最大值,-75表示向下移动的最大值
**/
scanIntent.putExtra(BankCardActivity.EXTRA_SCAN_RECT_OFFSET, scanRectOffset);

// 设置扫描过程中保存预览图的时间间隔,单位:秒,小于0关闭此功能,默认关闭
scanIntent.putExtra(BankCardActivity.EXTRA_PREVIEW_TIME_GAPS, 3);
// 设置预览图保存路径,如果打开保存预览图功能,必须设置此参数
scanIntent.putExtra(BankCardActivity.EXTRA_PREVIEW_STOREAGE_PATH, Environment.getExternalStorageDirectory().getAbsolutePath().toString());
// 设置保存的预览图个数,默认为3
// scanIntent.putExtra(BankCardActivity.EXTRA_PREVIEW_SAVED_NUM, 4);

/**设置为识别竖版银行卡
 * *通过设置参数BankCardActivity.EXTRA_SCAN_CARD_VERTICAL(boolean)
 * *参数为true,设置为竖卡识别;false,设置为正常的横卡识别;默认值为false。
**/
scanIntent.putExtra(BankCardActivity.EXTRA_SCAN_CARD_VERTICAL, true);
//是否整卡扫描,可不传,默认true
scanIntent.putExtra(BankCardActivity.EXTRA_SCAN_IS_IN_FRAME, true);
//设置扫描的超时时间,单位秒
scanIntent.putExtra(BankCardActivity.EXTRA_SCAN_TIME_OUT, 30);
//设置是否开启自动对焦,默认不开启
scanIntent.putExtra(BankCardActivity.EXTRA_SCAN_AUTO_FOCUS, false);

2.启动扫描界面

//启动扫描界面
startActivityForResult(scanIntent, EXAMPLE_REQUEST_CODE);

3.返回码处理

//扫描成功。可按“4.获取数据”部分处理结果
case BankCardActivity.RESULT_CARD_INFO

//相机授权失败。请在设置中打开相机权限或动态请求相机权限
case BankCardActivity.RESULT_CAMERA_NOT_AVAILABLE

//扫描取消。
case Activity.RESULT_CANCELED

//识别模型初始化失败。可以根据data中的“error_code”、“error_msg”错误信息做相应的处理
case BankCardActivity.RESULT_RECOGNIZER_INIT_FAILED

//License路径未初始化。License路径未初始化
case BankCardActivity.RESULT_NOT_INIT_LIC_PATH_ERROR

//扫描超时。超时自动退出了扫描界面
BankCardActivity.RESULT_RECOGNIZER_FAIL_SCAN_TIME_OUT

以上“识别模型初始化失败”的error_code类别如下:
LFCommon.CV_E_FILE_NOT_FOUND //模型未找到,加载失败
LFCommon.CV_E_INVALID_APPID //包名错误
LFCommon.CV_E_AUTH_EXPIRE //License过期
LFCommon.CUS_SET_CONFIG_ERROR //设置模型Config信息失败

4.获取数据

离线版可直接获取到数据,如下

private Object getReturnResult(String key) {
        Object data = LFIntentTransportData.getInstance().getData(key);
        LFIntentTransportData.getInstance().removeData(key);
        return data;
 }

BankCard bankCard =
(BankCard) getReturnResult(BankCardActivity.EXTRA_SCAN_RESULT);
byte[] imageBytes = 
(byte[]) getReturnResult(BankCardActivity.EXTRA_CARD_IMAGE_RECTIFIED);if (imageBytes != null) {
//获取imageBytes图像数据后,可使用bitmap工具类处理
Bitmap bitmap = BitmapFactory.decodeByteArray(imageBytes, 0, imageBytes.length);}

//使用bankCard.getNumber()获取返回的银行卡卡号
StringBuffer cardNumber = new StringBuffer(bankCard.getNumber());
resultStr = "银行卡号:" + cardNumber.toString();    

//使用bankCard.getBankIdentificationNumber()获取返回的发卡行标识代码
String bankIdentificationNumber = "发卡行标识代码:" + bankCard.getBankIdentificationNumber();

//使用bankCard.getCardName()获取返回的卡片名称
String bankCardName = "卡片名称:" + bankCard.getCardName();

//使用bankCard.getCardType()获取返回的卡片类型
String bankCardType = "卡片类型: " + bankCard.getCardType();

//使用bankCard.getNumRectPos()返回银行卡号区域截图位置,numRectPos是银行卡号截图所在位置,裁剪后的银行卡图像。
int[] numRectPos = bankCard.getNumRectPos();
//numRectPos[0]对应bottom,numRectPos[1]对应left,numRectPos[2]对应right,numRectPos[4]对应top
Bitmap cardNumImage =
Bitmap.createBitmap(bitmap, numRectPos[1], numRectPos[3], numRectPos[2]-numRectPos[1], numRectPos[0]-numRectPos[3]);

在线版获取数据

在线版获取到的是加密后的数据,需要调用解密接口解密,参考使用指南,详见4.3的步骤3。

results matching ""

    No results matching ""