银行卡接口调用流程
当把SDK集成到开发环境之后,您还需要设置相关参数等操作。身份证扫描参数与银行卡扫描参数有所不同。您需要根据您的需求,选择对应的参数设置方法。
当您需要扫描身份证时,请参考身份证接口调用流程。
1.银行卡扫描参数设置
使用OCR SDK扫描银行卡前,您需要设置扫描界面的方向。具体请参考下面的代码:
Intent scanIntent = new Intent(MainActivity.this, BankCardActivity.class);
//标题栏标题
scanIntent.putExtra(BankCardActivity.EXTRA_SCAN_TITLE, "请扫描银行卡");
//标题栏左侧按钮
scanIntent.putExtra(BankCardActivity.EXTRA_BACK_DRAWABLE_ID, R.mipmap.icon_scan_back);
//标题栏右侧按钮
scanIntent.putExtra(BankCardActivity.EXTRA_TITLE_RIGHT_HORIZONTAL_TO_VERTICAL_DRAWABLE_ID, R.mipmap.icon_scan_bank_switch_to_vertical);
scanIntent.putExtra(BankCardActivity.EXTRA_TITLE_RIGHT_VERTICAL_TO_HORIZONTAL_DRAWABLE_ID, R.mipmap.icon_scan_bank_switch_to_horizontical);
//扫描取景框边界颜色
scanIntent.putExtra(BankCardActivity.EXTRA_SCAN_GUIDE_COLOR, Color.parseColor("#78FFFFFF"));
//返回原图
scanIntent.putExtra(BankCardActivity.EXTRA_CARD_IMAGE, true); // 原图
// 设置扫描界面方向为竖直,设备头部朝上
scanIntent.putExtra(BankCardActivity.EXTRA_SCAN_ORIENTATION, CardActivity.ORIENTATION_PORTRAIT);
//扫描框文字
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);
//设置扫描的超时时间,单位秒
scanIntent.putExtra(BankCardActivity.EXTRA_SCAN_TIME_OUT, 30);
//设置是否开启自动对焦,默认不开启
scanIntent.putExtra(BankCardActivity.EXTRA_SCAN_AUTO_FOCUS, false);
//设置是否开启手动识别,默认不开启(即拍照识别)
scanIntent.putExtra(BankCardActivity.EXTRA_SCAN_MANUAL_RECOGNIZE, false);
2.启动扫描界面
//启动扫描界面
startActivityForResult(scanIntent, LF_SCAN_ID_CARD_FRONT_REQUEST);
3.返回码处理
//扫描成功。可按“4.获取数据”部分处理结果
case BankCardActivity.RESULT_CARD_INFO
//相机授权失败。请在设置中打开相机权限或动态请求相机权限
case BankCardActivity.RESULT_CAMERA_NOT_AVAILABLE
//扫描取消。
case Activity.RESULT_CANCELED
//扫描超时。超时自动退出了扫描界面
BankCardActivity.RESULT_RECOGNIZER_FAIL_SCAN_TIME_OUT
4.获取数据
private Object getReturnResult(String key) {
Object data = LFIntentTransportData.getInstance().getData(key);
LFIntentTransportData.getInstance().removeData(key);
return data;
}
LFBankCard bankCard =
(LFBankCard) getReturnResult(BankCardActivity.EXTRA_SCAN_RESULT);
byte[] imageBytes =
(byte[]) getReturnResult(BankCardActivity.EXTRA_CARD_IMAGE);
//使用bankCard.getCardNumber()获取返回的银行卡卡号
String cardNumber = bankCard.getCardNumber();
//使用bankCard.getBankName()获取返回的银行卡卡号
String bankName = bankCard.getBankName();
//使用bankCard.getBankIdentificationNumber()获取返回的发卡行标识代码
String bankIdentificationNumber = bankCard.getBankIdentificationNumber();
//使用bankCard.getCardName()获取返回的卡片名称
String bankCardName = bankCard.getCardName();
//使用bankCard.getCardType()获取返回的卡片类型
String bankCardType = bankCard.getCardType();