新增体检订单支付,体检预约支付,互联网医院相关接口的支持

debug
李进才 1 year ago
parent a628f0af79
commit 8611765257
  1. 41
      src/main/java/com/ynxbd/common/action/RecipeAction.java
  2. 5
      src/main/java/com/ynxbd/common/action/SmsAction.java
  3. 30
      src/main/java/com/ynxbd/common/action/pay/PayAction.java
  4. 2
      src/main/java/com/ynxbd/common/action/pay/WxPayAction.java
  5. 10
      src/main/java/com/ynxbd/common/bean/HisRecipe.java
  6. 1
      src/main/java/com/ynxbd/common/bean/HisRecipeItem.java
  7. 25
      src/main/java/com/ynxbd/common/bean/xk/medicalRecipe.java
  8. 23
      src/main/java/com/ynxbd/common/dao/his/HisRecipeDao.java
  9. 37
      src/main/java/com/ynxbd/common/dao/peis/PeisDao.java
  10. 2
      src/main/java/com/ynxbd/common/helper/his/HisEnum.java
  11. 2
      src/main/java/com/ynxbd/common/helper/xbd/XBDHelper.java
  12. 1
      src/main/java/com/ynxbd/common/result/JsonResultEnum.java
  13. 138
      src/main/java/com/ynxbd/common/service/PeisService.java
  14. 2
      src/main/java/com/ynxbd/wx/wxfactory/ReqParamHelper.java
  15. 4
      src/main/java/com/ynxbd/wx/wxfactory/medical/Client.java
  16. 6
      src/main/resources/webservice.properties
  17. 1
      src/main/resources/xbd.properties

