?? db_op.ec.std
字號:
}
#endif
/***************************************************************
功能:
裝載收單行交易路由信息
ENTRY:
RETURN:
0 SUCC
-1 FAIL
****************************************************************/
int load_adv_router_tab ()
{
EXEC SQL BEGIN DECLARE SECTION;
S_adv_route adv_router_item;
EXEC SQL END DECLARE SECTION;
int i;
EXEC SQL SELECT COUNT(*) INTO :G_adv_router_num
FROM adv_route;
if (SQLCODE) {
errcall(ERROR, "取通知交易路由條目數失敗[%ld]", SQLCODE);
return -1;
}
if (G_adv_router_num == 0) {
errcall(DEBUG, "通知路由沒有配置");
return -1;
}
if (G_adv_router_tab != NULL)
free(G_adv_router_tab);
G_adv_router_tab = (S_adv_route *)malloc(G_adv_router_num*sizeof(S_adv_route));
if (G_adv_router_tab == NULL) {
errcall(ERROR, "申請內存失敗!");
return -1;
}
memset(G_adv_router_tab, '\0', sizeof(S_adv_route) * G_adv_router_num);
EXEC SQL DECLARE sel_adv_router CURSOR FOR
SELECT * FROM adv_route;
EXEC SQL OPEN sel_adv_router;
if (SQLCODE) {
errcall(ERROR, "打開數據庫游標失敗[%ld]!", SQLCODE);
free(G_adv_router_tab);
G_adv_router_tab = NULL;
return -1;
}
for(i=0; i<G_adv_router_num; i++) {
EXEC SQL FETCH sel_adv_router INTO :adv_router_item;
if (SQLCODE) {
EXEC SQL CLOSE sel_adv_router;
G_adv_router_num = i;
return 0;
}
del_st_space("adv_route", &adv_router_item);
memcpy(&(G_adv_router_tab[i]), &adv_router_item, sizeof(S_adv_route));
}
EXEC SQL CLOSE sel_adv_router;
return 0;
}
/***************************************************************
功能:
獲取某卡的止付信息
ENTRY:
RETURN:
0 SUCC FOUND
-1 FAIL
-2 NOT FOUND
****************************************************************/
int select_hmd ( S_wb_list *hm )
{
EXEC SQL BEGIN DECLARE SECTION;
char card_no[20];
S_wb_list l_wb_list;
EXEC SQL END DECLARE SECTION;
memset(card_no, '\0', sizeof(card_no));
strcpy (card_no, hm->card_no);
EXEC SQL SELECT * INTO :l_wb_list FROM wb_list
WHERE card_no = :card_no;
if (SQLCODE == SQLNOTFOUND){
return -2;
}
if (SQLCODE < 0) {
errcall(ERROR, "查止付名單失敗[%ld]", SQLCODE);
return -1;
}
del_st_space("wb_list", &l_wb_list);
memcpy(hm, &l_wb_list, sizeof(S_wb_list));
return 0;
}
/***************************************************************
功能:
根據商戶號到商戶表中查找該商戶的基本信息
ENTRY:
S_merchant_base 包含該商戶的商戶號
RETURN:
0 SUCC
-1 FAIL
1 NOT FOUND
****************************************************************/
int select_merchant_base ( S_merchant_base *merchant_c )
{
EXEC SQL BEGIN DECLARE SECTION;
char m_id[16];
S_merchant_base l_merchant_base;
EXEC SQL END DECLARE SECTION;
memset(m_id, '\0', sizeof(m_id));
strcpy(m_id, merchant_c->merchant_id);
EXEC SQL SELECT * INTO :l_merchant_base FROM merchant_base
WHERE merchant_id = :m_id;
if (SQLCODE == SQLNOTFOUND) {
return -2;
}
if (SQLCODE < 0) {
errcall(ERROR, "取商戶基本信息失敗[%ld]", SQLCODE);
return -1;
}
del_st_space("merchant_base", &G_merchant_base);
memcpy(merchant_c, &l_merchant_base, sizeof(S_merchant_base));
return 0;
}
/***************************************************************
功能:
根據商戶號, 銀行類型, 卡類型到商戶受理卡類表中查找該商戶
的他行商戶編號以及商戶類型
ENTRY:
S_merchant_card 包含該商戶的商戶號和商戶受理卡類型
信息的受理卡類表
RETURN:
0 SUCC 受理卡類表信息==>S_merchant_card
-1 FAIL
-2 NOT FOUND
****************************************************************/
int select_merchant_card( S_merchant_card *merchant_card )
{
EXEC SQL BEGIN DECLARE SECTION;
S_merchant_card merch_card;
EXEC SQL END DECLARE SECTION;
memcpy(&merch_card, merchant_card, sizeof(S_merchant_card));
EXEC SQL SELECT * INTO :merch_card FROM merchant_card WHERE
merchant_id = :merch_card.merchant_id and
card_type = :merch_card.card_type;
if (SQLCODE < 0) {
errcall(ERROR, "取商戶受理卡類表信息失敗[%ld]", SQLCODE);
return -1;
}
if (SQLCODE == SQLNOTFOUND)
return -2;
del_st_space("merchant_card", &merch_card);
memcpy(merchant_card, &merch_card, sizeof(S_merchant_card));
return 0;
}
/***************************************************************
功能:
根據商戶號到商戶受理卡類資料表中查找該商戶的受理卡類信息
ENTRY:
S_merchant 包含該商戶的商戶號
char *status 保存該商戶所受理的卡的使能信息
RETURN:
0 SUCC
-1 FAIL
****************************************************************/
int select_merchant_card_enable( S_merchant_card *merchant_c, char *status )
{
EXEC SQL BEGIN DECLARE SECTION;
S_merchant_card merch_card;
char m_id[20];
char card_type[3];
char bank_type[5];
char sqlstr[256];
EXEC SQL END DECLARE SECTION;
memset(m_id, '\0', sizeof(m_id));
memset(card_type, '\0', sizeof(card_type));
memset(bank_type, '\0', sizeof(bank_type));
memset(sqlstr, '\0', sizeof(sqlstr));
strcpy(m_id, merchant_c->merchant_id);
strcpy( card_type, VISA_CARD);
strcpy( bank_type, VISA_CARD);
EXEC SQL SELECT * into :merch_card FROM merchant_card
WHERE merchant_id = :m_id
AND card_type = :card_type
AND bank_type = :bank_type;
if (SQLCODE < 0) {
return -1;
}
else if (SQLCODE == SQLNOTFOUND)
status[0] = '0';
else {
if (merch_card.card_stat[0] == 'Y')
status[0] = '1';
else
status[0] = '0';
}
strcpy( card_type, MC_CARD);
strcpy( bank_type, MC_CARD);
EXEC SQL SELECT * into :merch_card FROM merchant_card
WHERE merchant_id = :m_id
AND card_type = :card_type
AND bank_type = :bank_type;
if (SQLCODE < 0) {
return -1;
}
else if (SQLCODE == SQLNOTFOUND)
status[1] = '0';
else {
if (merch_card.card_stat[0] == 'Y')
status[1] = '1';
else
status[1] = '0';
}
strcpy( card_type, AE_CARD);
strcpy( bank_type, AE_CARD);
EXEC SQL SELECT * into :merch_card FROM merchant_card
WHERE merchant_id = :m_id
AND card_type = :card_type
AND bank_type = :bank_type;
if (SQLCODE < 0) {
return -1;
}
else if (SQLCODE == SQLNOTFOUND)
status[2] = '0';
else {
if (merch_card.card_stat[0] == 'Y')
status[2] = '1';
else
status[2] = '0';
}
strcpy( card_type, DINER_CARD);
strcpy( bank_type, DINER_CARD);
EXEC SQL SELECT * into :merch_card FROM merchant_card
WHERE merchant_id = :m_id
AND card_type = :card_type
AND bank_type = :bank_type;
if (SQLCODE < 0) {
return -1;
}
else if (SQLCODE == SQLNOTFOUND)
status[3] = '0';
else {
if (merch_card.card_stat[0] == 'Y')
status[3] = '1';
else
status[3] = '0';
}
strcpy( card_type, JCB_CARD);
strcpy( bank_type, JCB_CARD);
EXEC SQL SELECT * into :merch_card FROM merchant_card
WHERE merchant_id = :m_id
AND card_type = :card_type
AND bank_type = :bank_type;
if (SQLCODE < 0) {
return -1;
}
else if (SQLCODE == SQLNOTFOUND)
status[4] = '0';
else {
if (merch_card.card_stat[0] == 'Y')
status[4] = '1';
else
status[4] = '0';
}
strcpy( card_type, CREDIT_CARD);
sprintf(sqlstr, "select * from merchant_card \
where merchant_id = \'%s\' \
and card_type = \'%s\'",
m_id,
card_type);
EXEC SQL PREPARE sel_merchant_card FROM :sqlstr;
EXEC SQL DECLARE sel_merch_card CURSOR FOR sel_merchant_card;
EXEC SQL OPEN sel_merch_card;
if (SQLCODE < 0) {
errcall(ERROR, "OPEN Select_merch_card err[%ld] [%s]", SQLCODE, sqlstr);
return -1;
}
EXEC SQL FETCH sel_merch_card into :merch_card;
if (SQLCODE < 0) {
return -1;
}
else if (SQLCODE == SQLNOTFOUND)
status[5] = '0';
else {
if (merch_card.card_stat[0] == 'Y')
status[5] = '1';
else
status[5] = '0';
}
EXEC SQL CLOSE sel_merch_card;
if (SQLCODE < 0) {
return -1;
}
strcpy( card_type, DEBIT_CARD);
sprintf(sqlstr, "select * from merchant_card \
where merchant_id = \'%s\' \
and card_type = \'%s\'",
m_id,
card_type);
EXEC SQL PREPARE sel_m_card FROM :sqlstr;
EXEC SQL DECLARE sel_mer_card CURSOR FOR sel_m_card;
EXEC SQL OPEN sel_mer_card;
if (SQLCODE < 0) {
errcall(ERROR, "OPEN Select_merch_card err[%ld][%s]", SQLCODE, sqlstr);
return -1;
}
EXEC SQL FETCH sel_mer_card into :merch_card;
if (SQLCODE < 0) {
return -1;
}
else if (SQLCODE == SQLNOTFOUND)
status[6] = '0';
else {
if (merch_card.card_stat[0] == 'Y')
status[6] = '1';
else
status[6] = '0';
}
EXEC SQL CLOSE sel_mer_card;
if (SQLCODE < 0) {
return -1;
}
return 0;
}
/***************************************************************
功能:
將交易記錄插入存儲轉發表
ENTRY:
RETURN:
0 SUCC
-1 FAIL
****************************************************************/
int insert_saf ( S_saf_ls *s )
{
EXEC SQL BEGIN DECLARE SECTION;
S_saf_ls l_saf_ls;
EXEC SQL END DECLARE SECTION;
memcpy(&l_saf_ls, s, sizeof(S_saf_ls));
EXEC SQL INSERT INTO saf_ls VALUES(:l_saf_ls);
if (SQLCODE) {
errcall(ERROR,"插入SAF流水表錯(%d)",SQLCODE);
return -1;
}
return 0;
}
/***************************************************************
功能:
根據終端號和商戶號取edc終端信息
ENTRY:
RETURN:
0 SUCC
-1 FAIL
-2 NOTFOUND
****************************************************************/
int select_terminal ( S_edc_terminal *t )
{
EXEC SQL BEGIN DECLARE SECTION;
S_edc_terminal l_edc_term;
EXEC SQL END DECLARE SECTION;
memcpy(&l_edc_term, t, sizeof(S_edc_terminal));
EXEC SQL SELECT * INTO :l_edc_term FROM edc_terminal
WHERE terminal_id = :l_edc_term.terminal_id
AND merchant_id = :l_edc_term.merchant_id;
if (SQLCODE == SQLNOTFOUND)
return -2;
if (SQLCODE < 0) {
errcall(ERROR, "取EDC終端信息失敗[%ld]", SQLCODE);
return -1;
}
del_st_space("edc_terminal", &l_edc_term);
memcpy(t, &l_edc_term, sizeof(S_edc_terminal));
return 0;
}
/***************************************************************
功能:
根據終端號取edc終端信息
ENTRY:
RETURN:
0 SUCC
-1 FAIL
-2 NOTFOUND
****************************************************************/
int select_terminal_base ( S_edc_terminal *t )
{
EXEC SQL BEGIN DECLARE SECTION;
S_edc_terminal l_edc_term;
EXEC SQL END DECLARE SECTION;
memcpy(&l_edc_term, t, sizeof(S_edc_terminal));
EXEC SQL SELECT * INTO :l_edc_term FROM edc_terminal
WHERE terminal_id = :l_edc_term.terminal_id;
if (SQLCODE == SQLNOTFOUND)
return -2;
if (SQLCODE < 0) {
errcall(ERROR, "取EDC終端信息失敗[%ld]", SQLCODE);
return -1;
}
del_st_space("edc_terminal", &l_edc_term);
memcpy(t, &l_edc_term, sizeof(S_edc_terminal));
return 0;
}
/***************************************************************
功能:
更新聯行簽到狀態標志
ENTRY:
RETURN:
0 成功
-1 失敗
****************************************************************/
int set_login_stat ( bankid, hostid, log_stat )
$parameter char *bankid;
$parameter char *hostid;
char log_stat;
{
EXEC SQL BEGIN DECLARE SECTION;
char l_stat;
EXEC SQL END DECLARE SECTION;
l_stat = log_stat;
begin_tran();
EXEC SQL UPDATE bank_base set login_stat = :l_stat
WHERE bank_id = :bankid
AND host_id = :hostid;
if (SQLCODE) {
errcall(ERROR, "更新聯行[%s(%s)]簽到狀態標志失敗[%ld]!",
bankid,
hostid,
SQLCODE);
rollback_tran();
return -1;
}
commit_tran();
return 0;
}
$ifdef zgx020510_added;
$else;
/***************************************************************
功能:
更新聯行網控器聯接標志
ENTRY:
RETURN:
0 成功
-1 失敗
****************************************************************/
int set_connect_stat( nacip, conn_stat )
char *nacip;
char conn_stat;
{
EXEC SQL BEGIN DECLARE SECTION;
char l_stat;
char bankid[12];
char hostid[3];
char nac_ip[128];
EXEC SQL END DECLARE SECTION;
#ifdef wyz020923_modi
#else
int retry_cnt=0;
#endif
l_stat = conn_stat;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -