银行卡接口调用流程

优质
小牛编辑
136浏览
2023-12-01

当把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();