merchant.ec
来自「在SCO UNIX制定界面程序 可根据文件配制菜单,而不必修改源程序,非常方便」· EC 代码 · 共 470 行
EC
470 行
/****************************************************
* 获取商户相关资料
*
* 修改负责: 吴斌
*
* 最后修改: 周国祥 2001/08/24
****************************************************/
#include <stdio.h>
#include "macro_def.h"
#include "mytools.h"
EXEC SQL INCLUDE sqlca;
EXEC SQL WHENEVER SQLERROR CALL error_handler;
EXEC SQL WHENEVER SQLWARNING CALL warning_handler;
EXEC SQL WHENEVER NOT FOUND CALL notfound_handler;
double calc_double();
/*
* 根据商户号获取商户中文名称 ADD Wubin
*/
int get_merchant_name(char *id, char *name)
{
$char merchant_id[16], merchant_name[41];
merchant_name[0] = 0;
strcpy(merchant_id, id);
EXEC SQL SELECT merchant_cname
INTO :merchant_name
FROM merchant_base
WHERE merchant_id = :merchant_id;
if (sqlca.sqlcode == 0) {
DelSpace(merchant_name);
strcpy(name, merchant_name);
}
return(sqlca.sqlcode);
}
/*
* 根据商户号获取商户类型
*/
int get_merchant_mcc(char *r_mcc, char *f_mcc, char *id)
{
$char rmbc_mcc[5], visa_mcc[5], merchant_id[16],bank_type[4];
r_mcc[0] = 0;
f_mcc[0] = 0;
strcpy(merchant_id, id);
/* 从基本资料表中获取RMB商户类型 */
strcpy(bank_type, BOC_BANK);
EXEC SQL SELECT mcc
INTO :rmbc_mcc
FROM merchant_base
WHERE merchant_id = :merchant_id;
if (sqlca.sqlcode == 0) {
DelSpace(rmbc_mcc);
strcpy(r_mcc, rmbc_mcc);
}
/* 从商户转换表中获取VISA商户类型 */
strcpy(bank_type, VISA_CARD);
EXEC SQL SELECT oth_mcc
INTO :visa_mcc
FROM merchant_switch
WHERE merchant_id = :merchant_id AND bank_type = :bank_type;
if (sqlca.sqlcode == 0) {
DelSpace(visa_mcc);
strcpy(f_mcc, visa_mcc);
}
return(sqlca.sqlcode);
}
/* 获取商户联系资料 */
int get_merchant_connect(char *tele, char *mng, char *id)
{
$char telephone[16], manager[9], merchant_id[16];
tele[0] = 0;
mng[0] = 0;
strcpy(merchant_id, id);
EXEC SQL SELECT telephone, manager
INTO :telephone, :manager
FROM merchant_base
WHERE merchant_id = :merchant_id;
if (sqlca.sqlcode == 0) {
DelSpace(telephone);
DelSpace(manager);
strcpy(tele, telephone);
strcpy(mng, manager);
}
return(sqlca.sqlcode);
}
/*================== WuBin 2001-4-10 17:06 ======Start==============
int get_merchant_pro(char *id, char *pro)
{
$char merchant_id[16], card_enable[8];
memcpy(merchant_id, id, 16);
EXEC SQL SELECT T12_card_bit
INTO :card_enable
FROM merchant
WHERE T12_merchant_id = :merchant_id;
if (sqlca.sqlcode == 0) {
rm_tail_space(card_enable);
memcpy(pro, card_enable, 8);
}
return(sqlca.sqlcode);
}
===========================2001-4-10 17:06=======End==============*/
/*
* 获取商户卡类使能
*/
int get_merchant_pro(char *id, char *pro)
{
$char merchant_id[16], card_stat[2], card_type[5];
char card_enable[8];
int i;
char card_bit[7][5]= {"51","52","53","54","55","01","02"};
strcpy(merchant_id, id);
/*
card_enable bytes card_name card_type
1: VISA 51
2: MASTER 52
3: AE 53
4: Diners 54
5: JCB 55
6: BOC_RMB_Card 01
7: Non_BOC_RMB_Card 02
*/
for(i=0;i<7;i++)
card_enable[i] = '0';
card_enable[7] = '\0';
for(i=0;i<7;i++) {
strcpy(card_type, card_bit[i]);
EXEC SQL SELECT card_stat
INTO :card_stat
FROM merchant_card
WHERE merchant_id = :merchant_id
AND card_type = :card_type ;
if (sqlca.sqlcode < 0) {
strcpy(pro, card_enable);
return(sqlca.sqlcode);
}
if (sqlca.sqlcode == 0) {
if (card_stat[0] == 'Y')
card_enable[i] = '1';
}
}
strcpy(pro, card_enable);
return(0);
}
/*========================
* 通过EDC终端号获取商户编号 Wubin
========================*/
int get_merchant_edc(char *id, char *merch_id)
{
$char edc_id[9], merchant_id[16];
int iReturn = 0;
edc_id[0] = '\0';
merchant_id[0] = '\0';
DelSpace(id);
strcpy(edc_id, id);
if (!id[0]) return(0);
EXEC SQL SELECT merchant_id
INTO :merchant_id
FROM edc_terminal
WHERE terminal_id = :edc_id;
iReturn = sqlca.sqlcode;
if ( iReturn == 0) {
DelSpace(merchant_id);
strcpy(merch_id, merchant_id);
}
if (!merch_id[0]) {
return(56); /* 输入类型代码错误 */
}
return iReturn;
}
/*========================
* 通过商户编号和卡类型获取卡状态 Wubin
========================*/
int get_merch_cardstat(char *id, char *card_type, char *card_stat)
{
$char m_card_type[3],merchant_id[16],m_card_stat[2];
int iReturn = 0;
$char bank_type[5];
if ((!id[0]) || (!card_type[0])) return(0);
strcpy(merchant_id, id);
strcpy(m_card_type,card_type);
strcpy(m_card_stat,card_stat);
if ((!strcmp(card_type, "01")) || (!strcmp(card_type, "02"))) {
strcpy(bank_type, BOC_BANK);
} else {
strcpy(bank_type, card_type); /* 外卡 */
}
EXEC SQL SELECT card_stat
INTO :m_card_stat
FROM merchant_card
WHERE merchant_id = :merchant_id
AND card_type = :m_card_type
AND bank_type = :bank_type;
iReturn = sqlca.sqlcode;
if ( iReturn == 0) {
DelSpace(m_card_stat);
strcpy(card_stat, m_card_stat);
}
return iReturn;
}
/*=====Wubin========
修改商户的card_type后判断EDC的card_type类型,提示修改EDC
====================*/
int merchant_cardtype_edc(char *merchant_id, char *card_type, char *card_stat, char *yesno)
{
$char tmp_merchant_id[16];
$char tmp_terminal_id[9];
$char tmp_card_type[3],tmp_card_stat[2],edc_card_stat[2];
$int cnt;
int i;
i = cnt = 0;
strcpy(tmp_merchant_id,merchant_id);
strcpy(tmp_card_type,card_type);
strcpy(tmp_card_stat,card_stat);
if ((merchant_id[0] != 0) && (card_type[0] != 0) && (card_stat[0] != 0)) {
$select count(*) into :cnt from edc_terminal
where merchant_id=:tmp_merchant_id;
if ( SQLCODE < 0 ) {
errcall ( ERROR , "Error select count(*) from edc_terminal %d" ,SQLCODE );
return -1;
}
if ( cnt > 0 ) {
$declare cardstat_cur cursor for
select terminal_id from edc_terminal
where merchant_id=:tmp_merchant_id;
if ( SQLCODE ) {
errcall ( ERROR , "Error declare edc_terminal cursor %d ",SQLCODE );
return -1;
}
$open cardstat_cur;
if ( SQLCODE ) {
errcall ( ERROR , "Error open edc_terminal %d " , SQLCODE );
return -1;
}
for ( i = 0 ; i < cnt ; i++ ) {
$fetch cardstat_cur into :tmp_terminal_id;
if ( SQLCODE == 100 )
break;
if ( SQLCODE ) {
errcall ( ERROR , "Error fetch [%d]" , SQLCODE );
$close cardstat_cur;
return -1;
}
DelSpace(tmp_terminal_id);
EXEC SQL SELECT card_stat
INTO :edc_card_stat
FROM edc_card
WHERE terminal_id = :tmp_terminal_id
AND card_type = :tmp_card_type;
if ( sqlca.sqlcode == 0) {
if (yesno[0]== 'N')
return (1);
else {
tmp_card_stat[0] = toupper(tmp_card_stat[0]);
EXEC SQL UPDATE edc_card
SET card_stat =:tmp_card_stat
WHERE terminal_id = :tmp_terminal_id
AND card_type = :tmp_card_type;
if ( sqlca.sqlcode != 0) {
errcall ( ERROR , "Error Update edc_card Error [%d] " , SQLCODE );
return -1;
}
}
}
}
$close cardstat_cur;
}
}
return(0);
}
/*
* 获取商户授权限额
*/
int get_merchant_limit(double *limit, char *type, char *id)
{
char name[20], sql_str[128];
$ifdef zgx010824_modi;
if (!strcmp(type, "00")) strcpy(name, "rmbc_limit");
if (!strcmp(type, "51")) strcpy(name, "visa_limit");
if (!strcmp(type, "52")) strcpy(name, "master_limit");
if (!strcmp(type, "53")) strcpy(name, "ae_limit");
if (!strcmp(type, "54")) strcpy(name, "dinner_limit");
if (!strcmp(type, "55")) strcpy(name, "jcb_limit");
sprintf(sql_str, "select %s from merchant_card where merchant_id = %s",
name, id);
*limit = calc_double(sql_str);
$else;
*limit = 99999999.99;
$endif;
return(0);
}
/*
* 根据商户号获取商户回扣率 ADD Wubin
*/
double get_merchant_discount(char *id)
{
$char merchant_id[16];
$double card_discount_tmp;
card_discount_tmp = 0;
DelSpace(id);
strcpy(merchant_id, id);
EXEC SQL SELECT card_discount INTO :card_discount_tmp
FROM merchant_card
WHERE merchant_id=:merchant_id and card_type='01' and bank_type='04';
if (sqlca.sqlcode == 0) {
return (card_discount_tmp / 100);
}
return(0);
}
/*
* 根据商户号获取清算商户号和中文名称 ADD Wubin
*/
int get_merchant_settle(char *id1, char *id2, char *name)
{
$char merchant_id[16], smerchant_id[16], smerchant_name[41];
smerchant_name[0] = 0;
strcpy(merchant_id, id1);
EXEC SQL SELECT settle_merch_id
INTO :smerchant_id
FROM merchant_base
WHERE merchant_id = :merchant_id;
if (sqlca.sqlcode == 0) {
DelSpace(smerchant_id);
strcpy(id2, smerchant_id);
}
EXEC SQL SELECT merchant_cname
INTO :smerchant_name
FROM merchant_base
WHERE merchant_id = :smerchant_id;
if (sqlca.sqlcode == 0) {
DelSpace(smerchant_name);
strcpy(name, smerchant_name);
}
return(sqlca.sqlcode);
}
/*
* 根据商户号获取人民币商户类型
*/
int get_merchant_rmbmcc(char *id, char *rmb_mcc)
{
$char rmbc_mcc[5], merchant_id[16];
rmb_mcc[0] = 0;
strcpy(merchant_id, id);
/* 从基本资料表中获取RMB商户类型 */
EXEC SQL SELECT mcc
INTO :rmbc_mcc
FROM merchant_base
WHERE merchant_id = :merchant_id;
if (sqlca.sqlcode == 0) {
DelSpace(rmbc_mcc);
strcpy(rmb_mcc, rmbc_mcc);
errcall(ERROR,"rmb_mcc=[%s] rmbc_mcc=[%s]",rmb_mcc, rmbc_mcc);
}
return(sqlca.sqlcode);
}
/*========================
* 通过商户编号和卡类型获取银行类型 Wubin
========================*/
int get_merch_cardbank(char *id, char *card_type, char *bank_type)
{
$char m_card_type[3],merchant_id[16],m_bank_type[3];
int iReturn = 0;
if ((!id[0]) || (!card_type[0])) return(0);
strcpy(merchant_id, id);
strcpy(m_card_type,card_type);
m_bank_type[0] = 0;
if ((!strcmp(card_type, "01")) || (!strcmp(card_type, "02"))) {
strcpy(m_bank_type, BOC_BANK);
} else {
EXEC SQL SELECT bank_type
INTO :m_bank_type
FROM merchant_card
WHERE merchant_id = :merchant_id
AND card_type = :m_card_type ;
iReturn = sqlca.sqlcode;
if ( iReturn == 0) {
DelSpace(m_bank_type);
strcpy(bank_type, m_bank_type);
}
return iReturn;
}
return(0);
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?