升级说明

升级时间

  • Dev环境升级时间不限
  • Test环境:每周最多两次,建议安排得周一14:00和周四14:00
  • PRD环境:每周最多一次,安排在周三15:00,计划升级前,需要在系统后台和商户后台发布通知

升级顺序

  • 修改配置文件 -> 更新数据库 -> 升级应用

Update History

2017-06-20(Prod)

  • 将PGW BGW HazeServiceWeb HazeThreadWeb四个项目依顺序停止(5台实例)
  • 将数据库备份
  • stop mysql 将数据迁移到/ROOT文件夹下
  • stop mysql这台实例
  • 更改实例类型到medium 重新启动mysql这台实例
  • 如果mysql没有自启动,启动mysql 并检查数据 并更新新加的sql
  • 通过deploy部署各项目

  • 新增sql

ALTER TABLE `mer_withdrawal_config`
ADD COLUMN `withdrawal_fee`  decimal(20,2) UNSIGNED NOT NULL DEFAULT 0 COMMENT '提现手续费' AFTER `default_account_id`,
ADD COLUMN `fee_payer`  tinyint(1) NOT NULL DEFAULT 0 COMMENT '手续费支付方' AFTER `withdrawal_fee`;

ALTER TABLE `haze`.`txn_withdrawal` 
ADD COLUMN `withdrawal_fee_currency` CHAR(3) NOT NULL DEFAULT 'USD' COMMENT '提款费用币种' AFTER `withdrawal_fee`,
ADD COLUMN `fee_payer` TINYINT(1) UNSIGNED NOT NULL DEFAULT '0' COMMENT '手续费承担方' AFTER `withdrawal_fee_currency`;

2017-06-13(Test)

  • sql
ALTER TABLE `mer_withdrawal_config`
ADD COLUMN `withdrawal_fee`  decimal(20,2) UNSIGNED NOT NULL DEFAULT 0 COMMENT '提现手续费' AFTER `default_account_id`,
ADD COLUMN `fee_payer`  tinyint(1) NOT NULL DEFAULT 0 COMMENT '手续费支付方' AFTER `withdrawal_fee`;

ALTER TABLE `haze`.`txn_withdrawal` 
ADD COLUMN `withdrawal_fee_currency` CHAR(3) NOT NULL DEFAULT 'USD' COMMENT '提款费用币种' AFTER `withdrawal_fee`,
ADD COLUMN `fee_payer` TINYINT(1) UNSIGNED NOT NULL DEFAULT '0' COMMENT '手续费承担方' AFTER `withdrawal_fee_currency`;

2017-05-11(Prod)

  • 修改商户退款撤销列表

  • 添加日切状态关联属性

  • 新增产品分类和产品名称

  • 去掉 ChannelProviderClassifier

  • add scan qrcode

  • 修改 add edit 页面 channelProvider

  • add showqrcode insert card_org into mer txn add thread to query pos txn

  • add alipay cancel interface

  • 修改产品开通

  • remove offline qr in terminal change to show qrcode in apptms

  • 修改费率设置

  • fix wechat refund

  • apptms restore unionpay

  • fix wechat refund bug

  • 添加alipay交易上传csv文件格式

  • 添加商户配置结算币种

  • channel 添加查询条件

  • 修改 TMS Console 手机登入 不能查询问题

  • add some basic validate in get rate

  • update notification to rocketmq

  • add sign in reponse fix time

  • 添加查看txnNotify功能

  • fix refund and notification bug

  • 修改TMS 显示RMB

  • 修改二维码页面 添加显示人民币币种

  • 修改商户后台退款按钮判断条件

  • sql

ALTER TABLE `haze`.`basic_business` 
CHANGE COLUMN `biz_category` `biz_category` TINYINT(4) NOT NULL DEFAULT '0' COMMENT '业务分类 \n0 -  Online在线支付类产品,包括SecurePay,ExpressPay,以及将来的Merchant-hosted\n1 -  Offline线下支付类产品,包括扫码支付,刷卡支付\n2 - 付款类业务(如下发,提现等)' ;

INSERT INTO `basic_business` VALUES 
('03792f8a9f304a2b9c3f31815337c181',3,'Show QRCode','Merchant show qrcode, Custumer scan merchant\'s QRCode',1,'4,5','USD,CAD,JPY,EUR,GBP,HKD','01,31,41','0',NULL,1,'2017-04-24 07:38:00',NULL),
('dfdd24d79a99443690d020b5191f96bb',4,'POS','Merchant scan customer\'s QRCode OR POS',1,'3,4,5','USD,CAD,JPY,EUR,GBP,HKD','01,31,41','0',NULL,1,'2017-04-24 07:40:09',NULL);

ALTER TABLE `haze`.`bgw_refund` 
ADD COLUMN `card_org` TINYINT(4) NOT NULL DEFAULT 3 COMMENT 'pay method' AFTER `provider_id`;

ALTER TABLE `haze`.`bgw_refund` 
add column `txn_type` tinyint(4) NOT NULL DEFAULT 6 COMMENT 'transaction type' AFTER `card_org`;

ALTER TABLE `haze`.`txn_refund` 
ADD COLUMN `card_org` TINYINT(4) NOT NULL DEFAULT 3 COMMENT 'pay method' AFTER `channel_provider_id`;

ALTER TABLE `haze`.`mer_txn` 
ADD COLUMN `card_org` TINYINT(4) NOT NULL DEFAULT 3 COMMENT 'pay method' AFTER `biz_code`;

ALTER TABLE `haze`.`txn_sale_payment`
ADD COLUMN  `buyer_identity_code` varchar(36) DEFAULT NULL COMMENT '买家二维码授权码';




update bgw_refund refund left join bgw_sale_payment sale ON refund.bgw_sale_payment_id= sale.bgw_sale_payment_id
 set refund.card_org=sale.card_org;

UPDATE txn_refund refund
        LEFT JOIN
    txn_sale_payment sale ON refund.orig_txn_id = sale.txn_id
SET 
    refund.card_org = sale.card_org;

UPDATE mer_txn txn
        INNER JOIN
    txn_sale_payment sale ON txn.txn_id = sale.txn_id
SET 
    txn.card_org = sale.card_org;

