Compare commits
10 Commits
0c09e9cd2c
...
2.0
| Author | SHA1 | Date | |
|---|---|---|---|
| 237c9f4196 | |||
| f73c42c994 | |||
| 283a0a1696 | |||
| 9a8be43091 | |||
| 9ca5424a28 | |||
| 4647d557fe | |||
| f3381c73df | |||
| 4af387d834 | |||
| 835531ef68 | |||
| afc631cc91 |
@@ -1,5 +1,7 @@
|
|||||||
@echo off
|
@echo off
|
||||||
|
|
||||||
|
:: 医保程序地址
|
||||||
|
set WINEXE_CHSPATH=D:/Project/yinyitong-win/yinyitong.exe
|
||||||
:: 医保程序地址
|
:: 医保程序地址
|
||||||
set CHSPATH=D:/Project/CHS
|
set CHSPATH=D:/Project/CHS
|
||||||
:: jar名称
|
:: jar名称
|
||||||
@@ -7,16 +9,19 @@ set NAME=yinyitong-dll-hang
|
|||||||
:: 端口号
|
:: 端口号
|
||||||
set PROT=5946
|
set PROT=5946
|
||||||
|
|
||||||
echo 关闭%PROT%端口进程
|
echo 1、关闭端口进程:%PROT%
|
||||||
for /f "tokens=1-5" %%i in ('netstat -ano^|findstr ":%PROT%"') do taskkill /pid %%m -t -f
|
for /f "tokens=1-5" %%i in ('netstat -ano^|findstr ":%PROT%"') do taskkill /pid %%m -t -f
|
||||||
|
|
||||||
echo 启动%NAME%
|
echo 2、启动本地程序
|
||||||
|
cd /d %CHSPATH%/
|
||||||
|
start javaw.exe -Dfile.encoding=utf-8 -Djava.library.path="%CHSPATH%;%CHSPATH%/CHSInterfaceYn" -Dlog.path=%~dp0 -jar %~dp0\%NAME%.jar --server.port=%PROT%
|
||||||
|
|
||||||
cd %CHSPATH%
|
:: 延迟5秒
|
||||||
|
timeout /NOBREAK /T 5 >nul
|
||||||
|
|
||||||
start javaw.exe -Dfile.encoding=UTF-8 -Djava.library.path=%CHSPATH% -Dlog.path=%~dp0 -jar %~dp0\%NAME%.jar --server.port=%PROT%
|
echo 3、启动银医通
|
||||||
|
start %WINEXE_CHSPATH%
|
||||||
echo 启动完成
|
|
||||||
|
|
||||||
exit
|
exit
|
||||||
::pause
|
::pause
|
||||||
|
|
||||||
|
|||||||
2
pom.xml
2
pom.xml
@@ -210,7 +210,7 @@
|
|||||||
<!--jar包名字是否包含唯一版本标识-->
|
<!--jar包名字是否包含唯一版本标识-->
|
||||||
<useUniqueVersions>false</useUniqueVersions>
|
<useUniqueVersions>false</useUniqueVersions>
|
||||||
<!--指定含main方法的主类入口-->
|
<!--指定含main方法的主类入口-->
|
||||||
<mainClass>com.dpkj.StandDllApplication</mainClass>
|
<mainClass>com.dpkj.HangDllApplication</mainClass>
|
||||||
</manifest>
|
</manifest>
|
||||||
<manifestEntries>
|
<manifestEntries>
|
||||||
<!--MANIFEST.MF 中 Class-Path 加入资源文件目录!用命令java -jar时就不用-Dloader.path指定外部资源路径了 -->
|
<!--MANIFEST.MF 中 Class-Path 加入资源文件目录!用命令java -jar时就不用-Dloader.path指定外部资源路径了 -->
|
||||||
|
|||||||
@@ -75,7 +75,7 @@ public class ReceiptPrintController {
|
|||||||
int dinyHeight = 0;
|
int dinyHeight = 0;
|
||||||
if (templateName.equals("department")) {
|
if (templateName.equals("department")) {
|
||||||
// 由于是使用的门诊小票-T2,那么默认的高度为1100,强行设置,通过动态修改渲染的图片的高度
|
// 由于是使用的门诊小票-T2,那么默认的高度为1100,强行设置,通过动态修改渲染的图片的高度
|
||||||
height = 900;//根据实际情况调整
|
height = 1000;//根据实际情况调整
|
||||||
|
|
||||||
// 单行最大长度为10
|
// 单行最大长度为10
|
||||||
int singleLineMaxLength = 10;
|
int singleLineMaxLength = 10;
|
||||||
|
|||||||
@@ -50,9 +50,9 @@ public class ReceiptPrintRequest implements Serializable {
|
|||||||
private Integer width = 690;
|
private Integer width = 690;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 生成的模板的高度,默认为:1050
|
* 生成的模板的高度,默认为:1100
|
||||||
*/
|
*/
|
||||||
private Integer height = 1050;
|
private Integer height = 1100;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,21 +0,0 @@
|
|||||||
package com.dpkj.modules.chs.controller;
|
|
||||||
|
|
||||||
import com.dpkj.modules.chs.service.IAlipayService;
|
|
||||||
import lombok.AllArgsConstructor;
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @Auther: 萧道子
|
|
||||||
* @Date: 2025/3/22 16:25
|
|
||||||
* @Description: 医保模块-阿里设备
|
|
||||||
*/
|
|
||||||
@Slf4j
|
|
||||||
@AllArgsConstructor
|
|
||||||
@RestController
|
|
||||||
@RequestMapping("/chs/alipay")
|
|
||||||
public class AlipayController {
|
|
||||||
private final IAlipayService alipayService;
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,59 +0,0 @@
|
|||||||
package com.dpkj.modules.chs.dll;
|
|
||||||
|
|
||||||
import com.sun.jna.Library;
|
|
||||||
import com.sun.jna.Native;
|
|
||||||
import com.sun.jna.Pointer;
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @Auther: 萧道子
|
|
||||||
* @Date: 2025/3/22 17:48
|
|
||||||
* @Description:
|
|
||||||
*/
|
|
||||||
@Slf4j
|
|
||||||
public class AlipayDll {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取 AlipayDll 实例,同时注册 AlipayDll 控件。
|
|
||||||
*
|
|
||||||
* @return AlipayDll 实例
|
|
||||||
* @throws DllRegistrationException 如果注册控件失败,抛出此异常
|
|
||||||
*/
|
|
||||||
public static Dll instance() throws DllRegistrationException {
|
|
||||||
try {
|
|
||||||
return Native.load("AlipayChs", Dll.class);
|
|
||||||
} catch (UnsatisfiedLinkError e) {
|
|
||||||
log.info("[AlipayDll][getPrintSDK][医保动态库] SDK注册失败:{}", e.getMessage());
|
|
||||||
throw new DllRegistrationException("Failed to load AlipayDll library: ", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 定义自定义异常类,用于表示注册控件时发生的错误
|
|
||||||
*/
|
|
||||||
public static class DllRegistrationException extends Exception {
|
|
||||||
public DllRegistrationException(String message) {
|
|
||||||
super(message);
|
|
||||||
}
|
|
||||||
|
|
||||||
public DllRegistrationException(String message, Throwable cause) {
|
|
||||||
super(message, cause);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 定义接口映射本地库中的函数。
|
|
||||||
*/
|
|
||||||
public interface Dll extends Library {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 设置打印端口和波特率。
|
|
||||||
*
|
|
||||||
* @return 返回操作结果代码
|
|
||||||
*/
|
|
||||||
String NationEcTrans(String strUrl, String InData, Pointer OutData);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
package com.dpkj.modules.chs.dll;
|
|
||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @Auther: 萧道子
|
|
||||||
* @Date: 2025/3/22 17:48
|
|
||||||
* @Description:
|
|
||||||
*/
|
|
||||||
@Slf4j
|
|
||||||
public class HispayDll {
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,44 +0,0 @@
|
|||||||
package com.dpkj.modules.chs.entity;
|
|
||||||
|
|
||||||
import com.alibaba.fastjson.JSONObject;
|
|
||||||
import lombok.Data;
|
|
||||||
import lombok.experimental.Accessors;
|
|
||||||
|
|
||||||
import java.io.Serializable;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @Auther: 萧道子
|
|
||||||
* @Date: 2025/3/23 11:56
|
|
||||||
* @Description: 医保请求
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
@Accessors(chain = true)
|
|
||||||
public class AlipayEcRequestData implements Serializable {
|
|
||||||
private static final long serialVersionUID = 1L;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 机构 ID 必填
|
|
||||||
*/
|
|
||||||
private String orgId;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 交易类型 必填
|
|
||||||
* ec.query: 电子凭证二维码解码接口
|
|
||||||
* cn.nhsa.qrcode.get: 终端医保电子凭证码解码接口
|
|
||||||
* cn.nhsa.auth.check:刷脸授权获取医保身份接口
|
|
||||||
* cn.nhsa.ec.pwd: 医保电子凭证密码核验接口
|
|
||||||
*/
|
|
||||||
private String transType;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 接口请求参数 JSON格式字符串 必填
|
|
||||||
*/
|
|
||||||
private JSONObject data;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 扩展参数 JSON格式字符串
|
|
||||||
*/
|
|
||||||
private JSONObject extra;
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.dpkj.modules.chs.constant;
|
package com.dpkj.modules.chs.hischs.constant;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@@ -1,13 +1,13 @@
|
|||||||
package com.dpkj.modules.chs.controller;
|
package com.dpkj.modules.chs.hischs.controller;
|
||||||
|
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.dpkj.common.vo.Result;
|
import com.dpkj.common.vo.Result;
|
||||||
import com.dpkj.common.vo.ResultData;
|
import com.dpkj.common.vo.ResultData;
|
||||||
import com.dpkj.modules.chs.constant.ChsPayStateConst;
|
import com.dpkj.modules.chs.hischs.constant.ChsPayStateConst;
|
||||||
import com.dpkj.modules.chs.service.IHispayService;
|
import com.dpkj.modules.chs.hischs.service.IHispayService;
|
||||||
import com.dpkj.modules.chs.vo.OutpatientBeginModel;
|
import com.dpkj.modules.chs.hischs.vo.OutpatientBeginModel;
|
||||||
import com.dpkj.modules.chs.vo.OutpatientFinalModel;
|
import com.dpkj.modules.chs.hischs.vo.OutpatientFinalModel;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
@@ -1,9 +1,9 @@
|
|||||||
package com.dpkj.modules.chs.service;
|
package com.dpkj.modules.chs.hischs.service;
|
||||||
|
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.dpkj.common.vo.ResultData;
|
import com.dpkj.common.vo.ResultData;
|
||||||
import com.dpkj.modules.chs.vo.OutpatientBeginModel;
|
import com.dpkj.modules.chs.hischs.vo.OutpatientBeginModel;
|
||||||
import com.dpkj.modules.chs.vo.OutpatientFinalModel;
|
import com.dpkj.modules.chs.hischs.vo.OutpatientFinalModel;
|
||||||
|
|
||||||
public interface IHispayService {
|
public interface IHispayService {
|
||||||
|
|
||||||
@@ -1,17 +1,16 @@
|
|||||||
package com.dpkj.modules.chs.service.impl;
|
package com.dpkj.modules.chs.hischs.service.impl;
|
||||||
|
|
||||||
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.date.DateUtil;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import cn.hutool.core.util.XmlUtil;
|
import cn.hutool.core.util.XmlUtil;
|
||||||
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSON;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.dpkj.common.config.ChsConfig;
|
|
||||||
import com.dpkj.common.config.HisConfig;
|
import com.dpkj.common.config.HisConfig;
|
||||||
import com.dpkj.common.vo.ResultData;
|
import com.dpkj.common.vo.ResultData;
|
||||||
import com.dpkj.modules.chs.constant.ChsPayStateConst;
|
import com.dpkj.modules.chs.hischs.constant.ChsPayStateConst;
|
||||||
import com.dpkj.modules.chs.service.IHispayService;
|
import com.dpkj.modules.chs.hischs.service.IHispayService;
|
||||||
import com.dpkj.modules.chs.vo.OutpatientBeginModel;
|
import com.dpkj.modules.chs.hischs.vo.OutpatientBeginModel;
|
||||||
import com.dpkj.modules.chs.vo.OutpatientFinalModel;
|
import com.dpkj.modules.chs.hischs.vo.OutpatientFinalModel;
|
||||||
import com.jacob.activeX.ActiveXComponent;
|
import com.jacob.activeX.ActiveXComponent;
|
||||||
import com.jacob.com.Dispatch;
|
import com.jacob.com.Dispatch;
|
||||||
import com.jacob.com.Variant;
|
import com.jacob.com.Variant;
|
||||||
@@ -34,11 +33,6 @@ import java.util.Map;
|
|||||||
// @AllArgsConstructor
|
// @AllArgsConstructor
|
||||||
public class HispayServiceImpl implements IHispayService {
|
public class HispayServiceImpl implements IHispayService {
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private HisConfig hisConfig;
|
|
||||||
@Autowired
|
|
||||||
private ChsConfig chsConfig;
|
|
||||||
|
|
||||||
// COM对象
|
// COM对象
|
||||||
private static ActiveXComponent dispatch;
|
private static ActiveXComponent dispatch;
|
||||||
|
|
||||||
@@ -61,7 +55,7 @@ public class HispayServiceImpl implements IHispayService {
|
|||||||
log.info("[HispayServiceImpl][instanceActive][HIS医保COM库] 加载成功");
|
log.info("[HispayServiceImpl][instanceActive][HIS医保COM库] 加载成功");
|
||||||
return activeXComponent;
|
return activeXComponent;
|
||||||
} catch (UnsatisfiedLinkError e) {
|
} catch (UnsatisfiedLinkError e) {
|
||||||
log.info("[HispayServiceImpl][instanceActive][HIS医保COM库] 加载失败:{}", e.getMessage());
|
log.error("[HispayServiceImpl][instanceActive][HIS医保COM库] 加载失败:{}", e.getMessage());
|
||||||
throw new RuntimeException("HIS医保COM库加载失败:" + e.getMessage(), e);
|
throw new RuntimeException("HIS医保COM库加载失败:" + e.getMessage(), e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -137,14 +131,14 @@ public class HispayServiceImpl implements IHispayService {
|
|||||||
.fluentPut("hzxm", "") // 患者姓名
|
.fluentPut("hzxm", "") // 患者姓名
|
||||||
.fluentPut("phone", ""); // 患者电话号码
|
.fluentPut("phone", ""); // 患者电话号码
|
||||||
String params = processParameters(val, null);
|
String params = processParameters(val, null);
|
||||||
log.info("[HispayServiceImpl][readCode][医保读卡-电子凭证] 接口入参:{}", params);
|
log.debug("[HispayServiceImpl][readCode][医保读卡-电子凭证] 接口入参:{}", params);
|
||||||
|
|
||||||
/** 2、调用COM函数 */
|
/** 2、调用COM函数 */
|
||||||
Variant vres = new Variant("", true);
|
Variant vres = new Variant("", true);
|
||||||
Variant call = Dispatch.call(dispatch, "fRun", "BMZXX010", params, vres);
|
Variant call = Dispatch.call(dispatch, "fRun", "BMZXX010", params, vres);
|
||||||
|
|
||||||
String resStr = vres.getStringRef();
|
String resStr = vres.getStringRef();
|
||||||
log.info("[HispayServiceImpl][readCode][医保读卡-电子凭证] call返回值:{} 结果:{}", call, resStr);
|
log.debug("[HispayServiceImpl][readCode][医保读卡-电子凭证] call返回值:{} 结果:{}", call, resStr);
|
||||||
|
|
||||||
|
|
||||||
/** 3、处理读卡结果 */
|
/** 3、处理读卡结果 */
|
||||||
@@ -167,14 +161,14 @@ public class HispayServiceImpl implements IHispayService {
|
|||||||
.fluentPut("hzxm", "") // 患者姓名
|
.fluentPut("hzxm", "") // 患者姓名
|
||||||
.fluentPut("phone", ""); // 患者电话号码
|
.fluentPut("phone", ""); // 患者电话号码
|
||||||
String params = processParameters(val, password);
|
String params = processParameters(val, password);
|
||||||
log.info("[HispayServiceImpl][readCard][医保读卡-医保卡] 接口入参:{}", params);
|
log.debug("[HispayServiceImpl][readCard][医保读卡-医保卡] 接口入参:{}", params);
|
||||||
|
|
||||||
/** 2、调用COM函数 */
|
/** 2、调用COM函数 */
|
||||||
Variant vres = new Variant("", true);
|
Variant vres = new Variant("", true);
|
||||||
Variant call = Dispatch.call(dispatch, "fRun", "BMZXX010", params, vres);
|
Variant call = Dispatch.call(dispatch, "fRun", "BMZXX010", params, vres);
|
||||||
|
|
||||||
String resStr = vres.getStringRef();
|
String resStr = vres.getStringRef();
|
||||||
log.info("[HispayServiceImpl][readCard][医保读卡-医保卡] call返回值:{} 结果:{}", call, resStr);
|
log.debug("[HispayServiceImpl][readCard][医保读卡-医保卡] call返回值:{} 结果:{}", call, resStr);
|
||||||
|
|
||||||
/** 3、处理读卡结果 */
|
/** 3、处理读卡结果 */
|
||||||
JSONObject result = verifyResult(resStr);
|
JSONObject result = verifyResult(resStr);
|
||||||
@@ -196,7 +190,7 @@ public class HispayServiceImpl implements IHispayService {
|
|||||||
.fluentPut("zfjsbz", "0") // 是否自费结算,0根据医保代码缴费,1自费结算(默认自费结算)
|
.fluentPut("zfjsbz", "0") // 是否自费结算,0根据医保代码缴费,1自费结算(默认自费结算)
|
||||||
.fluentPut("ybrc", ""); // 医保入参,xml节点
|
.fluentPut("ybrc", ""); // 医保入参,xml节点
|
||||||
String params = processParameters(val, data.getPassword());
|
String params = processParameters(val, data.getPassword());
|
||||||
log.info("[HispayServiceImpl][outpatientBudget][门诊缴费-预算] 接口入参:{}", params);
|
log.debug("[HispayServiceImpl][outpatientBudget][门诊缴费-预算] 接口入参:{}", params);
|
||||||
|
|
||||||
String requestTime = DateUtil.now();
|
String requestTime = DateUtil.now();
|
||||||
|
|
||||||
@@ -206,7 +200,7 @@ public class HispayServiceImpl implements IHispayService {
|
|||||||
|
|
||||||
String responseTime = DateUtil.now();
|
String responseTime = DateUtil.now();
|
||||||
String resStr = resVariant.getStringRef();
|
String resStr = resVariant.getStringRef();
|
||||||
log.info("[HispayServiceImpl][outpatientBudget][门诊缴费-预算] call返回值:{} 结果:{}", call, resStr);
|
log.debug("[HispayServiceImpl][outpatientBudget][门诊缴费-预算] call返回值:{} 结果:{}", call, resStr);
|
||||||
|
|
||||||
|
|
||||||
/** 3、处理结果 */
|
/** 3、处理结果 */
|
||||||
@@ -249,7 +243,7 @@ public class HispayServiceImpl implements IHispayService {
|
|||||||
.fluentPut("ptlsh", "")
|
.fluentPut("ptlsh", "")
|
||||||
.fluentPut("jysm", "");
|
.fluentPut("jysm", "");
|
||||||
String params = processParameters(val, null);
|
String params = processParameters(val, null);
|
||||||
log.info("[HispayServiceImpl][chsCodeAsOutpatientFinal][门诊缴费-结算] 接口入参:{}", params);
|
log.debug("[HispayServiceImpl][chsCodeAsOutpatientFinal][门诊缴费-结算] 接口入参:{}", params);
|
||||||
|
|
||||||
/** 2、调用COM函数 */
|
/** 2、调用COM函数 */
|
||||||
Variant resVariant = new Variant("", true);
|
Variant resVariant = new Variant("", true);
|
||||||
@@ -257,7 +251,7 @@ public class HispayServiceImpl implements IHispayService {
|
|||||||
|
|
||||||
String responseTime = DateUtil.now();
|
String responseTime = DateUtil.now();
|
||||||
String resStr = resVariant.getStringRef();
|
String resStr = resVariant.getStringRef();
|
||||||
log.info("[HispayServiceImpl][chsCodeAsOutpatientFinal][门诊缴费-结算] call返回值:{} 结果:{}", call, resStr);
|
log.debug("[HispayServiceImpl][chsCodeAsOutpatientFinal][门诊缴费-结算] call返回值:{} 结果:{}", call, resStr);
|
||||||
|
|
||||||
/** 3、处理结果 */
|
/** 3、处理结果 */
|
||||||
JSONObject result = verifyResult(resStr);
|
JSONObject result = verifyResult(resStr);
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.dpkj.modules.chs.vo;
|
package com.dpkj.modules.chs.hischs.vo;
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.experimental.Accessors;
|
import lombok.experimental.Accessors;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.dpkj.modules.chs.vo;
|
package com.dpkj.modules.chs.hischs.vo;
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.experimental.Accessors;
|
import lombok.experimental.Accessors;
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
package com.dpkj.modules.chs.service;
|
|
||||||
|
|
||||||
public interface IAlipayService {
|
|
||||||
}
|
|
||||||
@@ -1,37 +0,0 @@
|
|||||||
package com.dpkj.modules.chs.service.impl;
|
|
||||||
|
|
||||||
import com.dpkj.modules.chs.dll.AlipayDll;
|
|
||||||
import com.dpkj.modules.chs.service.IAlipayService;
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
|
||||||
import org.springframework.stereotype.Service;
|
|
||||||
|
|
||||||
import javax.annotation.PostConstruct;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @Auther: 萧道子
|
|
||||||
* @Date: 2025/3/22 16:29
|
|
||||||
* @Description:
|
|
||||||
*/
|
|
||||||
@Slf4j
|
|
||||||
@Service
|
|
||||||
public class AlipayServiceImpl implements IAlipayService {
|
|
||||||
|
|
||||||
private AlipayDll.Dll dll;
|
|
||||||
|
|
||||||
|
|
||||||
@PostConstruct
|
|
||||||
public void postConstruct() {
|
|
||||||
log.info("[AlipayServiceImpl][postConstruct][医保DLL] 初始化动态链接库");
|
|
||||||
try {
|
|
||||||
dll = AlipayDll.instance();
|
|
||||||
} catch (AlipayDll.DllRegistrationException e) {
|
|
||||||
// TODO 萧道子 2025/6/19 :
|
|
||||||
}
|
|
||||||
initPrinter();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private void initPrinter() {
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -18,7 +18,6 @@ import com.dpkj.modules.scanface.wx.vo.WxFacePayAuthinfoResp;
|
|||||||
import com.dpkj.modules.scanface.wx.vo.WxFacePayReq;
|
import com.dpkj.modules.scanface.wx.vo.WxFacePayReq;
|
||||||
import com.dpkj.modules.scanface.wx.vo.WxFacePayResp;
|
import com.dpkj.modules.scanface.wx.vo.WxFacePayResp;
|
||||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
||||||
import com.github.binarywang.wxpay.bean.request.WxPayOrderReverseRequest;
|
import com.github.binarywang.wxpay.bean.request.WxPayOrderReverseRequest;
|
||||||
import com.github.binarywang.wxpay.bean.result.WxPayMicropayResult;
|
import com.github.binarywang.wxpay.bean.result.WxPayMicropayResult;
|
||||||
import com.github.binarywang.wxpay.bean.result.WxPayOrderQueryResult;
|
import com.github.binarywang.wxpay.bean.result.WxPayOrderQueryResult;
|
||||||
@@ -34,16 +33,9 @@ import org.springframework.web.bind.annotation.RestController;
|
|||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.io.UnsupportedEncodingException;
|
import java.io.UnsupportedEncodingException;
|
||||||
import java.util.HashMap;
|
import java.math.BigDecimal;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.concurrent.Callable;
|
|
||||||
import java.util.concurrent.CompletableFuture;
|
|
||||||
import java.util.concurrent.ExecutorService;
|
|
||||||
import java.util.concurrent.Executors;
|
|
||||||
import java.util.concurrent.ScheduledExecutorService;
|
|
||||||
import java.util.concurrent.ScheduledFuture;
|
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
import java.util.concurrent.TimeoutException;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @description: 微信刷脸支付
|
* @description: 微信刷脸支付
|
||||||
@@ -79,6 +71,10 @@ public class WxFacePayController {
|
|||||||
public Result<String> doFacePay(@RequestBody WxFaceOrderVo wxFaceOrderVo) throws Exception {
|
public Result<String> doFacePay(@RequestBody WxFaceOrderVo wxFaceOrderVo) throws Exception {
|
||||||
Result<String> result = new Result<>();
|
Result<String> result = new Result<>();
|
||||||
try {
|
try {
|
||||||
|
//元转分
|
||||||
|
int money = new BigDecimal(wxFaceOrderVo.getTotalAmount()).multiply(new BigDecimal(100)).intValue();
|
||||||
|
wxFaceOrderVo.setTotalAmount(String.valueOf(money));
|
||||||
|
|
||||||
//1 初始化
|
//1 初始化
|
||||||
this.initWxpayface();
|
this.initWxpayface();
|
||||||
|
|
||||||
@@ -95,6 +91,7 @@ public class WxFacePayController {
|
|||||||
WxPayMicropayResult micropayResult = new WxPayMicropayResult();
|
WxPayMicropayResult micropayResult = new WxPayMicropayResult();
|
||||||
if (StringUtil.isNotBlank(authinfoResp.getFace_code())) {
|
if (StringUtil.isNotBlank(authinfoResp.getFace_code())) {
|
||||||
//5、调用后台人脸支付API发起支付
|
//5、调用后台人脸支付API发起支付
|
||||||
|
System.out.println("---------调用后台人脸支付API发起支付");
|
||||||
wxFaceOrderVo.setOutTradeNo(getOutTradeNo());
|
wxFaceOrderVo.setOutTradeNo(getOutTradeNo());
|
||||||
micropayResult = this.toCreateWxOrder(authinfoResp, wxFaceOrderVo, wxFacePayResp0);
|
micropayResult = this.toCreateWxOrder(authinfoResp, wxFaceOrderVo, wxFacePayResp0);
|
||||||
|
|
||||||
@@ -139,7 +136,7 @@ public class WxFacePayController {
|
|||||||
@RequestMapping(value = "/initWxpayface", method = RequestMethod.POST)
|
@RequestMapping(value = "/initWxpayface", method = RequestMethod.POST)
|
||||||
public WxFacePayResp initWxpayface() throws JsonProcessingException, UnsupportedEncodingException, WxpayFaceSDKDll.DllRegistrationException {
|
public WxFacePayResp initWxpayface() throws JsonProcessingException, UnsupportedEncodingException, WxpayFaceSDKDll.DllRegistrationException {
|
||||||
// 构建请求参数的JSON字符串
|
// 构建请求参数的JSON字符串
|
||||||
WxFacePayReq wxFacePayReq = new WxFacePayReq("initWxpayface", "1", System.currentTimeMillis() / 1000, 1);
|
WxFacePayReq wxFacePayReq = new WxFacePayReq("initWxpayface", "1", System.currentTimeMillis() / 1000, 3);
|
||||||
WxFacePayResp wxFacePayResp = weChatPayFaceService.doWxPayIniMethod(wxFacePayReq);
|
WxFacePayResp wxFacePayResp = weChatPayFaceService.doWxPayIniMethod(wxFacePayReq);
|
||||||
log.info("[WxFacePayController][initWxpayface][132] [1、程序启动时初始化:]:{}", wxFacePayResp.toString());
|
log.info("[WxFacePayController][initWxpayface][132] [1、程序启动时初始化:]:{}", wxFacePayResp.toString());
|
||||||
return wxFacePayResp;
|
return wxFacePayResp;
|
||||||
@@ -184,6 +181,7 @@ public class WxFacePayController {
|
|||||||
public WxFacePayAuthinfoResp getWxpayfaceCode(@RequestBody WxFaceOrderVo wxFaceOrderVo, WxFacePayAuthinfoResp wxFacePayResp0) throws Exception {
|
public WxFacePayAuthinfoResp getWxpayfaceCode(@RequestBody WxFaceOrderVo wxFaceOrderVo, WxFacePayAuthinfoResp wxFacePayResp0) throws Exception {
|
||||||
//4、进行人脸识别getWxpayfaceCode(获取支付凭证)
|
//4、进行人脸识别getWxpayfaceCode(获取支付凭证)
|
||||||
String outTradeNo = getOutTradeNo();//获取流水号
|
String outTradeNo = getOutTradeNo();//获取流水号
|
||||||
|
|
||||||
// 构建请求参数的JSON字符串
|
// 构建请求参数的JSON字符串
|
||||||
WxFacePayReq wxFacePayReq = new WxFacePayReq("getWxpayfaceCode", "1", System.currentTimeMillis() / 1000);
|
WxFacePayReq wxFacePayReq = new WxFacePayReq("getWxpayfaceCode", "1", System.currentTimeMillis() / 1000);
|
||||||
wxFacePayReq.setAuthinfo(wxFacePayResp0.getAuthinfo())
|
wxFacePayReq.setAuthinfo(wxFacePayResp0.getAuthinfo())
|
||||||
|
|||||||
@@ -4,8 +4,6 @@ import com.dpkj.common.vo.Result;
|
|||||||
import com.dpkj.modules.scanface.wx.dll.WxpayFaceSDKDll;
|
import com.dpkj.modules.scanface.wx.dll.WxpayFaceSDKDll;
|
||||||
import com.dpkj.modules.scanface.wx.service.CallWxpayFaceService;
|
import com.dpkj.modules.scanface.wx.service.CallWxpayFaceService;
|
||||||
import com.dpkj.modules.scanface.wx.service.WeChatPayFaceService;
|
import com.dpkj.modules.scanface.wx.service.WeChatPayFaceService;
|
||||||
import com.dpkj.modules.scanface.wx.service.impl.CallWxpayFaceServiceImpl;
|
|
||||||
import com.dpkj.modules.scanface.wx.service.impl.WeChatPayFaceServiceImpl;
|
|
||||||
import com.dpkj.modules.scanface.wx.vo.WxFacePayAuthinfoResp;
|
import com.dpkj.modules.scanface.wx.vo.WxFacePayAuthinfoResp;
|
||||||
import com.dpkj.modules.scanface.wx.vo.WxFacePayReq;
|
import com.dpkj.modules.scanface.wx.vo.WxFacePayReq;
|
||||||
import com.dpkj.modules.scanface.wx.vo.WxFacePayResp;
|
import com.dpkj.modules.scanface.wx.vo.WxFacePayResp;
|
||||||
@@ -15,15 +13,11 @@ import lombok.extern.slf4j.Slf4j;
|
|||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RequestMethod;
|
import org.springframework.web.bind.annotation.RequestMethod;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
import org.thymeleaf.util.StringUtils;
|
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.io.UnsupportedEncodingException;
|
import java.io.UnsupportedEncodingException;
|
||||||
import java.nio.charset.StandardCharsets;
|
|
||||||
import java.security.Provider;
|
import java.security.Provider;
|
||||||
import java.security.Security;
|
import java.security.Security;
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.TreeSet;
|
import java.util.TreeSet;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -7,7 +7,6 @@ import com.dpkj.modules.scanface.wx.vo.WxFacePayResp;
|
|||||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||||
|
|
||||||
import java.io.UnsupportedEncodingException;
|
import java.io.UnsupportedEncodingException;
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @description: 调用微信刷脸方法
|
* @description: 调用微信刷脸方法
|
||||||
|
|||||||
@@ -45,7 +45,7 @@ public class CallWxpayFaceServiceImpl implements CallWxpayFaceService {
|
|||||||
reqPointer.setString(0, reqJson);
|
reqPointer.setString(0, reqJson);
|
||||||
//请求数据长度
|
//请求数据长度
|
||||||
int reqSize = reqPointer.getString(0).length();
|
int reqSize = reqPointer.getString(0).length();
|
||||||
System.out.println("-----------调用微信刷脸DLL请求数据----------"+reqPointer.getString(0));
|
log.info("000-----------调用微信刷脸DLL请求数据----------",reqPointer.getString(0));
|
||||||
|
|
||||||
//接收响应
|
//接收响应
|
||||||
long[] pRespBuf = new long[1];
|
long[] pRespBuf = new long[1];
|
||||||
@@ -56,21 +56,20 @@ public class CallWxpayFaceServiceImpl implements CallWxpayFaceService {
|
|||||||
// 调用本地方法
|
// 调用本地方法
|
||||||
WxpayFaceSDKDll.Dll dll = WxpayFaceSDKDll.instance();
|
WxpayFaceSDKDll.Dll dll = WxpayFaceSDKDll.instance();
|
||||||
int result = dll.wxpayCallFaceService(reqPointer.getString(0), reqSize, pRespBuf, respSize);
|
int result = dll.wxpayCallFaceService(reqPointer.getString(0), reqSize, pRespBuf, respSize);
|
||||||
//使用C:\Windows\System32目录下 int result = WxpayFaceSDK.INSTANCE.wxpayCallFaceService(reqPointer.getString(0), reqSize, pRespBuf, respSize);
|
|
||||||
|
|
||||||
if (result == 0) {
|
if (result == 0) {
|
||||||
Pointer pointer = new Pointer(pRespBuf[0]);
|
Pointer pointer = new Pointer(pRespBuf[0]);
|
||||||
byte[] byteArray = pointer.getByteArray(0, respSize[0]);
|
byte[] byteArray = pointer.getByteArray(0, respSize[0]);
|
||||||
resStr = new String(byteArray, StandardCharsets.UTF_8);
|
resStr = new String(byteArray, StandardCharsets.UTF_8);
|
||||||
|
|
||||||
System.out.println("-----------调用微信刷脸DLL请求结果: " + resStr);
|
log.info("000-----------调用微信刷脸DLL请求结果: " , resStr);
|
||||||
dll.wxpayReleaseResponse(new String[2]);
|
dll.wxpayReleaseResponse(new String[2]);
|
||||||
//释放 C:\Windows\System32目录下 WxpayFaceSDK.INSTANCE.wxpayReleaseResponse(new String[2]);
|
//释放 C:\Windows\System32目录下 WxpayFaceSDK.INSTANCE.wxpayReleaseResponse(new String[2]);
|
||||||
} else {
|
} else {
|
||||||
Pointer pointer = new Pointer(pRespBuf[0]);
|
Pointer pointer = new Pointer(pRespBuf[0]);
|
||||||
byte[] byteArray = pointer.getByteArray(0, respSize[0]);
|
byte[] byteArray = pointer.getByteArray(0, respSize[0]);
|
||||||
resStr = new String(byteArray, StandardCharsets.UTF_8);
|
resStr = new String(byteArray, StandardCharsets.UTF_8);
|
||||||
System.err.println("-----------调用人脸服务失败: " +resStr);
|
log.error("000-----------调用人脸DLL服务失败: " ,resStr);
|
||||||
}
|
}
|
||||||
return resStr;
|
return resStr;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,13 +10,10 @@ import com.dpkj.modules.scanface.wx.util.WXPayUtil;
|
|||||||
import com.dpkj.modules.scanface.wx.util.WxRandomUtils;
|
import com.dpkj.modules.scanface.wx.util.WxRandomUtils;
|
||||||
import com.dpkj.modules.scanface.wx.util.XmlParserUtil;
|
import com.dpkj.modules.scanface.wx.util.XmlParserUtil;
|
||||||
import com.dpkj.modules.scanface.wx.util.XmlUtils;
|
import com.dpkj.modules.scanface.wx.util.XmlUtils;
|
||||||
import com.dpkj.modules.scanface.wx.vo.WxFacePayAuthinfoResp;
|
import com.dpkj.modules.scanface.wx.vo.*;
|
||||||
import com.dpkj.modules.scanface.wx.vo.WxFacePayMicroPayResp;
|
|
||||||
import com.dpkj.modules.scanface.wx.vo.WxFacePayOrderResp;
|
|
||||||
import com.dpkj.modules.scanface.wx.vo.WxFacePayReq;
|
|
||||||
import com.dpkj.modules.scanface.wx.vo.WxFacePayResp;
|
|
||||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
|
import com.github.binarywang.wxpay.constant.WxPayConstants;
|
||||||
import com.sun.jna.Memory;
|
import com.sun.jna.Memory;
|
||||||
import com.sun.jna.Pointer;
|
import com.sun.jna.Pointer;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
@@ -27,16 +24,10 @@ import org.springframework.http.HttpMethod;
|
|||||||
import org.springframework.http.ResponseEntity;
|
import org.springframework.http.ResponseEntity;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.web.client.RestTemplate;
|
import org.springframework.web.client.RestTemplate;
|
||||||
import com.github.binarywang.wxpay.constant.WxPayConstants;
|
|
||||||
|
|
||||||
import java.io.UnsupportedEncodingException;
|
import java.io.UnsupportedEncodingException;
|
||||||
import java.nio.charset.StandardCharsets;
|
import java.nio.charset.StandardCharsets;
|
||||||
import java.util.ArrayList;
|
import java.util.*;
|
||||||
import java.util.Base64;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.SortedMap;
|
|
||||||
import java.util.TreeMap;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @description: 调用微信刷脸方法
|
* @description: 调用微信刷脸方法
|
||||||
|
|||||||
@@ -3,19 +3,12 @@ package com.dpkj.modules.scanface.wx.util;
|
|||||||
import org.jdom2.Content;
|
import org.jdom2.Content;
|
||||||
import org.jdom2.Document;
|
import org.jdom2.Document;
|
||||||
import org.jdom2.Element;
|
import org.jdom2.Element;
|
||||||
|
|
||||||
import javax.xml.bind.DatatypeConverter;
|
import javax.xml.bind.DatatypeConverter;
|
||||||
|
|
||||||
|
|
||||||
import java.io.StringReader;
|
import java.io.StringReader;
|
||||||
import java.security.MessageDigest;
|
import java.security.MessageDigest;
|
||||||
import java.security.NoSuchAlgorithmException;
|
import java.security.NoSuchAlgorithmException;
|
||||||
import java.util.HashMap;
|
import java.util.*;
|
||||||
import java.util.Iterator;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Set;
|
|
||||||
import java.util.SortedMap;
|
|
||||||
import java.util.TreeMap;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @description: 生成签名
|
* @description: 生成签名
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
package com.dpkj.modules.scanface.wx.util;
|
package com.dpkj.modules.scanface.wx.util;
|
||||||
|
|
||||||
import org.w3c.dom.Document;
|
import org.w3c.dom.Document;
|
||||||
import org.w3c.dom.Node;
|
import org.w3c.dom.Node;
|
||||||
|
|
||||||
import javax.xml.parsers.DocumentBuilder;
|
import javax.xml.parsers.DocumentBuilder;
|
||||||
import javax.xml.parsers.DocumentBuilderFactory;
|
import javax.xml.parsers.DocumentBuilderFactory;
|
||||||
import javax.xml.xpath.XPath;
|
import javax.xml.xpath.XPath;
|
||||||
|
|||||||
@@ -36,8 +36,10 @@ public class WxFaceOrderVo {
|
|||||||
private String outTradeNo;
|
private String outTradeNo;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 用户支付金额 分
|
* 用户支付金额 单位元
|
||||||
|
* 调用微信时需要转为分
|
||||||
*/
|
*/
|
||||||
private String totalAmount;
|
private String totalAmount;
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ logging:
|
|||||||
|
|
||||||
dpkj:
|
dpkj:
|
||||||
#后端项目访问地址 #https://yinyitong.yzqingyan.cn/ http://172.16.11.13:15946/ ttps://yinyitong.yzqingyan.cn
|
#后端项目访问地址 #https://yinyitong.yzqingyan.cn/ http://172.16.11.13:15946/ ttps://yinyitong.yzqingyan.cn
|
||||||
serverurl: http://www.lczyyy.com/api/
|
serverurl: http://10.121.1.44/api/
|
||||||
# 医保配置
|
# 医保配置
|
||||||
chs:
|
chs:
|
||||||
# 医保机构编码
|
# 医保机构编码
|
||||||
@@ -54,40 +54,40 @@ dpkj:
|
|||||||
#dll文件路径
|
#dll文件路径
|
||||||
dll-path: C:/opt/ant-abcp/bpaas_api.dll
|
dll-path: C:/opt/ant-abcp/bpaas_api.dll
|
||||||
#IOT 应用管理-appid
|
#IOT 应用管理-appid
|
||||||
app-id: 2021005138656502
|
app-id: 2021005151604729
|
||||||
#IOT应用版本
|
#IOT应用版本
|
||||||
app-version: 1.0.0.0
|
app-version: 1.0.0.0
|
||||||
#签约商家的 PID,以 2088 开头,企业主体
|
#签约商家的 PID,以 2088 开头,企业主体
|
||||||
merchant-id: 2088641941653700
|
merchant-id: 2088170977486823
|
||||||
#商家机具终端编号,每台设备保持唯一
|
#商家机具终端编号,每台设备保持唯一
|
||||||
device-num: P060003750
|
device-num: P060003750
|
||||||
#服务商的 PID
|
#服务商的 PID
|
||||||
partner-id: 2088641941653700
|
partner-id: 2088170977486823
|
||||||
# 核心入参 serviceId
|
# 核心入参 serviceId
|
||||||
service-id: pay
|
service-id: pay
|
||||||
#微信模块
|
#微信模块
|
||||||
wx:
|
wx:
|
||||||
configs: #清研家
|
configs: #中医院
|
||||||
- app-id: wxe8334dd2140bb0e1
|
- app-id: wxc12fa4977f66974d
|
||||||
# 公众号的appsecret
|
# 公众号的appsecret
|
||||||
secret: f83420d79cc6ecd1d7fe9684ac9cdfe4
|
secret: a51dbcac25a73d7e4812a43cf550c5fc
|
||||||
# 接口配置里的Token值
|
# 接口配置里的Token值
|
||||||
token: dpkjylwjvote
|
token: DPKJYINYITONG
|
||||||
# 接口配置里的EncodingAESKey值
|
# 接口配置里的EncodingAESKey值
|
||||||
aes-key: go2uM3ASe2rEyeoNsZHoPCiKGgpku0Bi49P5IypdQWT
|
aes-key: yIBgBrHwRGjO2L3CLIE9hmnlf1FrXQQ7qJZVIg4r6Dx
|
||||||
mch-config: #商户信息 清研家关联的商户:驿路万家-扬州清研软件科技
|
mch-config: #商户信息 中医院
|
||||||
app-id: wxe8334dd2140bb0e1
|
app-id: wxc12fa4977f66974d
|
||||||
secret: f83420d79cc6ecd1d7fe9684ac9cdfe4
|
secret: a51dbcac25a73d7e4812a43cf550c5fc
|
||||||
#调用接口所需service_id
|
#调用接口所需service_id
|
||||||
service-id: service_id
|
service-id: service_id
|
||||||
#商户号
|
#商户号
|
||||||
mch-id: 1557642321
|
mch-id: 1603658732
|
||||||
#商户秘钥
|
#商户秘钥
|
||||||
mch-key: yndpkj15288216506YndpkjKsjytZx12
|
mch-key: lczyywxc12fa4977f66974dyytzz1234
|
||||||
#报文解密 APIv3密钥
|
#报文解密 APIv3密钥
|
||||||
v3-key: yndpkj15288216506YndpkjKsjytZx12
|
v3-key: lczyywxc12fa4977f66974dyytzz1234
|
||||||
#微信: 商户APIv2密钥
|
#微信: 商户APIv2密钥
|
||||||
key-api: yndpkj15288216506YndpkjKsjytZx12
|
key-api: lczyywxc12fa4977f66974dyytzz1234
|
||||||
#p12证书的位置,可以指定绝对路径,也可以指定类路径(以classpath;开头)
|
#p12证书的位置,可以指定绝对路径,也可以指定类路径(以classpath;开头)
|
||||||
key-path: classpath:test\apiclient_cert.p12
|
key-path: classpath:test\apiclient_cert.p12
|
||||||
private-key-path: classpath:test\apiclient_key.pem
|
private-key-path: classpath:test\apiclient_key.pem
|
||||||
@@ -105,9 +105,9 @@ dpkj:
|
|||||||
url:
|
url:
|
||||||
# 后端接口地址
|
# 后端接口地址
|
||||||
# server: https://102760424tfyw.vicp.fun/api
|
# server: https://102760424tfyw.vicp.fun/api
|
||||||
server: ${dpkj.server-url}
|
server: ${dpkj.url.server-url}
|
||||||
# h5地址
|
# h5地址
|
||||||
h5: ${dpkj.h5-url}
|
h5: ${dpkj.url.h5-url}
|
||||||
|
|
||||||
|
|
||||||
# 身份证读取等待时间
|
# 身份证读取等待时间
|
||||||
|
|||||||
@@ -1,6 +1,27 @@
|
|||||||
spring:
|
spring:
|
||||||
|
servlet:
|
||||||
|
multipart:
|
||||||
|
max-file-size: 10MB
|
||||||
|
max-request-size: 10MB
|
||||||
|
resource:
|
||||||
|
static-locations: classpath:/static/,classpath:/public/
|
||||||
application:
|
application:
|
||||||
name: yinyitong-zhongyuyuan-dll-hang
|
name: ems-express-bridge
|
||||||
profiles:
|
profiles:
|
||||||
active: '@profile.name@'
|
#active: '@profile.name@'
|
||||||
|
active: pro
|
||||||
|
|
||||||
|
server:
|
||||||
|
port: 5948 #5946
|
||||||
|
servlet:
|
||||||
|
context-path: /api
|
||||||
|
tomcat:
|
||||||
|
max-swallow-size: -1
|
||||||
|
error:
|
||||||
|
include-exception: true
|
||||||
|
include-stacktrace: ALWAYS
|
||||||
|
include-message: ALWAYS
|
||||||
|
compression:
|
||||||
|
enabled: true
|
||||||
|
min-response-size: 1024
|
||||||
|
mime-types: application/javascript,application/json,application/xml,text/html,text/xml,text/plain,text/css,image/*
|
||||||
|
|||||||
@@ -29,9 +29,9 @@
|
|||||||
</appender>
|
</appender>
|
||||||
|
|
||||||
<!-- 生成 error html格式日志开始 -->
|
<!-- 生成 error html格式日志开始 -->
|
||||||
<appender name="HTML" class="ch.qos.logback.core.FileAppender">
|
<!--<appender name="HTML" class="ch.qos.logback.core.FileAppender">
|
||||||
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
|
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
|
||||||
<!--设置日志级别,过滤掉info日志,只输入error日志-->
|
<!–设置日志级别,过滤掉info日志,只输入error日志–>
|
||||||
<level>ERROR</level>
|
<level>ERROR</level>
|
||||||
</filter>
|
</filter>
|
||||||
<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
|
<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
|
||||||
@@ -40,15 +40,15 @@
|
|||||||
</layout>
|
</layout>
|
||||||
</encoder>
|
</encoder>
|
||||||
<file>${LOG_HOME}/error-log.html</file>
|
<file>${LOG_HOME}/error-log.html</file>
|
||||||
</appender>
|
</appender>-->
|
||||||
<!-- 生成 error html格式日志结束 -->
|
<!-- 生成 error html格式日志结束 -->
|
||||||
|
|
||||||
<!-- 每天生成一个html格式的日志开始 -->
|
<!-- 每天生成一个html格式的日志开始 -->
|
||||||
<appender name="FILE_HTML" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
<!-- <appender name="FILE_HTML" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||||
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
||||||
<!--日志文件输出的文件名 -->
|
<!–日志文件输出的文件名 –>
|
||||||
<FileNamePattern>${LOG_HOME}/%d{yyyy-MM-dd}.%i.html</FileNamePattern>
|
<FileNamePattern>${LOG_HOME}/%d{yyyy-MM-dd}.%i.html</FileNamePattern>
|
||||||
<!--日志文件保留天数 -->
|
<!–日志文件保留天数 –>
|
||||||
<MaxHistory>30</MaxHistory>
|
<MaxHistory>30</MaxHistory>
|
||||||
<MaxFileSize>10MB</MaxFileSize>
|
<MaxFileSize>10MB</MaxFileSize>
|
||||||
</rollingPolicy>
|
</rollingPolicy>
|
||||||
@@ -57,7 +57,7 @@
|
|||||||
<pattern>%p%d%msg%M%F{32}%L</pattern>
|
<pattern>%p%d%msg%M%F{32}%L</pattern>
|
||||||
</layout>
|
</layout>
|
||||||
</encoder>
|
</encoder>
|
||||||
</appender>
|
</appender>-->
|
||||||
<!-- 每天生成一个html格式的日志结束 -->
|
<!-- 每天生成一个html格式的日志结束 -->
|
||||||
|
|
||||||
<!--myibatis log configure -->
|
<!--myibatis log configure -->
|
||||||
@@ -70,8 +70,8 @@
|
|||||||
<root level="INFO">
|
<root level="INFO">
|
||||||
<appender-ref ref="STDOUT"/>
|
<appender-ref ref="STDOUT"/>
|
||||||
<appender-ref ref="FILE"/>
|
<appender-ref ref="FILE"/>
|
||||||
<appender-ref ref="HTML"/>
|
<!-- <appender-ref ref="HTML"/>-->
|
||||||
<appender-ref ref="FILE_HTML"/>
|
<!-- <appender-ref ref="FILE_HTML"/>-->
|
||||||
</root>
|
</root>
|
||||||
|
|
||||||
</configuration>
|
</configuration>
|
||||||
|
|||||||
@@ -70,10 +70,10 @@
|
|||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
<div style="border-bottom: 1px dashed #000;margin: 3px 0;"></div>
|
<div style="border-bottom: 1px dashed #000;margin: 3px 0;"></div>
|
||||||
<div style="margin-left: 20px;font-size: 29px;">终端编号:<span th:text="${terminalNumber}"></span></div>
|
<div style="margin-left: 20px;font-size: 29px;word-break: break-all;">终端编号:<span th:text="${terminalNumber}"></span></div>
|
||||||
<div style="margin-left: 20px;font-size: 29px;">打印时间:<span th:text="${printTime}"></span></div>
|
<div style="margin-left: 20px;font-size: 29px;word-break: break-all;">打印时间:<span th:text="${printTime}"></span></div>
|
||||||
<div style="margin-left: 20px;font-size: 27px;">
|
<div style="margin-left: 20px;margin-right: 20px;font-size: 29px;word-break: break-all;">
|
||||||
<span>温馨提示:请取走缴费凭证,并妥善保管。<br/>如果对缴费存在疑问,请到人工窗口咨询!</span>
|
<span>温馨提示:请妥善保管好您的缴费凭条,如果对缴费存在疑问,请到人工窗口咨询。</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
|
|||||||
@@ -29,10 +29,10 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div style="border-bottom: 1px dashed #000;margin: 3px 0;"></div>
|
<div style="border-bottom: 1px dashed #000;margin: 3px 0;"></div>
|
||||||
<div style="margin-left: 20px;font-size: 29px;">终端编号:<span th:text="${terminalNumber}"></span></div>
|
<div style="margin-left: 20px;font-size: 29px;word-break: break-all;">终端编号:<span th:text="${terminalNumber}"></span></div>
|
||||||
<div style="margin-left: 20px;font-size: 29px;">打印时间:<span th:text="${printTime}"></span></div>
|
<div style="margin-left: 20px;font-size: 29px;word-break: break-all;">打印时间:<span th:text="${printTime}"></span></div>
|
||||||
<div style="margin-left: 20px;font-size: 27px;">
|
<div style="margin-left: 20px;margin-right: 20px;font-size: 29px;word-break: break-all;">
|
||||||
<span>温馨提示:请取走缴费凭证,并妥善保管。<br/>如果对缴费存在疑问,请到人工窗口咨询!</span>
|
<span>温馨提示:请妥善保管好您的缴费凭条,如果对缴费存在疑问,请到人工窗口咨询。</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
|
|||||||
@@ -27,10 +27,10 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div style="border-bottom: 1px dashed #000;margin: 3px 0;"></div>
|
<div style="border-bottom: 1px dashed #000;margin: 3px 0;"></div>
|
||||||
<div style="margin-left: 20px;font-size: 29px;">终端编号:<span th:text="${terminalNumber}"></span></div>
|
<div style="margin-left: 20px;font-size: 29px;word-break: break-all;">终端编号:<span th:text="${terminalNumber}"></span></div>
|
||||||
<div style="margin-left: 20px;font-size: 29px;">打印时间:<span th:text="${printTime}"></span></div>
|
<div style="margin-left: 20px;font-size: 29px;word-break: break-all;">打印时间:<span th:text="${printTime}"></span></div>
|
||||||
<div style="margin-left: 20px;font-size: 27px;">
|
<div style="margin-left: 20px;margin-right: 20px;font-size: 29px;word-break: break-all;">
|
||||||
<span>温馨提示:请取走缴费凭证,并妥善保管。<br/>如果对缴费存在疑问,请到人工窗口咨询!</span>
|
<span>温馨提示:请妥善保管好您的缴费凭条,如果对缴费存在疑问,请到人工窗口咨询。</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
|
|||||||
@@ -25,22 +25,24 @@
|
|||||||
<div style="margin-left: 20px;">就诊科室:<span th:text="${department}"></span></div>
|
<div style="margin-left: 20px;">就诊科室:<span th:text="${department}"></span></div>
|
||||||
<div style="margin-left: 20px;">出诊级别:<span th:text="${visitLevel}"></span></div>
|
<div style="margin-left: 20px;">出诊级别:<span th:text="${visitLevel}"></span></div>
|
||||||
<div style="margin-left: 20px;">就诊医生:<span th:text="${doctor}"></span></div>
|
<div style="margin-left: 20px;">就诊医生:<span th:text="${doctor}"></span></div>
|
||||||
|
<div style="margin-left: 20px;">就诊时间:<span th:text="${treatTime}"></span></div>
|
||||||
<div style="margin-left: 20px;">号  序:<span th:text="${sequence}"></span></div>
|
<div style="margin-left: 20px;">号  序:<span th:text="${sequence}"></span></div>
|
||||||
<div style="margin-left: 20px;">挂号日期:<span th:text="${registerDate}"></span></div>
|
<div style="margin-left: 20px;">总 费 用:<span th:text="${totalFee}"></span>元</div>
|
||||||
<div style="margin-left: 20px;">总 费 用:<span th:text="${totalFee}"></span> 元</div>
|
<div style="margin-left: 20px;">挂号时间:<span th:text="${registerDate}"></span></div>
|
||||||
<div style="margin-left: 20px;">支付方式:<span th:text="${paymentMethod}"></span></div>
|
<div style="margin-left: 20px;">支付方式:<span th:text="${paymentMethod}"></span></div>
|
||||||
<div style="margin-left: 20px;">交易流水:<span style="font-size: 26px;"
|
<div style="margin-left: 20px;">交易流水:<span th:text="${transactionNumber}"></span></div>
|
||||||
th:text="${transactionNumber}"></span></div>
|
|
||||||
<div style="width:100%;text-align: center;">
|
<div style="width:100%;text-align: center;">
|
||||||
<img th:src="${qrCodeBase64}"
|
<img th:src="${qrCodeBase64}"
|
||||||
alt="#"/>
|
alt="#"/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div style="border-bottom: 1px dashed #000;margin-bottom: 3px;"></div>
|
<div style="border-bottom: 1px dashed #000;margin-bottom: 3px;"></div>
|
||||||
<div style="margin-left: 20px;font-size: 29px;">终端编号:<span th:text="${terminalNumber}"></span></div>
|
<div style="margin-left: 20px;font-size: 29px;word-break: break-all;">终端编号:<span
|
||||||
<div style="margin-left: 20px;font-size: 29px;">打印时间:<span th:text="${printTime}"></span></div>
|
th:text="${terminalNumber}"></span></div>
|
||||||
<div style="margin-left: 20px;font-size: 27px;">
|
<div style="margin-left: 20px;font-size: 29px;word-break: break-all;">打印时间:<span th:text="${printTime}"></span>
|
||||||
<span>温馨提示:请取走挂号凭证,并妥善保管。<br/>如果对缴费存在疑问,请到人工窗口咨询!</span>
|
</div>
|
||||||
|
<div style="margin-left: 20px;margin-right: 20px;font-size: 29px;word-break: break-all;">
|
||||||
|
<span>温馨提示:请妥善保管好您的缴费凭条,如果对缴费存在疑问,请到人工窗口咨询。</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
|
|||||||
Reference in New Issue
Block a user