关于银联卡BIN
来源:互联网 发布:山东媳妇 知乎 编辑:程序博客网 时间:2024/05/01 01:35
银联卡BIN:发卡行识别码,最长 12 位,最短 6 位,因此在卡交易时候需要判断其BIN属于哪家银行,要从12位开始判断,如果12位没有,则判断11位,直到6位,如果6位也没有,那即视为非银联交易卡
但是由于卡BIN信息是存在数据库中的,所以在交易的时候每次都查询数据库,会使交易时间更慢,容易造成交易超时,而且操作数据库太频繁,所以我选择了一次查询出来,存放到static数组变量中,判断卡BIN的时候从数组中查找,这样做,程序只要在载入的时候就存放在内存中,每次使用直接从内存里面读取,不用再操作数据库,对于分布式数据库应用有很大的意义,尽管内存资源的占用会增加,但是是值得的
#define CUPSCTL_COUNT 500
static CUPSCTL local_cupsctl[CUPSCTL_COUNT];
static int local_cupsctl_cnt;
int init_cupsctl(HSTMT v_hstmt) /*初始化数据库中卡BIN放到内存中*/
{
char l_tmpstr[1024];
int ret_code,i;
int cupsctl_cnt;
memset(l_tmpstr,' ',sizeof(l_tmpstr));
for ( i = 0; i < CUPSCTL_COUNT ; i ++ )
{
memset(&local_cupsctl[i],' ',sizeof(CUPSCTL));
}
cupsctl_cnt = 0;
sprintf(l_tmpstr,"select * from CUPSCTL order by dc_preind");
CLCenReset(v_hstmt);
ret_code = CLCenExec(v_hstmt,(unsigned char *)l_tmpstr,SQL_NTS);
if(ret_code == SQL_SUCCESS || ret_code== SQL_SUCCESS_WITH_INFO)
{
while ((ret_code=GET_CUPSCTL(&local_cupsctl[cupsctl_cnt],v_hstmt))==0)
{
cupsctl_cnt ++;
if ( cupsctl_cnt > CUPSCTL_COUNT )
{
break; /*最多存放CUPSCTL_COUNT个*/
}
}
local_cupsctl_cnt = cupsctl_cnt;
}
else
{
MPRI_DEBUG(-1,ERROR_LEVEL,"CUPSCTL表查询失败!");
DSPMSG("CUPSCTL表查询失败!");
return -1;
}
return 0;
}
/*从数组中判断此卡BIN的信息*/
int get_cupsctl_forarray(char *v_tcard_no, CUPSCTL *v_cupsctl)
{
int ret_code;
int i,j,stop_flag;
char l_card_bin[12]; /*放置输入卡号的前12位到6位*/
i = 0; /*循环卡号,从12位到6位*/
j = 0; /*循环CUPSCTL数组内容*/
stop_flag = 0;
for ( i = 12 ; i > 5 ; i -- )
{
memset(l_card_bin,' ',sizeof(l_card_bin));
memcpy(l_card_bin,v_tcard_no,i); /*把卡号前i位复制给l_card_bin*/
for ( j=local_cupsctl_cnt; j >= 0 ; j--)/*数组中的CUPSCTL是否有此BIN*/
{
if ( 0 == memcmp(l_card_bin,local_cupsctl[j].dc_preind,i) )
{
memcpy(v_cupsctl,&local_cupsctl[j],sizeof(CUPSCTL));
stop_flag = 1;
break;
}
}
if ( 1 == stop_flag )
{
break;
}
}
if ( 1 != stop_flag )
{
DSPMSG("非受理卡!");
return -1;
}
return 0;
}
- 关于银联卡BIN
- 关于 #!/bin/sh
- 关于/usr/bin/env
- 关于#!/bin/bash和#!/bin/sh
- 关于#!/bin/bash和#!/bin/sh
- 关于bin和obj文件夹
- 关于.bin格式的文件
- 关于elf和bin文件?
- 关于Bin文件的解析
- ASP.net:关于Bin目录
- 关于$ORACLE_HOME/bin/oracle文件属性
- 关于bin和obj文件夹
- 关于Bin文件的解析
- 关于 js bin 的运用
- 关于Bin文件的解析
- 关于bin和obj文件夹
- 关于#!/bin/sh 和 #!/bin/bash 的差别
- 关于#!/bin/sh 和 #!/bin/bash 的差别
- Robert Chen 发布《Python源码剖析》连载...
- ACCESS大批量导入导出数据
- sql server中扩展存储过程大全
- [转贴]黑白的《讀书笔记 》:)
- Levanta Releases Linux Management Code (ZT)
- 关于银联卡BIN
- 貌似又一个新开张
- 试依然在考,烧依然在发~~
- 学生送我的礼物
- 我是不是怪胎?
- 高四了
- 感悟JAVA
- 计划把财务管理程序改成一个eclipse的插件
- 谈谈VC++中两种函数调用方式的区别