UPDATE mer_txn txn
        LEFT JOIN
    txn_sale_payment sale ON txn.original_txn_id = sale.txn_id
SET 
    txn.card_org = sale.card_org
WHERE
    txn.original_txn_id is not null ;



ALTER TABLE `haze`.`bgw_refund` DROP COLUMN `provider_classifier`;

ALTER TABLE `haze`.`channel_provider` DROP COLUMN `provider_classifier`;
ALTER TABLE `haze`.`channel` DROP COLUMN `provider_classifier`;
ALTER TABLE `haze`.`bgw_sale_payment` DROP COLUMN `provider_classifier`;


UPDATE mer_txn_sale txn set txn.terminal_id = 0 where terminal_id = 5;
UPDATE mer_txn_sale txn set txn.terminal_id = 4 where terminal_id = 9;



alter table txn_notification drop column `json_msg`;

alter table txn_notification add column `form_data` text DEFAULT NULL;

alter table txn_notification add column `response_text` varchar(600) DEFAULT NULL;


INSERT INTO `haze`.`menu` (`menu_id`, `menu_key`, `menu_name`, `parent_id`, `webapp_id`, `css_class`, `linkurl`, `haschild`, `sortorder`, `status`, `create_date`, `update_date`) VALUES ('0606', 'AUDIT-TXN-NOTIFICATION', 'Transaction notify', '06', '1', NULL, 'audit/txnnotify/list', '0', '6', '1', '2017-05-10 16:29:30', '2017-05-10 16:29:32');
INSERT INTO `haze`.`p_operation` (`operation_id`, `operation_key`, `operation_name`, `menu_id`, `sortorder`, `status`, `create_date`, `update_date`) VALUES ('060601', 'AUDIT-TXNNOTIFILOG-DETAIL', 'View', '0606', '1', '1', '2017-05-10 16:32:45', NULL);

2017-02-24(Prod)

  • sql
INSERT INTO `haze`.`menu` (`menu_id`, `menu_key`, `menu_name`, `parent_id`, `webapp_id`, `linkurl`, `haschild`, `sortorder`, `status`, `create_date`, `update_date`) VALUES ('8203', 'AGENT-REAL-TIME-TXN', 'Real-time transaction', '82', '3', 'realtime/list', '0', '3', '1', '2017-04-12 12:02:02', '2017-04-12 12:02:02');

alter table `mer_txn_sale` add column `send_bank_order_id` varchar(128) DEFAULT NULL COMMENT '发送给银行的订单号';
 alter table `mer_txn_sale` add column `receive_bank_trace_no` varchar(64) DEFAULT NULL COMMENT '接受到的银行系统追踪号';
 alter table `txn_sale_payment` add column `send_bank_order_id` varchar(128) DEFAULT NULL COMMENT '发送给银行的订单号';
 alter table `txn_sale_payment` add column `receive_bank_trace_no` varchar(64) DEFAULT NULL COMMENT '接受到的银行系统追踪号';


update txn_sale_payment A JOIN bgw_sale_payment B set A.`receive_bank_trace_no`= B.`receive_bank_trace_no`, A.`send_bank_order_id`=B.`send_bank_order_id`  where A.`txn_id` = B.`src_txn_id` and A.`bgw_sale_payment_id` = B.`bgw_sale_payment_id` AND B.`send_bank_order_id` IS NOT NULL ;

update mer_txn_sale A JOIN txn_sale_payment B set A.`receive_bank_trace_no`= B.`receive_bank_trace_no`, A.`send_bank_order_id`= B.`send_bank_order_id` where A.`txn_id` = B.`txn_id` AND B.`send_bank_order_id` IS NOT NULL ;