@ -4,6 +4,7 @@ import com.ynxbd.common.action.base.BaseAction;
import com.ynxbd.common.bean.HisRecipe; import com.ynxbd.common.bean.HisRecipe;
import com.ynxbd.common.bean.NatRecord; import com.ynxbd.common.bean.NatRecord;
import com.ynxbd.common.bean.Patient; import com.ynxbd.common.bean.Patient;
import com.ynxbd.common.bean.xk.medicalRecipe;
import com.ynxbd.common.dao.NatRecordDao; import com.ynxbd.common.dao.NatRecordDao;
import com.ynxbd.common.dao.PatientDao; import com.ynxbd.common.dao.PatientDao;
import com.ynxbd.common.dao.his.HisRecipeDao; import com.ynxbd.common.dao.his.HisRecipeDao;
@ -57,6 +58,30 @@ public class RecipeAction extends BaseAction {
int days = DateHelper.intervalDays(begDate, endDate, true); int days = DateHelper.intervalDays(begDate, endDate, true);
List<HisRecipe> hisRecipes = new HisRecipeDao().getUnPayRecipe(patientId, personNo, days); List<HisRecipe> hisRecipes = new HisRecipeDao().getUnPayRecipe(patientId, personNo, days);
List<HisRecipe> resultList = new ArrayList<>();
for (HisRecipe hisRecipe : hisRecipes) {
if (hisRecipe.getDate() != null && DateHelper.inDateRange(begDate, endDate, hisRecipe.getDate(), DateHelper.DateEnum.yyyy_MM_dd) && !"1".equals(hisRecipe.getSTDFlag()) && (!"1".equals(hisRecipe.getInternetHospFlag()) || "1".equals(hisRecipe.getYJSAuditFlag()))) {
resultList.add(hisRecipe);
}
}
return Result.success(resultList);
}
/**
* 获取所以未缴费订单 包括互联网医院未审核医保双通道订单
* @param patientId patientId
* @param begDate 开始时间
* @param endDate 结束时间
*/
@Action("getMedicalRecipe")
public Result getMedicalRecipe(String patientId, String begDate, String endDate ) {
log.info("[处方]未缴费项目查询 patientId={}", patientId);
if (patientId == null) {
return Result.error(ResultEnum.PARAM_IS_DEFECT);
}
patientId = getDecodeString(patientId);
int days = DateHelper.intervalDays(begDate, endDate, true);
List<HisRecipe> hisRecipes = new HisRecipeDao().getUnPayRecipe(patientId,"",days);
List<HisRecipe> resultList = new ArrayList<>(); List<HisRecipe> resultList = new ArrayList<>();
for (HisRecipe hisRecipe : hisRecipes) { for (HisRecipe hisRecipe : hisRecipes) {
if (hisRecipe.getDate() != null && DateHelper.inDateRange(begDate, endDate, hisRecipe.getDate(), DateHelper.DateEnum.yyyy_MM_dd)) { if (hisRecipe.getDate() != null && DateHelper.inDateRange(begDate, endDate, hisRecipe.getDate(), DateHelper.DateEnum.yyyy_MM_dd)) {
@ -66,6 +91,22 @@ public class RecipeAction extends BaseAction {
return Result.success(resultList); return Result.success(resultList);
} }
/**
* 将订单上传到医保双通道
* @param treatNum 门诊号
* @param personID 身份证
* @param recipes 处方号合集中间用英文逗号隔开
*/
@Action("uploadMedicalRecipe")
public Result uploadMedicalRecipe(String treatNum, String personID, String recipes){
log.info("[互联网医院]处方医保双通道流转 treatNum={},personNo-{}, recipes={}", treatNum, personID, recipes);
if(treatNum==null||personID==null||recipes==null){
return Result.error(ResultEnum.PARAM_IS_DEFECT);
}
List<medicalRecipe> medicalRecipe = new HisRecipeDao().uploadMedicalRecipe(treatNum,personID,recipes);
return Result.success(medicalRecipe);
}
// /** // /**
// * 获取未缴费项目 // * 获取未缴费项目
// */ // */

@ -113,6 +113,11 @@ public class SmsAction extends BaseAction {
template = "SMS_173475681"; template = "SMS_173475681";
resultFlag = SmsHelper.sendCode(template, tel, code); resultFlag = SmsHelper.sendCode(template, tel, code);
break; break;
case "xbd_code_001":
template = "SMS_257021489";
resultFlag = SmsHelper.sendCode(template, tel, code);
break;
default: default:
log.info("调用码无效"); log.info("调用码无效");

@ -9,6 +9,7 @@ import com.ynxbd.common.bean.enums.MerchantEnum;
import com.ynxbd.common.bean.pay.*; import com.ynxbd.common.bean.pay.*;
import com.ynxbd.common.dao.SelfHelpDao; import com.ynxbd.common.dao.SelfHelpDao;
import com.ynxbd.common.dao.his.HisRecipeDao; import com.ynxbd.common.dao.his.HisRecipeDao;
import com.ynxbd.common.dao.peis.PeisDao;
import com.ynxbd.common.dao.sys.SysUserDao; import com.ynxbd.common.dao.sys.SysUserDao;
import com.ynxbd.common.helper.common.*; import com.ynxbd.common.helper.common.*;
import com.ynxbd.common.helper.his.HisHelper; import com.ynxbd.common.helper.his.HisHelper;
@ -166,6 +167,35 @@ public class PayAction extends BaseAction {
} }
/**
* 体检退费
* @param recipeId 订单号
* @param payCode 支付方式
* @param totalFee 订单金额
* @param outTradeNo outTradeNo
* @param openid openid
*/
@Action("peisRefund")
public Result peisRefund(String recipeId, String payCode, String outTradeNo, String totalFee,String openid){
PeisService peisService = new PeisService();
MerchantEnum merchantEnum = MerchantEnum.getMerchantEnumByCode(payCode);
PeisDao peisDao = new PeisDao();
Recipe recipe = peisDao.selectByOutTradeNo(outTradeNo);
if(!new BigDecimal(totalFee).equals(new BigDecimal(String.valueOf(recipe.getTotalFee())))){
return Result.error(ResultEnum.REFUND_MONEY_ERROR);
}
String pushMessage = "已申请退款,原因:患者主动取消退费,订单号:" + outTradeNo +"orderNo:"+ recipeId;
Result result = peisService.peisAutoRefund(recipeId,merchantEnum,outTradeNo,new BigDecimal(totalFee),pushMessage,new Date(),openid);
if(result.isSuccess()){
peisService.peisRefund(recipeId,"OK","");
}
else {
peisService.peisRefund(recipeId,"FAIL",result.getMessage());
}
return result;
}
/** /**
* [住院]预交金创建订单 * [住院]预交金创建订单
* * * *

@ -72,7 +72,7 @@ public class WxPayAction extends BaseAction {
new MicroService().InternetHospNotice(outTradeNo, bankTransNo, openid, totalFee, payDate, payTime); new MicroService().InternetHospNotice(outTradeNo, bankTransNo, openid, totalFee, payDate, payTime);
break; break;
case PEIS_RESERVE: case PEIS_RESERVE:
new PeisService().payNotify(outTradeNo,bankTransNo); new PeisService().payNotify(MerchantEnum.WX,openid,totalFee,outTradeNo,bankTransNo,payInfo,new Date());
break; break;

@ -59,6 +59,16 @@ public class HisRecipe {
// 院区名称 // 院区名称
private String hospitalAreaName; private String hospitalAreaName;
//互联网医院
private String internetHospFlag;
private String sTDFlag;
private String sTDUploadDate;
private String yJSAuditFlag;
private String ybAttrib; //医保属性,值域:4为慢性病,5为特殊病 private String ybAttrib; //医保属性,值域:4为慢性病,5为特殊病

@ -29,6 +29,7 @@ public class HisRecipeItem {
private String fjjfApplyNum; // 子处方处方号标识(附加缴费)(处方号带有该字符串的就是这个处方的附加缴费处方) private String fjjfApplyNum; // 子处方处方号标识(附加缴费)(处方号带有该字符串的就是这个处方的附加缴费处方)
// 趣医专用---------------------------------------- // 趣医专用----------------------------------------
private String count_qy; // 付数(趣医专用) private String count_qy; // 付数(趣医专用)
private String quantity_qy; // 数量(趣医专用) private String quantity_qy; // 数量(趣医专用)

@ -0,0 +1,25 @@
package com.ynxbd.common.bean.xk;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
import java.io.Serializable;
/**
* @author 李进才
* @ClassName medicalRecipe
* @Description TODO
* @date 2023/12/04 09:51:00
*/
@Setter
@Getter
@ToString
@NoArgsConstructor
public class medicalRecipe implements Serializable {
private String cfNum;
private Integer flag;
private String msg;
}

@ -2,6 +2,7 @@ package com.ynxbd.common.dao.his;
import com.ynxbd.common.bean.HisRecipe; import com.ynxbd.common.bean.HisRecipe;
import com.ynxbd.common.bean.enums.MerchantEnum; import com.ynxbd.common.bean.enums.MerchantEnum;
import com.ynxbd.common.bean.xk.medicalRecipe;
import com.ynxbd.common.helper.his.HisEnum; import com.ynxbd.common.helper.his.HisEnum;
import com.ynxbd.common.helper.his.HisHelper; import com.ynxbd.common.helper.his.HisHelper;
import com.ynxbd.common.result.JsonResult; import com.ynxbd.common.result.JsonResult;
@ -94,6 +95,28 @@ public class HisRecipeDao {
return resultList; return resultList;
} }
public List<medicalRecipe> uploadMedicalRecipe(String treatNum, String personID, String recipes) {
List<medicalRecipe> resultList = new ArrayList<>();
JsonResult jsonResult = HisHelper.getJsonResult(HisEnum.XK_MEDICAL_RECIPE, params -> {
params.put("PersonID",personID);
params.put("MZNum", treatNum);
params.put("CallNo",HisHelper.CALL_NO);
params.put("CFNums",recipes);
});
if (!jsonResult.success()) { // 失败
return resultList;
}
List<medicalRecipe> medicalRecipe = jsonResult.getDataMapList(medicalRecipe.class, "CFNums");
if (medicalRecipe != null) {
resultList = medicalRecipe;
}
return resultList;
}
/** /**
* HIS申请单预缴费 * HIS申请单预缴费

@ -61,6 +61,35 @@ public class PeisDao {
return null; return null;
} }
public Recipe selectByRecipeId(String recipeId) {
String sql = "select * from peis_reserve where recipeId=? and peisStatus = 0 and payStatus=0 order by updateTime desc";
List<Recipe> list = DataBase.select(sql, Recipe.class, ps -> {
ps.setString(1, recipeId);
});
if (list.size() > 0) {
return list.get(0);
}
return null;
}
/**
* 修改退款描述
*
* @param outTradeNo 订单号
* @param recipeId 体检订单号
* @param refundMsg 退款描述
* @return 是否成功
*/
public boolean updateRefundResult(String outTradeNo, String recipeId, String refundMsg) {
// 退款成功
String sql = "update peis_reserve set refundResult=?, refundTime=now() where recipeId=? and outTradeNo=?";
return DataBase.update(sql, ps -> {
ps.setString(1, refundMsg);
ps.setString(2, recipeId);
ps.setString(3, outTradeNo);
}) > 0;
}
public boolean updatePayStateOk(String outTradeNo, String bankTransNo) { public boolean updatePayStateOk(String outTradeNo, String bankTransNo) {
String sql = "update peis_reserve set payStatus=0, bankTransNo=? where outTradeNo=? and bankTransNo is null"; String sql = "update peis_reserve set payStatus=0, bankTransNo=? where outTradeNo=? and bankTransNo is null";
return DataBase.update(sql, ps -> { return DataBase.update(sql, ps -> {
@ -68,4 +97,12 @@ public class PeisDao {
ps.setString(2, outTradeNo); ps.setString(2, outTradeNo);
}) > 0; }) > 0;
} }
public boolean updatePeisStateOk(String outTradeNo, String bankTransNo) {
String sql = "update peis_reserve set peisStatus=0, bankTransNo=? where outTradeNo=? and bankTransNo is null";
return DataBase.update(sql, ps -> {
ps.setString(1, bankTransNo);
ps.setString(2, outTradeNo);
}) > 0;
}
} }

@ -91,6 +91,8 @@ public enum HisEnum {
XK_CREATE_INQUIRY("[互联网医院]创建问诊记录","13006","UniversalInterface",true), XK_CREATE_INQUIRY("[互联网医院]创建问诊记录","13006","UniversalInterface",true),
XK_MEDICAL_RECIPE("[互联网医院]处方医保双通道流转","13007","UniversalInterface",true),
; ;

@ -14,12 +14,14 @@ import lombok.extern.slf4j.Slf4j;
public class XBDHelper { public class XBDHelper {
private static final String OUT_TEAM_CLOUD_FILM; private static final String OUT_TEAM_CLOUD_FILM;
public static final String MEDICAL_RECORD_REMAKE_URL; public static final String MEDICAL_RECORD_REMAKE_URL;
public static final String XBD_PEIS;
public static OutTeamDao outTeamDao; public static OutTeamDao outTeamDao;
static { static {
ProperHelper config = new ProperHelper().read("xbd.properties"); ProperHelper config = new ProperHelper().read("xbd.properties");
OUT_TEAM_CLOUD_FILM = config.getString("xbd.out_team_cloud_film_link"); OUT_TEAM_CLOUD_FILM = config.getString("xbd.out_team_cloud_film_link");
MEDICAL_RECORD_REMAKE_URL = config.getString("xbd.medical_record_remake_url"); MEDICAL_RECORD_REMAKE_URL = config.getString("xbd.medical_record_remake_url");
XBD_PEIS = config.getString("xbd.peis");
if(OUT_TEAM_CLOUD_FILM ==null){ if(OUT_TEAM_CLOUD_FILM ==null){
log.error("新八达内部团队配置文件读取失败"); log.error("新八达内部团队配置文件读取失败");
} }

@ -23,6 +23,7 @@ public enum JsonResultEnum {
SYS_RM_LIS("[瑞美LIS]", "ResultCode", "ResultMessage", "1", "0", String.valueOf(HttpStatus.SC_REQUEST_TIMEOUT)); SYS_RM_LIS("[瑞美LIS]", "ResultCode", "ResultMessage", "1", "0", String.valueOf(HttpStatus.SC_REQUEST_TIMEOUT));
// 调用系统标识 // 调用系统标识
public final String SYS; public final String SYS;
// 响应编码节点名 // 响应编码节点名

@ -1,11 +1,27 @@
package com.ynxbd.common.service; package com.ynxbd.common.service;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.ynxbd.common.bean.enums.MerchantEnum;
import com.ynxbd.common.bean.pay.Order;
import com.ynxbd.common.bean.pay.Recipe; import com.ynxbd.common.bean.pay.Recipe;
import com.ynxbd.common.dao.peis.PeisDao; import com.ynxbd.common.dao.peis.PeisDao;
import com.ynxbd.common.helper.common.JsonHelper;
import com.ynxbd.common.helper.http.OkHttpHelper;
import com.ynxbd.common.helper.xbd.HttpHelper;
import com.ynxbd.common.helper.xbd.XBDHelper;
import com.ynxbd.common.result.JsonResult;
import com.ynxbd.common.result.JsonResultEnum;
import com.ynxbd.common.result.Result; import com.ynxbd.common.result.Result;
import com.ynxbd.common.result.ServiceException;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import okhttp3.FormBody;
import okhttp3.RequestBody;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
/** /**
* @author 李进才 * @author 李进才
@ -34,17 +50,135 @@ public class PeisService {
} }
return new PeisDao().insert(recipe); return new PeisDao().insert(recipe);
} }
public void payNotify(String outTradeNo, String bankTransNo){ public void payNotify(MerchantEnum merchantEnum, String openid, BigDecimal totalFee, String outTradeNo, String bankTransNo, String payInfo,Date tradeDate){
PeisDao peisDao = new PeisDao(); PeisDao peisDao = new PeisDao();
Recipe recipe = peisDao.selectByOutTradeNo(outTradeNo); Recipe recipe = peisDao.selectByOutTradeNo(outTradeNo);
String recipeId = recipe.getRecipeId(); String recipeId = recipe.getRecipeId();
Integer payStates = recipe.getPayStatus(); Integer payStates = recipe.getPayStatus();
if (payStates == 0) { if (payStates == 0) {
log.error("[体检预约]订单已支付 outTradeNo={}, bankTransNo={}, recipeId={}", outTradeNo, bankTransNo, recipeId); log.error("[体检预约] 拒绝支付-订单已支付 outTradeNo={}, bankTransNo={}, recipeId={}", outTradeNo, bankTransNo, recipeId);
return; return;
} }
if (!peisDao.updatePayStateOk(outTradeNo, bankTransNo)) { if (!peisDao.updatePayStateOk(outTradeNo, bankTransNo)) {
log.info("[体检预约]修改支付状态失败 outTradeNo={}, bankTransNo={}", outTradeNo, bankTransNo); log.info("[体检预约]修改支付状态失败 outTradeNo={}, bankTransNo={}", outTradeNo, bankTransNo);
RequestBody formBody = new FormBody.Builder().
add("orderNo", recipeId)
.add("payStatus","FAIL")
.add("payFailReason","修改支付状态失败")
.add("bankTransNo",bankTransNo)
.add("outTradeNo",outTradeNo)
.build();
String result = OkHttpHelper.post(XBDHelper.XBD_PEIS+"/wxUse/wxPay",formBody);
JSONObject jsonResult = JsonHelper.parseObject(result);
log.info("[体检预约]缴费失败回调体检系统计费 recipeId={}, bankTransNo-{}, 计费状态-{}, 计费信息-{}",recipeId,bankTransNo,jsonResult.get("code"),jsonResult.get("message"));
String pushMessage = "体检预约失败已申请退款,原因:修改支付状态失败,订单号:" + outTradeNo+"orderNo:"+ recipeId;;
peisAutoRefund(recipeId,merchantEnum,outTradeNo,totalFee,pushMessage,tradeDate,openid);
} }
else {
RequestBody formBody = new FormBody.Builder().
add("orderNo", recipeId)
.add("payStatus", "OK")
.add("payFailReason", "")
.add("bankTransNo", bankTransNo)
.add("outTradeNo",outTradeNo)
.build();
String result = OkHttpHelper.post(XBDHelper.XBD_PEIS + "/wxUse/wxPay", formBody);
JSONObject jsonResult = JsonHelper.parseObject(result);
log.info("[体检预约]缴费成功回调体检系统计费 recipeId={}, bankTransNo-{}, 计费状态-{}, 计费信息-{}", recipeId, bankTransNo, jsonResult.get("code"), jsonResult.get("message"));
if(result==null){
String pushMessage = "体检预约失败已申请退款,原因:体检系统计费失败,订单号:" + outTradeNo+"orderNo:"+ recipeId;
peisAutoRefund(recipeId,merchantEnum,outTradeNo,totalFee,pushMessage,tradeDate,openid);
} }
if("200".equals(jsonResult.get("code"))){
if(!peisDao.updatePeisStateOk(outTradeNo, bankTransNo)){
log.info("[体检预约]修改体检系统支付状态失败 outTradeNo={}, bankTransNo={}", outTradeNo, bankTransNo);
}
}
}
}
/**
* 体检退费接口
* @param recipeId 订单号
* @param merchantEnum 支付方式
* @param outTradeNo outTradeNo
* @param totalFee 总金额
* @param pushInfo 提示信息
* @param tradeDate 退费时间
* @param openid openid
*/
public Result peisAutoRefund(String recipeId, MerchantEnum merchantEnum, String outTradeNo, BigDecimal totalFee, String pushInfo, Date tradeDate, String openid){
PeisDao peisDao = new PeisDao();
String result = OkHttpHelper.get(XBDHelper.XBD_PEIS+"/wxUse/GetOrder",params -> {
params.put("orderNo",recipeId);
});
JSONObject jsonResult = JsonHelper.parseObject(result);
if(result==null){
log.info("{} [体检预约][退费错误,计费信息查询失败] recipeId-{}, outTradeNo={}, recipeId={}, totalFee={}",recipeId, merchantEnum.NAME, outTradeNo, recipeId, totalFee);
return Result.error("退费错误,计费信息查询失败");
}
String fee = jsonResult.getJSONObject("data").get("fee").toString();
boolean isWxPay = Boolean.parseBoolean(jsonResult.getJSONObject("data").get("isWxPay").toString());
boolean isCost = Boolean.parseBoolean(jsonResult.getJSONObject("data").get("isCost").toString());
if(totalFee.compareTo(BigDecimal.ZERO)==0||"0".equals(fee)){
log.info("{} [体检预约][退费错误,退费金额为0] recipeId-{}, outTradeNo={}, recipeId={}, totalFee={}",recipeId, merchantEnum.NAME, outTradeNo, recipeId, totalFee);
return Result.error("退费错误,退费金额为0");
}
if(totalFee.equals(new BigDecimal(String.valueOf(fee)))){
log.info("{} [体检预约][退费错误,退费金额跟订单金额不符] recipeId-{}, outTradeNo={}, recipeId={}, totalFee={}",recipeId, merchantEnum.NAME, outTradeNo, recipeId, totalFee);
return Result.error("退费错误,退费金额跟订单金额不符");
}
if(isWxPay){
log.info("{} [体检预约][退费错误,体检显示已计费,不允许退费] recipeId-{}, outTradeNo={}, recipeId={}, totalFee={}", recipeId, merchantEnum.NAME, outTradeNo, recipeId, totalFee);
return Result.error("退费错误,体检显示已计费,不允许退费");
}
if(isCost){
log.info("{} [体检预约][退费错误,his显示已计费,不允许退费] recipeId-{}, outTradeNo={}, recipeId={}, totalFee={}", recipeId, merchantEnum.NAME, outTradeNo, recipeId, totalFee);
return Result.error("退费错误,his显示已计费,不允许退费");
}
String refundResult;
Order orderRefund = PayService.refund(merchantEnum, outTradeNo, recipeId, totalFee, totalFee, pushInfo, tradeDate, openid, null, pushInfo);
if (!orderRefund.isSuccess()) {
log.info("{} [体检预约][退费错误] outTradeNo={}, recipeId={}, totalFee={},recipeId-{}", merchantEnum.NAME, outTradeNo, recipeId, totalFee,recipeId);
refundResult = orderRefund.getRefundResult();
}
else {
refundResult = "OK";
}
boolean isUpdate = peisDao.updateRefundResult(outTradeNo, recipeId, refundResult);
if (!isUpdate) {
log.info("{} [体检预约][退费错误]退费信息更新失败 recipeId={}", merchantEnum.NAME, recipeId);
}
return Result.success();
}
public boolean peisRefund(String recipeId, String refundStatus, String refundFailReason){
RequestBody formBody = new FormBody.Builder().
add("orderNo", recipeId)
.add("refundStatus",refundStatus)
.add("refundFailReason",refundFailReason)
.build();
String result = OkHttpHelper.post(XBDHelper.XBD_PEIS+"/wxUse/wxRefund",formBody);
JSONObject jsonResult = JsonHelper.parseObject(result);
return "200".equals(jsonResult.get("code"));
}
public static void main(String[] args) {
RequestBody formBody = new FormBody.Builder().
add("orderNo", "Fee2023112900000001")
.add("payStatus","OK")
.add("payFailReason","")
.add("bankTransNo","4200001809202305012522296970")
.build();
String result = OkHttpHelper.post(XBDHelper.XBD_PEIS+"/wxUse/wxPay",formBody);
System.out.println(result);
// String result = OkHttpHelper.get(XBDHelper.XBD_PEIS+"/wxUse/GetOrder",params -> {
// params.put("orderNo","Fee2023112900000001");
// });
// JSONObject jsonResult = JsonHelper.parseObject(result);
// System.out.println(result);
}
} }

@ -21,7 +21,7 @@ public class ReqParamHelper {
} }
public static void main(String[] args) { public static void main(String[] args) {
System.out.println(encode("0")); System.out.println(encode("30124039"));
System.out.println(decode("5AE40D74FFF8C3F14A0491F8824C61EE")); System.out.println(decode("5AE40D74FFF8C3F14A0491F8824C61EE"));
} }
} }

@ -116,6 +116,10 @@ public class Client {
//========================================================== //==========================================================
params.put("hospital_name", hospitalName); // params.put("hospital_name", hospitalName); //
if(MdConfig.IS_DEV){
params.put("use_sandbox",1);
}
//========================================================= //=========================================================
params.put("allow_fee_change", 1); // 是否允许预结算费用发生变化 {0:不允许 1:允许 当医保局返回的预结算金额与医院上传的金额不一致时,此字段为0则直接报错,为1则以医保局金额为准} params.put("allow_fee_change", 1); // 是否允许预结算费用发生变化 {0:不允许 1:允许 当医保局返回的预结算金额与医院上传的金额不一致时,此字段为0则直接报错,为1则以医保局金额为准}

@ -13,9 +13,9 @@ his.is_log_resp=true
his.is_push_msg=false his.is_push_msg=false
#------------------------------------------------------------- #-------------------------------------------------------------
#本地 #本地
his.md_url=192.168.12.10:8888 his.md_url=192.168.1.131:8888
his.dev_url=192.168.12.10:8888 his.dev_url=192.168.1.131:8888
his.url=192.168.12.10:8888 his.url=192.168.1.131:8888
ali_code = 675448357 ali_code = 675448357
# 公司测试 # 公司测试

@ -1,2 +1,3 @@
xbd.out_team_cloud_film_link= http://192.168.10.43:3307/wx3307 xbd.out_team_cloud_film_link= http://192.168.10.43:3307/wx3307
xbd.medical_record_remake_url = http://192.168.12.66:8081 xbd.medical_record_remake_url = http://192.168.12.66:8081
xbd.peis = http://192.168.12.102:3000/peisReserve
Loading…
Cancel
Save