银行卡接口调用流程

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

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

BankCard bankCard =
data.getParcelableExtra(BankCardActivity.EXTRA_SCAN_RESULT);
byte[] imageBytes = 
data.getByteArrayExtra(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]);

在线版获取数据

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

2.启动扫描界面

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

3.返回码处理

//返回码为RESULT_SUCCESS时,扫描成功,按照2中的“获取返回结果”作相应处理
case BankCardActivity.RESULT_CARD_INFO

//返回码为ERROR_CAMERA时,相机授权失败,请在设置中打开相机权限
case BankCardActivity.ERROR_CAMERA

//返回码为RESULT_CANCELED时,取消扫描
case BankCardActivity.RESULT_CANCELED

//返回码为RESULT_AUTHENTICATION_FAILED时,API账户验证错误,请检查网络以及您的API_ID和API_SECRET
case BankCardActivity.RESULT_AUTHENTICATION_FAILED

//返回码为ERROR_LICENSE_PACKAGE_NAME_MISMATCH时,绑定包名错误
case BankCardActivity.ERROR_LICENSE_PACKAGE_NAME_MISMATCH

//返回码为ERROR_LICENSE_EXPIRE时,授权文件过期
case BankCardActivity.ERROR_LICENSE_EXPIRE

//返回码为ERROR_LICENSE_FILE_NOT_FOUND时,授权文件不存在
case IDCardActivity.ERROR_LICENSE_FILE_NOT_FOUND

//返回码为ERROR_LICENSE_INVALID时,授权文件不合法
case IDCardActivity.ERROR_LICENSE_INVALID

//返回码为ERROR_MODEL_NOT_FOUND时,模型文件不存在
case BankCardActivity.ERROR_MODEL_NOT_FOUND

//返回码为ERROR_CHECK_MODEL_FAIL时,模型文件错误,请检查模型是否匹配或超过有效期
case BankCardActivity.ERROR_CHECK_MODEL_FAIL

完成上述操作之后,您就可以使用我们的产品了。

results matching ""

    No results matching ""