CREATE TABLE `agent_biz_rate` (
  `biz_rate_id` varchar(36) NOT NULL,
  `agent_id` varchar(36) NOT NULL,
  `biz_code` tinyint(4) NOT NULL,
  `card_org` tinyint(4) DEFAULT NULL COMMENT '卡种,不指定则默认为全部',
  `terminal_id` tinyint(4) NOT NULL COMMENT '终端编号,参见全局支付终端定义',
  `rate_algorithm` tinyint(4) NOT NULL COMMENT '计算算法,参见全局定义,如果是阶梯费率,则需要附件阶梯费率表计算',
  `percentage` decimal(10,4) NOT NULL DEFAULT '0.0000' COMMENT '百分比, 这类存数的是百分号之前的数字,如 1.3% 这里存储的是1.3,计算时需要除100后再使用',
  `fixed_amount` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '固定金额',
  `min_amount` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '最小值,0表示无限制',
  `max_amount` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '最大值  0 表示无限制',
  `ext1` varchar(64) DEFAULT NULL COMMENT '扩展,目前没有用到',
  `ext2` varchar(64) DEFAULT NULL,
  `isdelete` tinyint(4) NOT NULL DEFAULT '1' COMMENT '删除标识   0 - 未删除; 1 - 已删除 因业务需要,费率的修改,不通过update方式实现,而是以 delete + add 方式实现。',
  `owner_id` varchar(36) DEFAULT NULL,
  `create_date` datetime NOT NULL,
  `update_date` datetime DEFAULT NULL,
  PRIMARY KEY (`biz_rate_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='agent业务收费配置';

UPDATE `haze`.`p_operation` SET `operation_id`='05030201', `operation_key`='SYSTEMADMIN-PARTNER-AGENT-NEW', `operation_name`='Add', `menu_id`='050302', `sortorder`='0', `status`='1', `create_date`='2015-10-27 10:24:47', `update_date`=NULL WHERE (`operation_id`='05030201');

DROP TABLE agent_fee_config;

2017-02-24(Test)

  • sql

UPDATE `haze`.`menu` SET `menu_id`='0204', `menu_key`='EXCHANGE-RATE', `menu_name`='Settlement exchange rate', `parent_id`='02', `webapp_id`='1', `css_class`=NULL, `linkurl`='exchangeRate/list', `haschild`='0', `sortorder`='3', `status`='1', `create_date`='2016-09-22 15:50:25', `update_date`='2016-09-22 15:50:27' WHERE (`menu_id`='0204') AND (`menu_key`='EXCHANGE-RATE') AND (`menu_name`='Settlement exchange rate') AND (`parent_id`='02') AND (`webapp_id`='1') AND (ISNULL(`css_class`)) AND (`linkurl`='exchangeRate/list') AND (`haschild`='0') AND (`sortorder`='3') AND (`status`='1') AND (`create_date`='2016-09-22 15:50:25') AND (`update_date`='2016-09-22 15:50:27') LIMIT 1;
INSERT INTO `haze`.`menu` (`menu_id`, `menu_key`, `menu_name`, `parent_id`, `webapp_id`, `css_class`, `linkurl`, `haschild`, `sortorder`, `status`, `create_date`, `update_date`) VALUES ('0205', 'TXN-EXCHANGERATE', 'Transaction exchange rate', '02', '1', NULL, 'txnExchangeRate/list', '0', '4', '1', '2017-02-21 18:24:45', '2017-02-21 18:24:46');
INSERT INTO `haze`.`p_operation` (`operation_id`, `operation_key`, `operation_name`, `menu_id`, `sortorder`, `status`, `create_date`, `update_date`) VALUES ('020501', 'TXN-EXCHANGE-RATE-DETAIL', 'View', '0205', '1', '1', '2017-02-21 18:26:01', NULL);
INSERT INTO `haze`.`p_operation` (`operation_id`, `operation_key`, `operation_name`, `menu_id`, `sortorder`, `status`, `create_date`, `update_date`) VALUES ('020502', 'TXN-EXCHANGE-RATE-NEW', 'Add', '0205', '2', '1', '2017-02-21 18:26:57', NULL);
INSERT INTO `haze`.`p_operation` (`operation_id`, `operation_key`, `operation_name`, `menu_id`, `sortorder`, `status`, `create_date`, `update_date`) VALUES ('020503', 'TXN-EXCHANGE-RATE-EDIT', 'Edit', '0205', '3', '1', '2017-02-21 18:27:51', NULL);
INSERT INTO `haze`.`p_operation` (`operation_id`, `operation_key`, `operation_name`, `menu_id`, `sortorder`, `status`, `create_date`, `update_date`) VALUES ('020504', 'TXN-EXCHANGE-RATE-DELETE', 'Delete', '0205', '4', '1', '2017-02-21 18:28:28', NULL);


alter table mer_txn_sale modify column `exchange_rate` decimal(10,6) NOT NULL COMMENT 'mer_order_currency  与 txn_currency之间的换算汇率,精度为6位小数,如果两个币种一致,这里为1';

CREATE TABLE `txn_exchange_rate` (
  `txn_exchange_rate_id` varchar(32) NOT NULL COMMENT 'ID',
  `card_org` tinyint(4) NOT NULL COMMENT '卡组织,标示该汇率是哪家机构的,wechatpay, unionpay,alipay',
  `base_currency` char(3) NOT NULL COMMENT '本位币,目前只有CNY',
  `txn_currency` char(3) NOT NULL COMMENT '交易币种',
  `exchange_rate` decimal(12,6) DEFAULT NULL COMMENT '汇率',
  `exchange_date` date DEFAULT NULL COMMENT '换汇日期',
  `status` tinyint(4) NOT NULL COMMENT '0-申请中 1-生效中 2-删除',
  `apply_id` varchar(36) DEFAULT NULL COMMENT '申请人ID',
  `approve_id` varchar(36) DEFAULT NULL COMMENT '审核人ID',
  `create_date` datetime NOT NULL COMMENT '创建时间',
  `update_date` datetime DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`txn_exchange_rate_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='交易汇率表'
* config
#查询汇率URL
haze.getExchangeRateURL=https://api.mch.weixin.qq.com/pay/queryexchagerate

  • 微信退款改为异步

  • api增加人民币 增加汇率转换

2016-12-26(Test)

  • 将bgw回调改成https,并用重定向代替表单提交,适用于1.2

  • add agent

  • add 子商户

sendPort=587

txnSuccessNotifyMailTitle=You have received  a new payment through NihaoPay
ALTER TABLE  daily_txn_detail add column `origin_txn_amount` decimal(20,2) NOT NULL DEFAULT '0.00' COMMENT '原始交易金额';
ALTER TABLE  daily_txn_detail add column `agent_type` tinyint(4) NOT NULL DEFAULT 0 COMMENT 'agent 类型';
ALTER TABLE  daily_txn_detail add column `agent_mer_fee_config_id` varchar(36) DEFAULT NULL COMMENT 'agent与merchant手续费配置编号';
ALTER TABLE  daily_txn_detail add column `agent_mer_fee_ratio` decimal(10,6) NOT NULL DEFAULT '0.000000' COMMENT 'agent与merchant手续费比例,只能是百分比,且没有最高最低。';
ALTER TABLE  daily_txn_detail add column `agent_mer_fee_service` decimal(20,2) NOT NULL DEFAULT '0.00' COMMENT 'agent与merchant交易手续费按照结算币种收取,结算金额 * 手续费比例 ';
ALTER TABLE  daily_txn_detail add column `agent_fee_config_id` varchar(36) DEFAULT NULL COMMENT 'agent手续费配置编号';
ALTER TABLE  daily_txn_detail add column `agent_fee_ratio` decimal(10,6) NOT NULL DEFAULT '0.000000' COMMENT 'agent手续费比例,只能是百分比,且没有最高最低。';
ALTER TABLE  daily_txn_detail add column `agent_fee_service` decimal(20,2) NOT NULL DEFAULT '0.00' COMMENT 'agent交易手续费按照结算币种收取,结算金额 * 手续费比例 ';
ALTER TABLE  daily_txn_detail add column `agent_fee_rebate` decimal(20,2) NOT NULL DEFAULT '0.00' COMMENT 'agent回扣按照结算币种收取,商户结算金额 * (商户手续费比例-agent手续费比例) ';
ALTER TABLE  daily_txn_detail add column `platform_amount` decimal(20,2) NOT NULL DEFAULT '0.00' COMMENT 'agent交易金额';
ALTER TABLE  daily_txn_detail add column `agent_settle_amount` decimal(20,2) NOT NULL DEFAULT '0.00' COMMENT 'agent应结算金额';
ALTER TABLE  daily_txn_detail add column `agent_net_settle_amount` decimal(20,2) NOT NULL DEFAULT '0.00' COMMENT 'agent净结算金额';
UPDATE  daily_txn_detail SET origin_txn_amount = txn_amount;

ALTER TABLE mer_txn_sale modify column txn_date datetime NOT NULL COMMENT '系统订单时间';
UPDATE  mer_txn_sale A JOIN mer_txn B ON A.txn_id = B.txn_id SET A.txn_date = B.txn_date;
ALTER TABLE mer_txn_sale add column  `goods_amount` decimal(20,2) NOT NULL DEFAULT '0.00' COMMENT '商品金额(DCC后)';
ALTER TABLE mer_txn_sale add column  `platform_amount` decimal(20,2) NOT NULL DEFAULT '0.00' COMMENT '平台金额(DCC后)';

ALTER TABLE txn_refund add column  `goods_amount` decimal(20,2) NOT NULL DEFAULT '0.00' COMMENT '商品金额(DCC后)';
ALTER TABLE txn_refund add column  `platform_amount` decimal(20,2) NOT NULL DEFAULT '0.00' COMMENT '平台金额(DCC后)';
ALTER TABLE txn_refund add column `mer_reserved` varchar(1024) DEFAULT NULL COMMENT '备注信息';


CREATE TABLE `agent_daily_txn_detail` (
  `txn_id` varchar(20) NOT NULL COMMENT '系统交易流水号 订单号规则: yyyyMMddHHmmss+6位序列号(从000001 - 999999循环)',
  `txn_start_date` datetime NOT NULL COMMENT '交易发生时间',
  `order_id` varchar(64) NOT NULL COMMENT '商户交易订单号',
  `original_txn_id` varchar(20) DEFAULT NULL COMMENT '原交易的流水号(当撤销,退款等交易时,该字段必须有值)',
  `txn_type` tinyint(4) NOT NULL COMMENT '交易类型',
  `txn_currency` char(3) NOT NULL COMMENT '交易币种',
  `txn_amount` decimal(20,2) NOT NULL DEFAULT '0.00' COMMENT '交易金额',
  `txn_status` tinyint(4) NOT NULL COMMENT '订单状态',
  `txn_finish_date` datetime DEFAULT NULL COMMENT '交易结束时间,如消费交易的支付成功时间,退款交易的审核时间等',
  `stl_currency` char(3) DEFAULT NULL COMMENT '应结算币种',
  `stl_exchange_rate` decimal(10,6) DEFAULT NULL COMMENT '应用的交易币种与结算币种之间的汇率汇算',
  `stl_exchange_date` date DEFAULT NULL COMMENT '换汇日期',
  `stl_amount` decimal(20,2) NOT NULL DEFAULT '0.00' COMMENT '应结算金额 = 交易金额 * 结算汇率',
  `mer_code` varchar(20) NOT NULL COMMENT '商户号',
  `sub_mer_code` varchar(20) DEFAULT NULL COMMENT '子商户',
  `branch_id` varchar(36) DEFAULT NULL COMMENT '分公司编号',
  `sale_id` varchar(36) DEFAULT NULL,
  `psp_id` varchar(36) DEFAULT NULL,
  `agent_id` varchar(36) DEFAULT NULL COMMENT '交易所属的代理商id',
  `biz_code` tinyint(4) NOT NULL COMMENT '业务类型',
  `card_org` tinyint(4) DEFAULT NULL COMMENT '交易使用的卡种',
  `terminal_id` tinyint(4) DEFAULT NULL COMMENT '交易终端',
  `channel_id` varchar(36) DEFAULT NULL COMMENT '交易使用的通道编号',
  `acq_id` varchar(36) DEFAULT NULL COMMENT '收单机构',
  `channel_provider_id` varchar(36) NOT NULL COMMENT '交易使用的支付提供编号',
  `fee_config_id` varchar(36) DEFAULT NULL COMMENT '手续费配置编号',
  `fee_ratio` decimal(10,6) NOT NULL DEFAULT '0.000000' COMMENT '手续费比例,只能是百分比,且没有最高最低。',
  `fee_service` decimal(20,2) NOT NULL DEFAULT '0.00' COMMENT '交易手续费按照结算币种收取,结算金额 * 手续费比例 ',
  `fee_additional` decimal(20,2) NOT NULL DEFAULT '0.00' COMMENT '交易附加费 依据结算币种收取,按照每笔收取,可能是风险服务费等。退款返还原交易手续费时附加费不返还。',
  `net_settle_amount` decimal(20,2) DEFAULT '0.00' COMMENT '净结算金额',
  `agent_mer_fee_service` decimal(20,2) NOT NULL DEFAULT '0.00' COMMENT 'agent与merchant交易手续费按照结算币种收取,结算金额 * 手续费比例 ',
  `agent_mer_fee_ratio` decimal(10,6) NOT NULL DEFAULT '0.000000' COMMENT 'agent与merchant手续费比例,只能是百分比,且没有最高最低。',
  `agent_mer_fee_config_id` varchar(36) DEFAULT NULL COMMENT 'agent与merchant手续费配置编号',
  `agent_type` tinyint(4) NOT NULL DEFAULT '0' COMMENT 'agent 类型',
  `mer_reserved` varchar(1024) DEFAULT NULL COMMENT '备注信息',
  `origin_txn_amount` decimal(20,2) NOT NULL DEFAULT '0.00' COMMENT '原始交易金额',
  `agent_fee_config_id` varchar(36) DEFAULT NULL COMMENT 'agent手续费配置编号',
  `agent_fee_ratio` decimal(10,6) NOT NULL DEFAULT '0.000000' COMMENT 'agent手续费比例,只能是百分比,且没有最高最低。',
  `agent_fee_service` decimal(20,2) NOT NULL DEFAULT '0.00' COMMENT 'agent交易手续费按照结算币种收取,结算金额 * 手续费比例 ',
  `platform_amount` decimal(20,2) NOT NULL DEFAULT '0.00' COMMENT 'agent交易金额',
  `agent_net_settle_amount` decimal(20,2) NOT NULL DEFAULT '0.00' COMMENT 'agent净结算金额',
  `agent_fee_rebate` decimal(20,2) NOT NULL DEFAULT '0.00' COMMENT 'agent回扣按照结算币种收取,商户结算金额 * (商户手续费比例-agent手续费比例) ',
  `agent_settle_amount` decimal(20,2) NOT NULL DEFAULT '0.00' COMMENT 'agent应结算金额',
  `create_date` timestamp(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '交易流水创建时间',
  `update_date` timestamp NULL DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`txn_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='agent 日终交易明细表 主要包含以下几部分: 协议信息, 业务信息, 交易信息, 手续费'


CREATE TABLE `mer_mail_settings` (
  `setting_id` varchar(36) NOT NULL COMMENT 'ID',
  `mer_mail_addr_id` varchar(36) NOT NULL COMMENT '关联mer_mail_addressID',
  `accept_email_type` int(3) NOT NULL COMMENT '接收邮件类型',
  `status` int(1) unsigned zerofill NOT NULL DEFAULT '0' COMMENT '状态',
  `create_date` datetime NOT NULL COMMENT '创建时间',
  `update_date` datetime DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`setting_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `mer_mail_address` (
  `id` varchar(36) NOT NULL COMMENT 'ID',
  `mer_code` varchar(20) NOT NULL COMMENT '商户号',
  `mail_addresses` varchar(256) NOT NULL COMMENT '需要发送的邮箱',
  `create_date` datetime NOT NULL,
  `update_date` datetime DEFAULT NULL COMMENT '更新时间'
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `haze`.`menu` (`menu_id`, `menu_key`, `menu_name`, `parent_id`, `webapp_id`, `css_class`, `linkurl`, `haschild`, `sortorder`, `status`, `create_date`, `update_date`) VALUES ('5505', 'TMS-SETTING-MAIL', 'Mail setting', '55', '2', NULL, 'mailSetting/list', '0', '5', '1', '2016-12-23 18:54:23', '2016-12-23 18:54:26');

ALTER TABLE agent_fee_config drop column `status`;  
ALTER TABLE agent_fee_config add column `usability_type` tinyint(4) NOT NULL DEFAULT '1' COMMENT '状态 0 default,1 用户自定义';
ALTER TABLE agent_fee_config add column `status` tinyint(4) NOT NULL DEFAULT '1' COMMENT '状态 0 不可用,1 可用';

ALTER TABLE  agent add column `agent_type` tinyint(4) NOT NULL DEFAULT 0 COMMENT 'agent 类型';

CREATE TABLE `agent_merchant_rate` (
  `agent_mer_rate_id` varchar(36) NOT NULL,
  `mer_code` varchar(20) NOT NULL COMMENT '商户编号',
  `rate_algorithm` tinyint(4) NOT NULL COMMENT '计算算法,参见全局定义,如果是阶梯费率,则需要附件阶梯费率表计算',
  `percentage` decimal(10,4) NOT NULL DEFAULT '0.0000' COMMENT '百分比, 这类存数的是百分号之前的数字,如 1.3% 这里存储的是1.3,计算时需要除100后再使用',
  `fixed_amount` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '固定金额',
  `min_amount` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '最小值,0表示无限制',
  `max_amount` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '最大值  0 表示无限制',
  `ext1` varchar(64) DEFAULT NULL COMMENT '扩展,目前没有用到',
  `ext2` varchar(64) DEFAULT NULL,
  `isdelete` tinyint(4) NOT NULL DEFAULT '1' COMMENT '删除标识   0 - 未删除; 1 - 已删除 因业务需要,费率的修改,不通过update方式实现,而是以 delete + add 方式实现。',
  `owner_id` varchar(36) DEFAULT NULL,
  `create_date` datetime NOT NULL,
  `update_date` datetime DEFAULT NULL,
  PRIMARY KEY (`agent_mer_rate_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='代理商与商户业务收费配置';

2016-11-30(Test)

  • only express pay can be capture

  • change resp code location and the exceptin print level

  • TMS 增加 交易图表

  • Console 增加 交易图表

2016-11-17(Test)

  • add refund search

  • you can look up the transaction even it is not succuess

2016-11-16(Prod)

参考测试

2016-11-15(Test)

  • set socket time out of union single query to 30s

  • 修改 TMS Agent 部分页面显示

  • 修改 已取消交易 返回的状态

  • 修改 批量查询 已取消交易 返回状态

  • 修改 查询交易 返回状态

  • update alipay and update seller param

  • change default date

  • 修改 AppTms 退款时 输入交易密码

  • AppTms refund页面 加上 loading

  • loading exception

  • use httclient to replace http url connection

  • change url to to website config instead of in properties file

  • fix exchangeRate bug

  • 修改 AppTms refund 页面 Confirm 不关闭问题

  • delete unionpay 1.0

  • add union app

2016-11-01(Prod)

需要升级配置文件:

HazeBGWService/test_resources/wechat/1312556701_cert.p12
HazeBGWService/test_resources/wechat/WeChatHandler.properties
HazeConsole/test_resources/web/app.properties

HazeServiceWeb/test_resources/impl/mail.properties
HazeServiceWeb/test_resources/impl/exchange_rate.properties

HazeAppTMS/test_resources/web/app.properties
HazeAppTMS/test_resources/easypay/easypayConfig.properties
HazeAppTMS/test_resources/log4j.properties

HazeAgent/test_resources/log4j.properties
HazeAgent/test_resources/web/app.properties


tms-html5 src/main/dev_resources/impl/redis.properties
tms-html5 src/main/dev_resources/web/app.properties

2016-10-31(Test)

  • 更改商户后台,系统后台列表显示时间为浏览器时间

2016-10-26(Test)

  • 添加agent
  • 商户后台增加取款
  • 配置文件
  • sql
    INSERT INTO `menu` (`menu_id`, `menu_key`, `menu_name`, `parent_id`, `webapp_id`, `css_class`, `linkurl`, `haschild`, `sortorder`, `status`, `create_date`, `update_date`)
    VALUES
        ('5402', 'TMS-WITHDRAWAL', 'Withdraw to bank', '54', 2, '', 'withdraw/list', 0, 2, 1, '2015-06-09 03:13:51', '2015-06-09 03:13:51');
    
    delete from menu where menu_id = '5402' and status = 0;
    
    
    CREATE TABLE `agent_users` (
      `agent_user_id` varchar(36) NOT NULL,
      `user_email` varchar(128) NOT NULL COMMENT '用户email,作为登陆账号,唯一',
      `user_role` tinyint(4) NOT NULL COMMENT '用户角色  0 - 超级管理员 ; 1 - 普通操作员',
      `agent_id` varchar(36) NOT NULL,
      `last_login_ip` varchar(36) DEFAULT NULL COMMENT '最近登录的IP',
      `login_password` varchar(1024) NOT NULL,
      `prev_password1` varchar(1024) DEFAULT NULL COMMENT '上次的登陆密码',
      `prev_password2` varchar(1024) DEFAULT NULL COMMENT '上上次的登陆密码',
      `passwd_salt` varchar(128) NOT NULL,
      `pwd_last_change_date` datetime DEFAULT NULL COMMENT '最近一次修改密码的时间',
      `txn_password` varchar(1024) NOT NULL,
      `last_login_fail_date` datetime DEFAULT NULL COMMENT '最近一次登陆失败的时间',
      `login_fail_times` tinyint(4) NOT NULL DEFAULT '0' COMMENT '连续登陆失败的次数',
      `is_lock_login` tinyint(4) NOT NULL DEFAULT '0' COMMENT '是否锁定登陆 0未锁定账户 1锁定账户',
      `lock_timespan` smallint(6) NOT NULL COMMENT '锁定的时长 (分钟)',
      `last_login_date` datetime DEFAULT NULL COMMENT '最近一次登陆的时间',
      `is_first_login` tinyint(4) NOT NULL DEFAULT '0' COMMENT '是否是第一次登陆 0:非第一次登陆 1:第一次登陆',
      `user_status` tinyint(4) NOT NULL DEFAULT '1' COMMENT '是否可用 0表示禁用 1表示启用',
      `create_date` datetime NOT NULL COMMENT '创建时间',
      `update_date` datetime DEFAULT NULL COMMENT '更新时间',
      PRIMARY KEY (`agent_user_id`),
      UNIQUE KEY `idx_agent_users_user_email` (`user_email`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='代理商户用户表'
    
    INSERT INTO `menu` (`menu_id`, `menu_key`, `menu_name`, `parent_id`, `webapp_id`, `css_class`, `linkurl`, `haschild`, `sortorder`, `status`, `create_date`, `update_date`)
    VALUES
        ('81', 'DASHBOARD', 'Dashboard', '0', 3, 'menu-icon glyphicon glyphicon-home blue', '#', 0, 0, 1, '2016-09-18 14:40:53', '2016-09-18 14:42:01'),
        ('8202', 'AGENT-SETTLE-INFO', 'Settlement Info', '82', 3, '', 'settle/list', 0, 2, 1, '2016-09-18 14:47:27', '2016-09-18 14:47:42'),
        ('8301', 'AGENT-MERCHANT-SETTING', 'Merchant setting', '83', 3, '', 'settling/mer/list', 0, 1, 1, '2016-09-18 14:55:07', '2016-09-18 14:55:10'),
        ('82', 'AGENT-TXN', 'My Transaction', '0', 3, 'menu-icon fa  fa-list-alt blue', '#', 1, 1, 1, '2016-09-18 14:47:27', '2016-09-18 14:47:42'),
        ('8201', 'AGENT-TXN-INFO', 'Transaction Info', '82', 3, '', 'txn/list', 0, 1, 1, '2016-09-18 14:47:27', '2016-09-18 14:47:42'),
        ('83', 'AGENT-SETTING', 'Settings', '0', 3, 'menu-icon fa fa-cog blue', '#', 1, 2, 1, '2016-09-18 14:55:07', '2016-09-18 14:55:10');
    
    
    CREATE TABLE `agent_fee_config` (
      `agent_fee_config_id` varchar(36) NOT NULL,
      `fee_name` varchar(36) NOT NULL COMMENT '费率配置名称',
      `agent_fee_type` tinyint(4) NOT NULL DEFAULT '0',
      `status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '状态 0 default,1 用户自定义,2 是否可用',
      `percentage` varchar(128) NOT NULL COMMENT '费率百分比',
      `section` varchar(128) DEFAULT NULL COMMENT '总金额段(例:10W~50W,50W~100w)',
      `agent_id` varchar(36) DEFAULT NULL COMMENT '代理商Id',
      `comments` varchar(512) DEFAULT NULL,
      `create_date` datetime NOT NULL,
      `update_date` datetime DEFAULT NULL,
      PRIMARY KEY (`agent_fee_config_id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='费率配置';
    

2016-10-17(Test)

  • 添加alipay app handler 新增ali账户
  • 添加apptms
  • 更改agent费率
  • 当交易不是1.1 使用get方式callback
  • 开放费率转换线程 添加费率查询列表
  • 交易被线程close掉 当再次支付时 交易会被更新 但是三张表的状态只更新了mer_txn为pending,其它两张表依然为close, 修改使三张表都得到更新
  • 需要修改配置文件HazeConsole -> app.properties 中黑白名单; HazeServiceWeb -> mail.properties 中ipn失败抄送邮件地址,以及apptms和appagent中配置文件
  • 数据库记录插入
    INSERT INTO `menu` (`menu_id`, `menu_key`, `menu_name`, `parent_id`, `webapp_id`, `css_class`, `linkurl`, `haschild`, `sortorder`, `status`, `create_date`, `update_date`) VALUES ('0204', 'EXCHANGE-RATE', 'Exchange Rate', '02', '1', NULL, 'exchangeRate/list', '0', '3', '1', '2016-09-22 15:50:25', '2016-09-22 15:50:27');
    
    
    INSERT INTO `p_operation` (`operation_id`, `operation_key`, `operation_name`, `menu_id`, `sortorder`, `status`, `create_date`, `update_date`) VALUES ('020401', 'EXCHANGE-RATE-NEW', 'Add', '0204', '0', '1', '2016-09-22 15:51:42', NULL);
    INSERT INTO `p_operation` (`operation_id`, `operation_key`, `operation_name`, `menu_id`, `sortorder`, `status`, `create_date`, `update_date`) VALUES ('020402', 'EXCHANGE-RATE-EDIT', 'Edit', '0204', '1', '1', '2016-09-22 15:53:46', NULL);
    INSERT INTO `p_operation` (`operation_id`, `operation_key`, `operation_name`, `menu_id`, `sortorder`, `status`, `create_date`, `update_date`) VALUES ('020403', 'EXCHANGE-RATE-DELETE', 'Delete', '0204', '2', '1', '2016-09-22 15:54:28', NULL);
    INSERT INTO `p_operation` (`operation_id`, `operation_key`, `operation_name`, `menu_id`, `sortorder`, `status`, `create_date`, `update_date`) VALUES ('020404', 'EXCHANGE-RATE-DETAIL', 'View', '0204', '3', '1', '2016-09-22 15:56:11', NULL);
    

2016-09-20(Test)

  • 将卡号日志改为debug
  • referece扩大范围-_
  • 增加自动测试商户
  • 增加港币微信

2016-09-13(Prod)

  • 参考测试
INSERT INTO `menu` (`menu_id`, `menu_key`, `menu_name`, `parent_id`, `webapp_id`, `css_class`, `linkurl`, `haschild`, `sortorder`, `status`, `create_date`, `update_date`)
VALUES
    ('0605', 'MONITOR', 'monitor', '06', 1, NULL, 'audit/monitor/server', 0, 2, 1, '2016-08-31 10:24:49', '2016-08-31 11:12:01');

2016-09-06(Test)

  • mer_txn_sale添加finish_time 字段
  • 添加monitor
  • request log 搜索条件变更
  • 重复交易记录日志
  • 微信二维码手机端使用方法
alter table mer_txn_sale add column `txn_finish_date` datetime DEFAULT NULL COMMENT '交易结束时间,如消费交易的支付成功时间,退款交易的审核时间等';

select count(*) from mer_txn_sale where txn_finish_date is null;

update mer_txn_sale AS A, mer_txn AS B  set A.txn_finish_date=B.txn_finish_date where A.txn_id = B.txn_id;

2016-08-31(Prod)

  • 8-29,8-31日两次测试环境的更新汇总
  • 发布V1.2给用户
  • HazeDaily项目增加自动提款的功能

2016-08-31(Test)

  • 新增requestlog在系统后台的查询
  • 商户账户添加时默认提款和结算日期
  • add card org in the mer txn sale
  • fixed 空指针异常
alter table request_log modify column `reference_id` varchar(64) DEFAULT NULL; 

alter table mer_txn_sale add column `card_org` tinyint(4) DEFAULT 0 COMMENT 'payment method';

update mer_txn_sale AS A, txn_sale_payment AS B  set A.card_org=B.card_org where A.txn_id = B.txn_id;

INSERT INTO menu VALUES ('0603', 'AUDIT-REQUESTLOG', 'Merchant Reqeust Log', '06', '1', NULL, 'audit/requestlog/list', '0', '2', '1', now(),NULL);

INSERT INTO p_operation VALUES ('060301', 'AUDIT-REQUESTLOG-DETAIL', 'View', '0603', '1', '1', now(),NULL);

2016-08-29(Test)

  • 版本号升级为1.2
  • 修改微信支付页面 自动适应PC,WAP端
  • unionpay change httpurlconnection to httpclient
  • 添加微信二维码接口

2016-08-23(Prod)

  • 配置文件中关于easypay的配置
  • 8.11,8.22,8.23 三次测试环境的更新内容

2016-08-23(Test)

  • 系统后台银行订单查询增加bgwtxnid的查询条件
  • 修改系统后台交易类型的文字说明

2016-08-22(Test)

  • 修改日志
  • 修复系统后台ico文件
  • 修改审核日志部分&乱码显示

2016-08-11(Test)

  • 微信支付页面由post改为GET
  • 修改往银行前置提交的channelbean
  • 修复url校验的bug
  • 修改商户后台登陆验证错误的文字提示

2016-08-02(Prod)

  • 微信添加欧元,支付宝更改url,银联添加两个银联帐号
  • 参考测试

2016-08-02(Test)

  • pgw easypay返回mer_code

2016-07-28(Test)

  • 给expresspay, securepay, wehcat return merchant 添加数据库日志
  • 请求pgw返回错别字更改
  • 添加表request_log
  • 邮件内容的更改 配置文件mail.merchantAccount.envirnment
  • easypay添加tonken限制,配置文件添加easypay.need.token
  • 银联expresspay帐号更改,加密卡号cvv
  • 线程无法终止的问题
  • 商户后台超时的更改,防止查看别人的订单

2016-07-20(Prod)

  • 参考测试 console增加domain.properties; 数据库添加cardbin;银联查询次数的调整;alipay支付地址

2016-07-20(Test)

  • 启动错误
  • union多次查询bug

2016-07-19(Test)

  • 支付宝WAP接口增加show_url
  • 修改银联撤销返回400的bug*
  • 修改api接口中币种不区分大小写
  • 修改api接口中返回金额带逗号的bug
  • api接口中增加show_url
  • 修改添加商户通道时,按照时间排序
  • 添加商户通道时,增加查询条件通道名称和通道商户号
  • 增加在交易关闭时,发送商户通知
  • 修复微信扫码支付,订单超时后查询异常的bug
  • 修改pgw的API支持json和form两种方式提交
  • 系统后台将登陆信息等存储在redis中

2016-07-12(Test)

  • expresspay添加cardbin
  • url的验证修改
  • fix easypay
  • TMS可以修改证书

2016-07-07(Test)

  • 银联退款类型修改
  • easypay转换到java
  • 国际化配置文件的修改
  • 微信error code 修改

2016-06-30(Prod)

  • 银联添加securepay账户 微信添加JPY账户

2016-06-27(Test)

  • 更改health check
  • 去掉配置文件domain.properties与项目中的配置文件

2016-06-22(Test)

  • 添加通道复制
  • 添加jsonlog
  • 微信请求路径修改

2016-06-15(Test)

  • 将expresspay切换到5.0,union5.0添加两账号 需要修改acp_sdk.properies, UnionPayHandler.properties
  • 更改商户下载交易功能
  • 将微信的BGW回调独立出来
  • 商户注册邮件验证更改

2016-06-13(Test)

  • log4j添加syslog

2016-06-07(Prod)

  • 参考(Test)部署

2016-06-07(Test)

  • 避免空指针
  • 微信公众号支付

2016-06-06(Test)

  • 商户后台增加手动提款的功能
  • 更新junit的(Test)代码
  • 系统后台修改list页面的div样式
  • 商户后台的配置文件 app.properties

2016-06-01(Test)

  • Fixed bug “Alipay verify signature failed”
  • Delete extra code
  • 增加日志输出
  • Change RequestMapping method
  • 系统后台新增easypay订单的查询
  • 修改系统后台的多语言
  • 修改系统后台table的CSS
  • 新增用于替换PHP API的接口
ALTER TABLE `bgw_refund` CHANGE COLUMN `receive_bank_resp_code` `receive_bank_resp_code` VARCHAR(64) NULL DEFAULT NULL COMMENT '接受到的银行响应码';

ALTER TABLE `bgw_sale_payment` CHANGE COLUMN `receive_bank_resp_code` `receive_bank_resp_code` VARCHAR(64) NULL DEFAULT NULL COMMENT '接受到的银行响应码';

INSERT INTO `menu` (`menu_id`, `menu_key`, `menu_name`, `parent_id`, `webapp_id`, `css_class`, `linkurl`, `haschild`, `sortorder`, `status`, `create_date`, `update_date`) VALUES ('10', 'EASYPAY', 'EasyPay', '0', '1', 'menu-icon fa fa-credit-card blue', '#', '1', '10', '1', now(), NULL);

INSERT INTO `menu` (`menu_id`, `menu_key`, `menu_name`, `parent_id`, `webapp_id`, `css_class`, `linkurl`, `haschild`, `sortorder`, `status`, `create_date`, `update_date`) VALUES ('1001', 'EASYPAY-LIST', 'EasyPay List', '10', '1', NULL, 'easyPay/list', '0', '1', '1', now(), NULL);

INSERT INTO `p_operation` (`operation_id`, `operation_key`, `operation_name`, `menu_id`, `sortorder`, `status`, `create_date`, `update_date`) VALUES ('100101', 'EASY-PAY-DETAIL', 'View', '1001', '1', '1', now(), NULL);

2016-05-30(Test)

  • 添加日志
  • 给系统后台添加rest api doc 使用的swagger

2016-05-25(Prod)

  • make draw config to support 6 T
  • 修改 channel 删除 更新isdelete 状态
  • jump to merchant page no matter it is success or not
  • add clearing
  • 修改 TMS 菜单排序问题
  • add timezone
  • validate rate before daily
  • audit log order by create date desc
  • make it more beauty
  • refund 增加退款期限
  • auto complete response belong to base response
  • 参考(Test)环境部署(银联新增通道不添加)
  • 修改应答码UnionPayHandler.properties,AlipayHandler.properties
  • 新增微信号WechatHandler.properties,上传证书

2016-05-23(Test)

  • ipn第一次失败
  • pgw以及bgw日志中对象以json输出
  • 多语言的修改

2016-05-19(Test)

  • alipay securepay乱码问题
  • 修改添加通道,币种第一个不能选中问题
  • TMS增加日语
  • 修改 添加可用通道 显示已删除通道问题
  • unionpay增加新的机构号, acp_sdk.properties,UnionPayHandler.properties配置文件有修改
  • 数据库菜单表增加5条关于日终的记录, 权限表中4条
delete from `menu` where menu_id = '0803';
INSERT INTO `menu` VALUES ('09','TXN-CLEARING','Clearing','0',1,'menu-icon fa  fa-list-alt blue','#',1,5,1,'2016-05-09 10:40:36','2016-05-09 10:40:40');
INSERT INTO `menu` VALUES ('0903','MER-ACCOUNT-SETTLEMENT','Merchant Account Settlement','09',1,'','accSettlement/list',0,3,1,'2015-07-30 15:37:22','2015-07-30 15:37:26');
INSERT INTO `menu` VALUES ('0902','TXN-CLEARING-REFUND','Clearing Refund','09',1,NULL,'clearRefund/list',0,2,1,'2016-05-09 11:22:38','2016-05-09 11:22:41');
INSERT INTO `menu` VALUES ('0901','TXN-CLEARING-PURCHASE','Clearing Purchase','09',1,NULL,'clearPurchase/list',0,1,1,'2016-05-09 11:28:12','2016-05-09 11:28:15');
INSERT INTO `menu` VALUES ('0904','DAILY-TXN-DETAIL','Daily Txn Detail','09',1,NULL,'dailyTxnDetail/list',0,4,1,'2016-05-10 11:24:02','2016-05-10 11:24:04');

INSERT INTO `p_operation` (`operation_id`, `operation_key`, `operation_name`, `menu_id`, `sortorder`, `status`, `create_date`, `update_date`) VALUES ('090101', 'TXN-CLEARING-PURCHASE-DETAIL', 'View', '0901', 1, 1, '2016-05-09 11:32:36', NULL);
INSERT INTO `p_operation` (`operation_id`, `operation_key`, `operation_name`, `menu_id`, `sortorder`, `status`, `create_date`, `update_date`) VALUES ('090201', 'TXN-CLEARING-REFUND-DETAIL', 'View', '0902', 1, 1, '2016-05-09 11:33:41', NULL);
INSERT INTO `p_operation` (`operation_id`, `operation_key`, `operation_name`, `menu_id`, `sortorder`, `status`, `create_date`, `update_date`) VALUES ('090301', 'MER-ACCOUNT-SETTLEMENT-DETAIL', 'View', '0903', 1, 1, '2016-05-09 11:35:22', NULL);
INSERT INTO `p_operation` (`operation_id`, `operation_key`, `operation_name`, `menu_id`, `sortorder`, `status`, `create_date`, `update_date`) VALUES ('090401', 'Daily-Txn-DETAIL-DETAIL', 'View', '0904', 1, 1, '2016-05-10 11:24:42', NULL);