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 + -
显示快捷键?