支付宝退费接口,混合支付退费失败调整,新增调用HIS接口退统筹和个账部分。

日志打印调整,新增标记测试报告需填写内容
debug
wangsq 2 weeks ago
parent 4ba9903ac1
commit 9e045ac7d6
  1. 40
      src/main/java/com/ynxbd/ali/config/AliMIConfig.java
  2. 41
      src/main/java/com/ynxbd/ali/config/AliMedConfig.java
  3. 2
      src/main/java/com/ynxbd/ali/helper/AliHelper.java
  4. 48
      src/main/java/com/ynxbd/ali/helper/AliMedHelper.java
  5. 18
      src/main/java/com/ynxbd/common/action/pay/AliPayAction.java
  6. 19
      src/main/java/com/ynxbd/common/action/pay/MedicalAction.java
  7. 128
      src/main/java/com/ynxbd/common/action/pay/MedicalTestAction.java
  8. 90
      src/main/java/com/ynxbd/common/action/test/TestAction.java
  9. 8
      src/main/java/com/ynxbd/common/bean/enums/MerchantEnum.java
  10. 4
      src/main/java/com/ynxbd/common/dao/his/HisMIDao.java
  11. 25
      src/main/java/com/ynxbd/common/service/MedicalService.java
  12. 32
      src/main/java/com/ynxbd/wx/wxfactory/WxMedicalHelper.java
  13. 4
      src/main/java/com/ynxbd/wx/wxfactory/WxMessageHelper.java
  14. 21
      src/main/java/com/ynxbd/wx/wxfactory/medical/Client.java
  15. 4
      src/main/java/com/ynxbd/wx/wxfactory/medical/WxMedConfig.java
  16. 17
      src/main/resources/medical-ali.properties

@ -1,40 +0,0 @@
package com.ynxbd.ali.config;
import com.ynxbd.common.helper.ProperHelper;
import com.ynxbd.wx.wxfactory.medical.WechatMIConfig;
// 支付宝医保配置
public class AliMIConfig {
private AliMIConfig() {
}
//配置文件读取项
public static final boolean IS_ENABLE;
public static final String CITY_CODE; // 城市编码
public static final String ORG_CHNL_CRTF_CODG;
public static final String ORG_NO;
public static final String ORG_APP_ID;
public static final String ORG_HOSPITAL_NAME;
public static boolean IS_DEV;
public static boolean IS_AUTO_REFUND;
public static String DEV_OPENID;
static {
ProperHelper config = new ProperHelper().read("medical-ali.properties");
IS_ENABLE = config.getBoolean("mi_ali.is_enable", false);
config.setIsEnable(IS_ENABLE);
IS_DEV = config.getBoolean("mi_ali.is_dev", true);
IS_AUTO_REFUND = config.getBoolean("mi_ali.is_auto_refund", false);
DEV_OPENID = config.getString("mi_ali.dev_openid", null);
ORG_NO = config.getString("mi_ali.org_no");
ORG_APP_ID = config.getString("mi_ali.org_app_id");
ORG_CHNL_CRTF_CODG = config.getString("mi_ali.org_chnl_crtf_codg");
ORG_HOSPITAL_NAME = config.getString("mi_ali.org_hospital_name");
// 相同数据赋值
CITY_CODE = WechatMIConfig.CITY_CODE;
}
}

@ -0,0 +1,41 @@
package com.ynxbd.ali.config;
import com.ynxbd.common.helper.ProperHelper;
// 支付宝医保配置
public class AliMedConfig {
private AliMedConfig() {
}
//配置文件读取项
public static final boolean IS_ENABLE;
public static final String CITY_CODE; // 城市编码
public static final String ORG_CHNL_CRTF_CODG;
public static final String ORG_NO;
public static final String ORG_APP_ID;
public static final String ORG_HOSPITAL_NAME;
public static boolean IS_DEV;
public static boolean IS_AUTO_REFUND;
public static String DEV_OPENID;
static {
ProperHelper config = new ProperHelper().read("medical-ali.properties");
IS_ENABLE = config.getBoolean("med_ali.is_enable", false);
config.setIsEnable(IS_ENABLE);
IS_DEV = config.getBoolean("med_ali.is_dev", true);
IS_AUTO_REFUND = config.getBoolean("med_ali.is_auto_refund", false);
DEV_OPENID = config.getString("med_ali.dev_openid", null);
ORG_NO = config.getString("med_ali.org_no");
ORG_APP_ID = config.getString("med_ali.org_app_id");
ORG_CHNL_CRTF_CODG = config.getString("med_ali.org_chnl_crtf_codg");
ORG_HOSPITAL_NAME = config.getString("med_ali.org_hospital_name");
CITY_CODE = config.getString("med_ali.city_code");
}
// 跳转链接:https://render.alipay.com/p/s/i/?scheme=encodeURIComponent('alipays://platformapi/startapp?appId=xxx&page=pages/home/home')
}

@ -455,7 +455,7 @@ public class AliHelper {
return order;
}
if (isMIPay) {
return AliMIHelper.queryTrade(outTradeNo, null);
return AliMedHelper.queryTrade(outTradeNo, null);
}
return queryTransaction(outTradeNo);
}

@ -17,7 +17,7 @@ import com.alipay.api.response.AlipayTradeAppPayResponse;
import com.alipay.api.response.AlipayTradeQueryResponse;
import com.alipay.api.response.AlipayTradeRefundApplyResponse;
import com.ynxbd.ali.config.AliConfig;
import com.ynxbd.ali.config.AliMIConfig;
import com.ynxbd.ali.config.AliMedConfig;
import com.ynxbd.common.bean.pay.Order;
import com.ynxbd.common.helper.common.DateHelper;
import com.ynxbd.common.helper.common.ErrorHelper;
@ -32,7 +32,7 @@ import java.net.URLDecoder;
import java.util.*;
@Slf4j
public class AliMIHelper {
public class AliMedHelper {
/**
* 国家医保局线上业务身份核验信息授权查询接口[alipay_commerce_medical_authinfo_auth_query_response]
@ -70,11 +70,11 @@ public class AliMIHelper {
model.setCallUrl(callUrl);
// 设置olBizTypeCode=04107(医保移动支付业务)时必传
model.setOrgAppId(AliMIConfig.ORG_APP_ID);
model.setOrgAppId(AliMedConfig.ORG_APP_ID);
// 设置机构渠道认证编码
model.setOrgChnlCrtfCode(AliMIConfig.ORG_CHNL_CRTF_CODG);
model.setOrgChnlCrtfCode(AliMedConfig.ORG_CHNL_CRTF_CODG);
// 设置定点医药机构代码
model.setOrgCode(AliMIConfig.ORG_NO);
model.setOrgCode(AliMedConfig.ORG_NO);
// 设置扩展信息-亲情账户支付场景增加
AuthExtendParams extendParams = new AuthExtendParams();
@ -98,10 +98,11 @@ public class AliMIHelper {
// 设置auth_token,同access_token(用户访问令牌)
request.putOtherTextParam("auth_token", accessToken);
log.info("[支付宝]国家医保局线上业务身份核验信息授权查询接口-入参{}", JsonHelper.toJsonString(request));
int callNum = ObjectUtils.isEmpty(reqBizNo) ? 1 : 2; // 2为第二次授权
// [支付宝医保]测试报告2
log.info("[支付宝医保]身份核验信息授权查询接口[{}]-入参{}", callNum, JsonHelper.toJsonString(request));
AlipayCommerceMedicalAuthinfoAuthQueryResponse response = alipayClient.execute(request);
log.info("[支付宝]国家医保局线上业务身份核验信息授权查询接口-调用{} {}", response.isSuccess() ? "[成功]" : "[失败]", response.getBody());
log.info("[支付宝医保]身份核验信息授权查询接口[{}]-调用{} {}", callNum, response.isSuccess() ? "[成功]" : "[失败]", response.getBody());
if (response.isSuccess()) {
return response.getData();
}
@ -170,9 +171,9 @@ public class AliMIHelper {
medicalRequestExt.put("bill_no", payOrdId); // 移动支付中心订单号payOrdId
medicalRequestExt.put("pay_auth_no", payAuthNo); // 移动支付中心返回授权编号 获取线上医保业务授权接口返回payAuthNo参数
//
medicalRequestExt.put("org_no", AliMIConfig.ORG_NO); // 医药机构编号
medicalRequestExt.put("org_name", AliMIConfig.ORG_HOSPITAL_NAME); // 医药机构名称
medicalRequestExt.put("payment_city_code", AliMIConfig.CITY_CODE); // 医保结算地城市编码(国标)
medicalRequestExt.put("org_no", AliMedConfig.ORG_NO); // 医药机构编号
medicalRequestExt.put("org_name", AliMedConfig.ORG_HOSPITAL_NAME); // 医药机构名称
medicalRequestExt.put("payment_city_code", AliMedConfig.CITY_CODE); // 医保结算地城市编码(国标)
//
medicalRequestExt.put("industry", "HOSPITAL"); // 行业标识 医院:HOSPITAL
medicalRequestExt.put("chinfo", "gjydzf"); // 渠道标识-默认为gjydzf
@ -208,10 +209,9 @@ public class AliMIHelper {
bizContent.put("extend_params", extendParams);
request.setBizContent(JSONObject.toJSONString(bizContent));
log.info("[支付宝]医保下单-入参 {}", JSONObject.toJSONString(request));
log.info("[支付宝医保]下单-入参 {}", JSONObject.toJSONString(request));
AlipayTradeAppPayResponse response = alipayClient.sdkExecute(request);
log.info("[支付宝]医保下单-返回 orderStr={}", response.getBody());
log.info("[支付宝医保]下单-返回 orderStr={}", response.getBody());
if (response.isSuccess()) {
Map<String, Object> map = new HashMap<>();
map.put("orderStr", response.getBody());
@ -246,9 +246,9 @@ public class AliMIHelper {
model.setQueryOptions(queryOptions);
request.setBizModel(model);
log.info("[支付宝][医保]线下交易查询-入参 {}", JSONObject.toJSONString(request));
log.info("[支付宝医保]线下交易查询-入参 {}", JSONObject.toJSONString(request));
AlipayTradeQueryResponse response = alipayClient.execute(request);
log.info("[支付宝][医保]线下交易查询-返回 {}", JsonHelper.toJsonString(response));
log.info("[支付宝医保]线下交易查询-返回 {}", JsonHelper.toJsonString(response));
if (response.isSuccess()) {
if ("TRADE_SUCCESS".equals(response.getTradeStatus())) {
order.setSuccess(true);
@ -277,11 +277,11 @@ public class AliMIHelper {
public static AlipayTradeRefundApplyResponse refundTrade(String outTradeNo, String outRefundNo, String tradeNo, BigDecimal refundAmount, String refundReason) throws Exception {
try {
if (ObjectUtils.isEmpty(outRefundNo)) {
log.info("[支付宝]退费outRefundNo为空");
log.info("[支付宝医保]退费outRefundNo为空");
return null;
}
if (ObjectUtils.isEmpty(outTradeNo) && ObjectUtils.isEmpty(tradeNo)) {
log.info("[支付宝]退费[outTradeNo 和 tradeNo]不能都为空");
log.info("[支付宝医保]退费[outTradeNo 和 tradeNo]不能都为空");
return null;
}
AlipayClient alipayClient = new DefaultAlipayClient(AliConfig.getAlipayConfig());
@ -300,19 +300,21 @@ public class AliMIHelper {
JSONObject extendParams = new JSONObject();
extendParams.put("cancel_serial_no", outRefundNo);
extendParams.put("cancel_bill_no", outRefundNo);
// INNER_ASSET:表示只退自费部分; OUTSIDE_ASSET:表示只退医保部分,医保部分不支持部分退
extendParams.put("DESIGNATED_REFUND_ASSET", "INNER_ASSET");
bizContent.put("extend_params", extendParams);
request.setBizContent(JSONObject.toJSONString(bizContent));
log.info("[支付宝][医保]交易退款接口-入参 {}", JSONObject.toJSONString(request));
log.info("[支付宝医保]交易退款接口-入参 {}", JSONObject.toJSONString(request));
AlipayTradeRefundApplyResponse response = alipayClient.execute(request);
log.info("[支付宝][医保]交易退款接口-返回 {}", response.getBody());
log.info("[支付宝医保]交易退款接口-返回 {}", response.getBody());
if (response.isSuccess()) {
if ("REFUND_FAIL".equals(response.getRefundStatus())) {
log.info("[支付宝][医保]退款失败 outTradeNo={}, outRefundNo={}, refundStatus={}", outTradeNo, outRefundNo, response.getRefundStatus());
log.info("[支付宝医保]退款失败 outTradeNo={}, outRefundNo={}, refundStatus={}", outTradeNo, outRefundNo, response.getRefundStatus());
return null;
}
log.info("[支付宝][医保]退款成功 outTradeNo={}, outRefundNo={}, refundStatus={}", outTradeNo, outRefundNo, response.getRefundStatus());
log.info("[支付宝医保]退款成功 outTradeNo={}, outRefundNo={}, refundStatus={}", outTradeNo, outRefundNo, response.getRefundStatus());
return response;
}
} catch (Exception e) {
@ -336,7 +338,7 @@ public class AliMIHelper {
request.setBizContent(JSONObject.toJSONString(bizContent));
AlipayTradeAppPayResponse response = alipayClient.sdkExecute(request);
log.info("[支付宝]交易退款查询-返回 {}", response.getBody());
log.info("[支付宝医保]交易退款查询-返回 {}", response.getBody());
if (response.isSuccess()) {
return response.getBody();
}

@ -1,9 +1,9 @@
package com.ynxbd.common.action.pay;
import com.alipay.api.domain.MedicalNationalPayAuthInfo;
import com.ynxbd.ali.config.AliMIConfig;
import com.ynxbd.ali.config.AliMedConfig;
import com.ynxbd.ali.helper.AliHelper;
import com.ynxbd.ali.helper.AliMIHelper;
import com.ynxbd.ali.helper.AliMedHelper;
import com.ynxbd.common.action.base.BaseAction;
import com.ynxbd.common.bean.enums.MerchantEnum;
import com.ynxbd.common.bean.pay.Order;
@ -90,8 +90,8 @@ public class AliPayAction extends BaseAction {
*/
@Action("medical_notify")
public Result medical_notify(String outTradeNo, String notifyType) {
// [支付宝][医保][收到通知] outTradeNo=ALI_1dedf988982a4142c20ee839d499, notifyType=recipe
log.info("[支付宝][医保][收到通知] outTradeNo={}, notifyType={}", outTradeNo, notifyType);
// [支付宝医保][收到通知] outTradeNo=ALI_1dedf988982a4142c20ee839d499, notifyType=recipe
log.info("[支付宝医保][收到通知] outTradeNo={}, notifyType={}", outTradeNo, notifyType);
if (outTradeNo == null || notifyType == null) {
return Result.respStr();
}
@ -101,10 +101,10 @@ public class AliPayAction extends BaseAction {
log.info(order.getErrorMsg());
return Result.error(order.getErrorMsg());
}
log.info("[支付宝][医保][收到通知] order={}", JsonHelper.toJsonString(order));
log.info("[支付宝医保][收到通知] order={}", JsonHelper.toJsonString(order));
try {
if (AliMIConfig.IS_DEV) {
if (AliMedConfig.IS_DEV) {
Thread.sleep(1000 * 12); // 12s
}
String openid = order.getOpenid();
@ -127,10 +127,10 @@ public class AliPayAction extends BaseAction {
*/
@Action("queryMIAuth")
public Result queryMIAuth(String openid, String accessToken, String patientName, String patientCardNo, String reqBizNo, String callUrl) {
log.info("[支付宝][医保]授权查询 openid={}, accessToken={}, patientName={}, patientCardNo={}, reqBizNo={}, callUrl={}", openid, accessToken, patientName, patientCardNo, reqBizNo, callUrl);
log.info("[支付宝医保]授权查询 openid={}, accessToken={}, patientName={}, patientCardNo={}, reqBizNo={}, callUrl={}", openid, accessToken, patientName, patientCardNo, reqBizNo, callUrl);
try {
MedicalNationalPayAuthInfo dataInfo = AliMIHelper.queryMIAuth(openid, accessToken, patientName, patientCardNo, reqBizNo, callUrl);
log.info("[支付宝][医保]授权查询 {}", JsonHelper.toJsonString(dataInfo));
MedicalNationalPayAuthInfo dataInfo = AliMedHelper.queryMIAuth(openid, accessToken, patientName, patientCardNo, reqBizNo, callUrl);
log.info("[支付宝医保]授权查询 {}", JsonHelper.toJsonString(dataInfo));
if (dataInfo == null) {
return Result.error("授权查询失败");
}

@ -1,7 +1,7 @@
package com.ynxbd.common.action.pay;
import com.alibaba.fastjson.JSONObject;
import com.ynxbd.ali.helper.AliMIHelper;
import com.ynxbd.ali.helper.AliMedHelper;
import com.ynxbd.common.action.base.BaseAction;
import com.ynxbd.common.bean.enums.MerchantEnum;
import com.ynxbd.common.bean.pay.Order;
@ -21,7 +21,7 @@ import com.ynxbd.common.service.MedicalService;
import com.ynxbd.common.service.params.RequestParams;
import com.ynxbd.wx.wxfactory.*;
import com.ynxbd.wx.wxfactory.bean.*;
import com.ynxbd.wx.wxfactory.medical.WechatMIConfig;
import com.ynxbd.wx.wxfactory.medical.WxMedConfig;
import com.ynxbd.wx.wxfactory.utils.MdRespHelper;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.ObjectUtils;
@ -117,7 +117,7 @@ public class MedicalAction extends BaseAction {
@Action("medicalAuth")
public Result medicalAuth(String openid, String qrCode) {
log.info("[医保建档] openid-{},qrCode={}", openid, qrCode);
MedicalUserInfo info = WxFactory.Medical.Common().getUserInfo(WechatMIConfig.PARTNER_URL, openid, qrCode);
MedicalUserInfo info = WxFactory.Medical.Common().getUserInfo(WxMedConfig.PARTNER_URL, openid, qrCode);
log.info("[医保建档获取用户信息] resp-{}", info);
return Result.success(info);
}
@ -220,6 +220,9 @@ public class MedicalAction extends BaseAction {
if (openid == null || qrCode == null || outTradeNo == null || tradeNo == null) {
return Result.error(ResultEnum.PARAM_IS_DEFECT);
}
if (!WxMedConfig.IS_DEV) {
return Result.error("环境异常调用失败");
}
MerchantEnum merchantEnum = MerchantEnum.findEnumByCode(payCode);
if (merchantEnum == null) { // 支付方式异常
@ -331,7 +334,7 @@ public class MedicalAction extends BaseAction {
return Result.error(order.getMessage());
} else if (merchantEnum.equals(MerchantEnum.ALI_MEDICAL)) {
Order order = AliMIHelper.queryTrade(outTradeNo, medTransId);
Order order = AliMedHelper.queryTrade(outTradeNo, medTransId);
order.setOrderObj(orderObj);
if (order.hasErrorMsg()) {
return Result.error(order.getErrorMsg());
@ -367,10 +370,10 @@ public class MedicalAction extends BaseAction {
@Action("payNotify")
public Result payNotify() {
try {
log.info("[微信][医保]回调通知...");
log.info("[微信医保]回调通知...");
MedicalNotify notifyInfo = WxMedicalHelper.paidMINotify(request);
// 成功返回
Result.respXml(MdRespHelper.respOk(WechatMIConfig.PAY_KEY));
Result.respXml(MdRespHelper.respOk(WxMedConfig.PAY_KEY));
String openid = notifyInfo.getOpenid();
String bankTransNo = notifyInfo.getMedTransId();
@ -382,13 +385,13 @@ public class MedicalAction extends BaseAction {
String notifyType = notifyInfo.getAttach();
log.info("[微信][医保][{}] 收到通知 outTradeNo={}, bankTransNo={}, notifyType={}",
log.info("[微信医保][{}] 收到通知 outTradeNo={}, bankTransNo={}, notifyType={}",
notifyType, outTradeNo, bankTransNo, notifyType);
new MedicalService().commonNotify(MerchantEnum.WX_MEDICAL, notifyType, outTradeNo, totalFee, bankTransNo, payDate, payTime, openid, payInfo);
return null;
} catch (ServiceException e) {
return Result.respXml(MdRespHelper.resp(e, WechatMIConfig.PAY_KEY));
return Result.respXml(MdRespHelper.resp(e, WxMedConfig.PAY_KEY));
}
}

@ -1,22 +1,36 @@
package com.ynxbd.common.action.pay;
import com.ynxbd.ali.config.AliMIConfig;
import com.alibaba.fastjson.JSONObject;
import com.ynxbd.ali.config.AliMedConfig;
import com.ynxbd.ali.helper.AliMedHelper;
import com.ynxbd.common.action.base.BaseAction;
import com.ynxbd.common.bean.HisRecipe;
import com.ynxbd.common.bean.enums.MerchantEnum;
import com.ynxbd.common.bean.his.HisTreat;
import com.ynxbd.common.bean.pay.Recipe;
import com.ynxbd.common.config.interceptor.AesDecode;
import com.ynxbd.common.dao.RecipeDao;
import com.ynxbd.common.dao.his.HisMIDao;
import com.ynxbd.common.dao.his.HisMITestDao;
import com.ynxbd.common.dao.his.HisTreatDao;
import com.ynxbd.common.helper.common.DateHelper;
import com.ynxbd.common.helper.common.JsonHelper;
import com.ynxbd.common.result.JsonResult;
import com.ynxbd.common.result.Result;
import com.ynxbd.common.result.ResultEnum;
import com.ynxbd.common.result.ServiceException;
import com.ynxbd.common.service.RecipeService;
import com.ynxbd.wx.wxfactory.WxCacheHelper;
import com.ynxbd.wx.wxfactory.WxMedicalHelper;
import com.ynxbd.wx.wxfactory.bean.MIOrder;
import com.ynxbd.wx.wxfactory.medical.WechatMIConfig;
import com.ynxbd.wx.wxfactory.medical.WxMedConfig;
import lombok.extern.slf4j.Slf4j;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Namespace;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
@ -38,7 +52,7 @@ public class MedicalTestAction extends BaseAction {
return Result.error(ResultEnum.PARAM_IS_DEFECT);
}
if (!WechatMIConfig.IS_DEV && !AliMIConfig.IS_DEV) {
if (!WxMedConfig.IS_DEV && !AliMedConfig.IS_DEV) {
return Result.error("环境错误");
}
@ -64,11 +78,11 @@ public class MedicalTestAction extends BaseAction {
if (patientId == null || begDate == null || endDate == null) {
return Result.error(ResultEnum.PARAM_IS_DEFECT);
}
if (!WechatMIConfig.IS_DEV && !AliMIConfig.IS_DEV) {
if (!WxMedConfig.IS_DEV && !AliMedConfig.IS_DEV) {
return Result.error("环境错误");
}
List<HisRecipe> hisRecipeList = HisMITestDao.devPaidRecipeList(patientId, begDate, endDate);
List<HisRecipe> hisRecipeList = HisMITestDao.devPaidRecipeList(patientId, begDate, endDate);
return Result.success(new RecipeService().filterPaidList(hisRecipeList));
}
@ -115,8 +129,7 @@ public class MedicalTestAction extends BaseAction {
*/
@Action("queryWxOrder")
public Result queryWxOrder(String accessToken, String outTradeNo, String medTransId) {
log.info("[医保]现金退费 outTradeNo={}, medTransId={}", outTradeNo, medTransId);
log.info("[微信医保]订单查询 outTradeNo={}, medTransId={}", outTradeNo, medTransId);
MIOrder order = WxMedicalHelper.queryOrder(accessToken, outTradeNo, medTransId);
if (order.isOk()) {
return Result.success(order);
@ -125,6 +138,106 @@ public class MedicalTestAction extends BaseAction {
}
/**
* [医保]HIS退费
*
*/
@Action("his_mi_refund")
public Result his_mi_refund(String payAuthNo, String tradeNo) {
log.info("[医保]HIS退费 payAuthNo={}, tradeNo={}", payAuthNo, tradeNo);
Recipe recipe = new RecipeDao().selectByTradeNo(tradeNo);
if (recipe == null) {
return Result.error(ResultEnum.DATA_NOT_FOUND);
}
if (!AliMedConfig.IS_DEV) {
return Result.error("环境异常调用失败");
}
log.info("[医保]HIS退费 rxInfo={}", JsonHelper.toJsonString(recipe));
String chrgBchno = recipe.getChrgBchno();
String bankTransNo = recipe.getBankTransNo();
BigDecimal cashFee = recipe.getPayMoney();
JsonResult jsonResult = HisMIDao.miRefund(MerchantEnum.ALI_MEDICAL, payAuthNo, chrgBchno.substring(1), bankTransNo, ("R" + tradeNo), cashFee);
return Result.success(jsonResult);
}
@Action("wx_med_refund_test")
public Result wx_med_refund_test() throws ServiceException {
WxMedicalHelper.refundCash("", "", new BigDecimal(""), "人工退费");
return Result.success();
}
@Action("ali_med_refund_test")
public Result ali_med_refund_test() throws Exception {
AliMedHelper.refundTrade("ALI_bb3c58c912384d6dc15affefad73", "ORD530100202509251522130008038", null, new BigDecimal("3.95"), "医保退费");
return Result.success();
}
@Action("wx_med_add_order")
public Result wx_med_add_order(String outTradeNo) {
try {
log.info("[医保]补充订单数据 outTradeNo={}", outTradeNo);
MIOrder order = WxMedicalHelper.queryOrder(WxCacheHelper.getAccessToken(), outTradeNo, null);
if (order == null || !order.isOk()) {
return Result.error("订单未找到");
}
if (!"PAYED".equals(order.getInsuranceTradeStatus())) {
return Result.error("订单未支付");
}
Recipe recipe = new Recipe();
recipe.setUpdateTime(new Date());
recipe.setOpenid(order.getOpenid());
recipe.setPayStatus(0);
recipe.setHisStatus(-1);
recipe.setOutTradeNo(outTradeNo);
recipe.setChrgBchno(order.getSerialNo());
recipe.setBankTransNo(order.getMedTransId());
JSONObject jsonObject = JsonHelper.parseObject(order.getRequestContent());
String payOrdId = jsonObject.getString("payOrdId");
recipe.setTradeNo(payOrdId);
recipe.setPayOrdId(payOrdId);
// ==========================
recipe.setPatientId("1xbd");
recipe.setMdTrtId("xbd-med");
recipe.setMdUserId("xbd-med");
recipe.setPayWay("0");
recipe.setHisResult("订单未调用HIS接口");
recipe.setTotalFee(order.getTotalFee());
recipe.setPayMoney(order.getCashFee());
recipe.setAcctFee(order.getInsuranceSelfFee());
recipe.setHifpFee(order.getInsuranceFundFee());
String body = order.getBody();
String treatNum = body == null ? null : body.substring(4);
recipe.setTreatNum(treatNum);
if (treatNum != null) {
List<HisTreat> dataList = new HisTreatDao().getInfoByTreatNum(treatNum);
if (!dataList.isEmpty()) {
HisTreat hisTreat = dataList.get(0);
if (hisTreat != null) {
recipe.setPatientId(hisTreat.getPatientId());
recipe.setDeptCode(hisTreat.getDeptCode());
recipe.setDeptName(hisTreat.getDeptName());
}
}
}
if (new RecipeDao().insertMedical(recipe)) {
log.info("[医保]补充订单数据 recipe={}", JsonHelper.toJsonString(recipe));
}
return Result.success();
} catch (Exception e) {
log.error("异常:{}", e.getMessage());
}
return Result.success();
}
//
// /**
@ -166,4 +279,5 @@ public class MedicalTestAction extends BaseAction {
// return Result.success(jsonResult);
// }
}

@ -1,28 +1,16 @@
package com.ynxbd.common.action.test;
import com.alibaba.fastjson.JSONObject;
import com.ynxbd.ali.helper.AliMIHelper;
import com.ynxbd.common.action.base.BaseAction;
import com.ynxbd.common.bean.his.HisTreat;
import com.ynxbd.common.bean.pay.Recipe;
import com.ynxbd.common.dao.RecipeDao;
import com.ynxbd.common.dao.his.HisTreatDao;
import com.ynxbd.common.helper.common.DateHelper;
import com.ynxbd.common.helper.common.JsonHelper;
import com.ynxbd.common.result.Result;
import com.ynxbd.common.result.ResultEnum;
import com.ynxbd.common.result.ServiceException;
import com.ynxbd.wx.wxfactory.WxCacheHelper;
import com.ynxbd.wx.wxfactory.WxMedicalHelper;
import com.ynxbd.wx.wxfactory.bean.MIOrder;
import com.ynxbd.wx.wxfactory.medical.WechatMIConfig;
import com.ynxbd.wx.wxfactory.medical.WxMedConfig;
import lombok.extern.slf4j.Slf4j;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Namespace;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
/**
* @Author wsq
@ -80,88 +68,14 @@ public class TestAction extends BaseAction {
@Action("test03")
public Result test03() throws ServiceException {
System.out.println("开关" + WechatMIConfig.IS_AUTO_REFUND);
System.out.println("开关" + WxMedConfig.IS_AUTO_REFUND);
log.info("日志测试");
System.out.println(System.getProperty("fileEncoding"));
System.out.println(System.getProperty("encoding"));
return Result.success();
}
@Action("wx_med_refund_test")
public Result wx_med_refund_test() throws ServiceException {
WxMedicalHelper.refundCash("WX_M202f622bb3444a033f7a014a421b", "ORD530100202505100932115202726", new BigDecimal("183.390"), "人工退费");
return Result.success();
}
@Action("ali_med_refund_test")
public Result ali_med_refund_test() throws Exception {
AliMIHelper.refundTrade("", "", null, new BigDecimal(""), "退费测试");
return Result.success();
}
@Action("md_add")
public Result md_add(String outTradeNo) {
try {
log.info("[医保]补充订单数据 outTradeNo={}", outTradeNo);
MIOrder order = WxMedicalHelper.queryOrder(WxCacheHelper.getAccessToken(), outTradeNo, null);
if (order == null || !order.isOk()) {
return Result.error("订单未找到");
}
if (!"PAYED".equals(order.getInsuranceTradeStatus())) {
return Result.error("订单未支付");
}
Recipe recipe = new Recipe();
recipe.setUpdateTime(new Date());
recipe.setOpenid(order.getOpenid());
recipe.setPayStatus(0);
recipe.setHisStatus(-1);
recipe.setOutTradeNo(outTradeNo);
recipe.setChrgBchno(order.getSerialNo());
recipe.setBankTransNo(order.getMedTransId());
JSONObject jsonObject = JsonHelper.parseObject(order.getRequestContent());
String payOrdId = jsonObject.getString("payOrdId");
recipe.setTradeNo(payOrdId);
recipe.setPayOrdId(payOrdId);
// ==========================
recipe.setPatientId("1xbd");
recipe.setMdTrtId("xbd-med");
recipe.setMdUserId("xbd-med");
recipe.setPayWay("0");
recipe.setHisResult("订单未调用HIS接口");
recipe.setTotalFee(order.getTotalFee());
recipe.setPayMoney(order.getCashFee());
recipe.setAcctFee(order.getInsuranceSelfFee());
recipe.setHifpFee(order.getInsuranceFundFee());
String body = order.getBody();
String treatNum = body == null ? null : body.substring(4);
recipe.setTreatNum(treatNum);
if (treatNum != null) {
List<HisTreat> dataList = new HisTreatDao().getInfoByTreatNum(treatNum);
if (!dataList.isEmpty()) {
HisTreat hisTreat = dataList.get(0);
if (hisTreat != null) {
recipe.setPatientId(hisTreat.getPatientId());
recipe.setDeptCode(hisTreat.getDeptCode());
recipe.setDeptName(hisTreat.getDeptName());
}
}
}
if (new RecipeDao().insertMedical(recipe)) {
log.info("[医保]补充订单数据 recipe={}", JsonHelper.toJsonString(recipe));
}
return Result.success();
} catch (Exception e) {
log.error("异常:{}", e.getMessage());
}
return Result.success();
}
// @Action("lock")

@ -1,7 +1,7 @@
package com.ynxbd.common.bean.enums;
import com.ynxbd.ali.config.AliMIConfig;
import com.ynxbd.wx.wxfactory.medical.WechatMIConfig;
import com.ynxbd.ali.config.AliMedConfig;
import com.ynxbd.wx.wxfactory.medical.WxMedConfig;
import lombok.ToString;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.ObjectUtils;
@ -47,7 +47,7 @@ public enum MerchantEnum {
"20", "21", "22"),
WX_MEDICAL("wx_medical", "【微信医保】",
WechatMIConfig.IS_DEV,
WxMedConfig.IS_DEV,
"4",
"10,11,12,13,14,15",
"medical/payNotify",
@ -55,7 +55,7 @@ public enum MerchantEnum {
"0", "1", "2"),
ALI_MEDICAL("ali_medical", "【支付宝医保】",
AliMIConfig.IS_DEV,
AliMedConfig.IS_DEV,
"3",
"25,26,27,28,29,30",
"ali_pay/medical_notify",

@ -14,6 +14,7 @@ import com.ynxbd.common.result.JsonResult;
import com.ynxbd.common.result.Result;
import com.ynxbd.common.result.ResultEnum;
import com.ynxbd.wx.wxfactory.bean.MedicalInfo;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.ObjectUtils;
import java.math.BigDecimal;
@ -22,6 +23,7 @@ import java.util.List;
import java.util.Map;
// HIS医保接口
@Slf4j
public class HisMIDao {
/**
@ -204,9 +206,9 @@ public class HisMIDao {
params.put("PayAuthNo", payAuthNo); // AUTH530100202206291132200000008
params.put("FPNum", fpNum);
params.put("PayWay", "4");
params.put("PayDeviceID", "mobile");
params.put("BankTransNo", bankTransNo);
params.put("TransNo", refundTradeNo);
params.put("PayDeviceID", "mobile");
params.put("PayMoney", cashFee); // 现金部分
});
}

@ -2,8 +2,8 @@ package com.ynxbd.common.service;
import com.alibaba.fastjson.JSONObject;
import com.alipay.api.response.AlipayTradeRefundApplyResponse;
import com.ynxbd.ali.config.AliMIConfig;
import com.ynxbd.ali.helper.AliMIHelper;
import com.ynxbd.ali.config.AliMedConfig;
import com.ynxbd.ali.helper.AliMedHelper;
import com.ynxbd.common.action.pay.PEnum;
import com.ynxbd.common.bean.enums.MerchantEnum;
import com.ynxbd.common.bean.pay.*;
@ -23,7 +23,7 @@ import com.ynxbd.wx.wxfactory.bean.MedicalInfo;
import com.ynxbd.wx.wxfactory.bean.MIOrder;
import com.ynxbd.wx.wxfactory.bean.MedicalUserInfo;
import com.ynxbd.wx.wxfactory.bean.OrderMIEnum;
import com.ynxbd.wx.wxfactory.medical.WechatMIConfig;
import com.ynxbd.wx.wxfactory.medical.WxMedConfig;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.ObjectUtils;
@ -38,7 +38,7 @@ public class MedicalService {
if (ObjectUtils.isEmpty(openid)) {
return null;
}
return openid.equals(WechatMIConfig.DEV_OPENID) || openid.equals(AliMIConfig.DEV_OPENID);
return openid.equals(WxMedConfig.DEV_OPENID) || openid.equals(AliMedConfig.DEV_OPENID);
}
public void commonNotify(MerchantEnum merchantEnum, String notifyType, String outTradeNo, BigDecimal totalFee, String bankTransNo, String payDate, String payTime, String openid, String payInfo) {
@ -114,7 +114,8 @@ public class MedicalService {
payAuthNo = userInfo.getPayAuthNo();
}
log.info("[医保]上传明细:patientId={}, totalFee={}, cardNo={}, recipeJson={}", patientId, totalFee, cardNo, recipeJson);
// 测试报告内容[2]
log.info("{}[HIS医保上传明细] req={patientId:{}, treatNum={}, totalFee:{}, cardNo:{}, recipeJson:{}}", merchantEnum.NAME, patientId, treatNum, totalFee, cardNo, recipeJson);
JsonResult result = HisMIDao.rxMIUploadFeeDetails(merchantEnum, payAuthNo, cardNo, openid, patientId, treatNum, recipeJson, totalFee, ybAttrib, ybBZCode, ybBZName);
return hisMIPlaceOrder(merchantEnum, payAuthNo, result);
}
@ -216,9 +217,9 @@ public class MedicalService {
throw new ServiceException("【支付宝】医保授权码medicalCardId为空");
}
Order order = hasDBOrder ? AliMIHelper.queryTrade(outTradeNo, null) : new Order();
Order order = hasDBOrder ? AliMedHelper.queryTrade(outTradeNo, null) : new Order();
String notifyUrl = WeChatConfig.getHttpsBaseUrl() + merchantEnum.getNotifyUrl(outTradeNo, notifyType);
Map<String, Object> map = AliMIHelper.createOrder(orderMIEnum,
Map<String, Object> map = AliMedHelper.createOrder(orderMIEnum,
openid,
outTradeNo,
chrgBchno,
@ -504,7 +505,7 @@ public class MedicalService {
return false;
}
if (!WechatMIConfig.IS_AUTO_REFUND) {
if (!WxMedConfig.IS_AUTO_REFUND) {
log.info("[医保][挂号]现金自动退费功能未开启 outTradeNo={}, bankTransNo={}, tradeNo={}", outTradeNo, bankTransNo, tradeNo);
return false;
}
@ -536,7 +537,7 @@ public class MedicalService {
apiResult.setSuccess(order.isOk());
apiResult.setMessage(order.isOk() ? WxPayHelper.OK : order.getMessage());
} else {
log.info("[支付宝][医保]未开通自动退费.....");
log.info("[支付宝医保]未开通自动退费.....");
apiResult.setMessage("[支付宝]未启用自动退费");
}
return apiResult;
@ -626,7 +627,7 @@ public class MedicalService {
return false;
}
if (!WechatMIConfig.IS_AUTO_REFUND) {
if (!WxMedConfig.IS_AUTO_REFUND) {
log.info("[医保][处方][现金自动退费]功能未开启 outTradeNo={}, bankTransNo={}, tradeNo={}", outTradeNo, bankTransNo, tradeNo);
return false;
}
@ -679,7 +680,7 @@ public class MedicalService {
// 医保退费-必须先执行
log.info("[医保][处方][个账]退费开始 tradeNo={}, payAuthNo={}, fpNum={}", tradeNo, payAuthNo, fpNum);
JsonResult jsonResult = HisMIDao.miRefund(MerchantEnum.WX, payAuthNo, fpNum, bankTransNo, ("R" + tradeNo), cashFee);
JsonResult jsonResult = HisMIDao.miRefund(MerchantEnum.WX_MEDICAL, payAuthNo, fpNum, bankTransNo, ("R" + tradeNo), cashFee);
if (!jsonResult.success()) { // 失败
log.info("[医保][处方][个账]退费失败 outTradeNo={}, bankTransNo={}, tradeNo={}", outTradeNo, bankTransNo, tradeNo);
String message = jsonResult.getMessage();
@ -724,7 +725,7 @@ public class MedicalService {
} else {
// 支付宝
AlipayTradeRefundApplyResponse respBody = AliMIHelper.refundTrade(outTradeNo, outRefundNo, tradeNo, cashFee, "线上退费");
AlipayTradeRefundApplyResponse respBody = AliMedHelper.refundTrade(outTradeNo, outRefundNo, tradeNo, cashFee, "线上退费");
boolean isOk = respBody != null;
log.info("[支付宝][处方][现金]退费{} outTradeNo={}, bankTransNo={}, tradeNo={}", (isOk ? "成功" : "失败"), outTradeNo, bankTransNo, tradeNo);
if (isOk) {

@ -9,7 +9,7 @@ import com.ynxbd.wx.config.WeChatConfig;
import com.ynxbd.wx.wxfactory.base.auth.models.RespAccessToken;
import com.ynxbd.wx.wxfactory.base.auth.models.RespJsapiTicket;
import com.ynxbd.wx.wxfactory.bean.*;
import com.ynxbd.wx.wxfactory.medical.WechatMIConfig;
import com.ynxbd.wx.wxfactory.medical.WxMedConfig;
import com.ynxbd.wx.wxfactory.medical.enums.MdRefundTypeEnum;
import com.ynxbd.wx.wxfactory.utils.WxSignHelper;
import lombok.extern.slf4j.Slf4j;
@ -34,7 +34,7 @@ public class WxMedicalHelper {
*/
public static MedicalUserInfo getUserInfo(String openid, String qrCode, String cardNo, String realName) throws ServiceException {
log.info("[医保]获取用户信息 openid={}, qrCode={}", openid, qrCode);
MedicalUserInfo info = WxFactory.Medical.Common().getUserInfo(WechatMIConfig.PARTNER_URL, openid, qrCode);
MedicalUserInfo info = WxFactory.Medical.Common().getUserInfo(WxMedConfig.PARTNER_URL, openid, qrCode);
if (info == null || !info.isSuccess()) {
String message = info == null ? "授权失败" : info.getMessage();
log.info("[医保授权]失败 {}", message);
@ -78,7 +78,7 @@ public class WxMedicalHelper {
}
// 签名验证
if (!WxSignHelper.validateSign(paramsMap, WechatMIConfig.PAY_KEY)) { // 验证未通过,通知支付失败
if (!WxSignHelper.validateSign(paramsMap, WxMedConfig.PAY_KEY)) { // 验证未通过,通知支付失败
throw new ServiceException("[医保]回调通知签名验证未通过!");
}
@ -156,8 +156,8 @@ public class WxMedicalHelper {
, outTradeNo, openid, cardNo, realName, payOrdId, payAuthNo, totalFee, insuranceFee, cashFee, familyType, familyName, familyCardNo);
MedicalPayOrder order = WxFactory.Medical.Common().createOrder(OrderMIEnum, WxCacheHelper.getAccessToken(),
WechatMIConfig.MD_APP_ID, WeChatConfig.MCH_ID, WechatMIConfig.PAY_KEY,
WechatMIConfig.CITY_CODE, WechatMIConfig.HOSPITAL_NAME, WechatMIConfig.ORG_NO, WechatMIConfig.CHANNEL,
WxMedConfig.MD_APP_ID, WeChatConfig.MCH_ID, WxMedConfig.PAY_KEY,
WxMedConfig.CITY_CODE, WxMedConfig.HOSPITAL_NAME, WxMedConfig.ORG_NO, WxMedConfig.CHANNEL,
openid,
payAuthNo,
payOrdId,
@ -204,9 +204,9 @@ public class WxMedicalHelper {
public static MIOrder queryOrder(String accessToken, String outTradeNo, String medTransId) {
return WxFactory.Medical.Common().queryOrder(
accessToken,
WechatMIConfig.MD_APP_ID,
WxMedConfig.MD_APP_ID,
WeChatConfig.MCH_ID,
WechatMIConfig.PAY_KEY,
WxMedConfig.PAY_KEY,
outTradeNo,
medTransId);
}
@ -252,9 +252,9 @@ public class WxMedicalHelper {
public static MIOrder refund(String outTradeNo, String outRefundNo, String payOrdId, BigDecimal cashFee, String reason) {
return WxFactory.Medical.Common().refund(
WxCacheHelper.getAccessToken(),
WechatMIConfig.MD_APP_ID,
WxMedConfig.MD_APP_ID,
WeChatConfig.MCH_ID,
WechatMIConfig.PAY_KEY,
WxMedConfig.PAY_KEY,
outTradeNo,
outRefundNo,
payOrdId,
@ -270,9 +270,9 @@ public class WxMedicalHelper {
public static MIOrder refundCash(String outTradeNo, String outRefundNo, String payOrdId, BigDecimal cashFee, String reason) {
return WxFactory.Medical.Common().refund(
WxCacheHelper.getAccessToken(),
WechatMIConfig.MD_APP_ID,
WxMedConfig.MD_APP_ID,
WeChatConfig.MCH_ID,
WechatMIConfig.PAY_KEY,
WxMedConfig.PAY_KEY,
outTradeNo,
outRefundNo,
payOrdId,
@ -297,9 +297,9 @@ public class WxMedicalHelper {
return WxFactory.Medical.Common().downBill(
WxCacheHelper.getAccessToken(),
WechatMIConfig.MD_APP_ID,
WxMedConfig.MD_APP_ID,
WeChatConfig.MCH_ID,
WechatMIConfig.PAY_KEY,
WxMedConfig.PAY_KEY,
billDate,
billType);
}
@ -311,9 +311,9 @@ public class WxMedicalHelper {
public static MedicalRefundInfo queryRefund(String accessToken, String outTradeNo, String mdTransId) {
return WxFactory.Medical.Common().queryRefund(
accessToken,
WechatMIConfig.MD_APP_ID,
WxMedConfig.MD_APP_ID,
WeChatConfig.MCH_ID,
WechatMIConfig.PAY_KEY,
WxMedConfig.PAY_KEY,
outTradeNo,
mdTransId);
}
@ -330,7 +330,7 @@ public class WxMedicalHelper {
return cacheToken;
}
RespAccessToken response = WxFactory.Base.OAuth().getAccessToken(WechatMIConfig.MD_APP_ID, WechatMIConfig.MD_APP_SECRET);
RespAccessToken response = WxFactory.Base.OAuth().getAccessToken(WxMedConfig.MD_APP_ID, WxMedConfig.MD_APP_SECRET);
if (!response.isSuccess()) {
log.error("[微信]access_token请求失败 code={}, message={}", response.getErrCode(), response.getErrMsg());
return null;

@ -2,7 +2,7 @@ package com.ynxbd.wx.wxfactory;
import com.ynxbd.common.result.JsonResult;
import com.ynxbd.wx.config.WeChatConfig;
import com.ynxbd.wx.wxfactory.medical.WechatMIConfig;
import com.ynxbd.wx.wxfactory.medical.WxMedConfig;
import com.ynxbd.wx.wxfactory.message.MdClient;
import lombok.extern.slf4j.Slf4j;
@ -26,7 +26,7 @@ public class WxMessageHelper {
public static void regPush(String url, Integer status, String patCardNo, String patName, String patHospitalId, String deptName, String docName, String appointmentTime, String memo) {
JsonResult result = new MdClient().push(WxCacheHelper.getAccessToken(), WeChatConfig.APP_ID, 9001, "123",
messageType -> messageType.reg(
WechatMIConfig.HOSPITAL_NAME,
WxMedConfig.HOSPITAL_NAME,
url,
status,
patCardNo,

@ -7,7 +7,6 @@ import com.ynxbd.common.helper.common.ErrorHelper;
import com.ynxbd.common.helper.common.JsonHelper;
import com.ynxbd.common.helper.http.OkHttpHelper;
import com.ynxbd.common.result.JsonResult;
import com.ynxbd.wx.wxfactory.WxFactory;
import com.ynxbd.wx.wxfactory.bean.*;
import com.ynxbd.wx.wxfactory.medical.enums.MdRefundTypeEnum;
import com.ynxbd.wx.wxfactory.utils.WxRequestHelper;
@ -32,7 +31,7 @@ public class Client {
* @param url url
*/
public String getAuthUrl(String url) {
String configUrl = WechatMIConfig.getConfigUrl(url);
String configUrl = WxMedConfig.getConfigUrl(url);
log.info("[医保]免密授权地址-{}", configUrl);
return configUrl;
}
@ -118,7 +117,7 @@ public class Client {
//==========================================================
params.put("hospital_name", hospitalName); //
if (WechatMIConfig.IS_DEV) {
if (WxMedConfig.IS_DEV) {
params.put("use_sandbox", 1);
}
@ -141,10 +140,11 @@ public class Client {
params.put("channel_no", channel); // 渠道号
//----------------------------------------------------------------
params.put("sign", WxSignHelper.generateSign(params, WxSignHelper.SIGN_TYPE_MD5, mdPayKey));
log.info("[医保][下单] req={}", JsonHelper.toJsonString(params));
// [微信医保]测试报告内容[3]
log.info("[微信医保][下单] req={}", JsonHelper.toJsonString(params));
});
log.info("[医保][下单] resp={}", JsonHelper.toJsonString(jsonResult));
log.info("[微信医保][下单] resp={}", JsonHelper.toJsonString(jsonResult));
if (!jsonResult.success()) {
return new MedicalPayOrder().createResult(jsonResult);
}
@ -325,11 +325,11 @@ public class Client {
* @return 用户信息
*/
public MedicalUserInfo getUserInfo(String reqUrl, String openid, String qrcode) {
log.info("[医保]用户授权地址-{}", reqUrl);
log.info("[微信医保][授权]请求地址-{}", reqUrl);
MedicalUserInfo info = new MedicalUserInfo();
String timestamp = Long.toString(System.currentTimeMillis());
String signature = WechatMIConfig.createSignature(timestamp);
String signature = WxMedConfig.createSignature(timestamp);
if (signature == null) {
info.setMessage("signature签名错误");
return info;
@ -337,7 +337,8 @@ public class Client {
JSONObject respJson = OkHttpHelper.postForm(reqUrl, params -> {
params.put("qrcode", qrcode);
params.put("openid", openid);
log.info("[医保][授权] req={}", JsonHelper.toJsonString(params));
// [微信医保]测试报告内容[1]
log.info("[微信医保][授权] req={}", JsonHelper.toJsonString(params));
}, headers -> {
headers.set("Accept", "application/json");
headers.set("Content-Type", "application/json");
@ -353,7 +354,7 @@ public class Client {
String code = respJson.getString("code");
String message = respJson.getString("message");
if (!"0".equals(code)) {
log.error("[医保授权]失败 resp={}", respJson);
log.error("[微信医保][授权]失败 resp={}", respJson);
info.setMessage(String.format("[%s] %s", code, message));
return info;
@ -375,7 +376,7 @@ public class Client {
info.setCardNo(cardNo);
respJson.remove("user_card_no");
}
log.error("[医保授权]返回 resp={}", respJson);
log.error("[微信医保][授权]返回 resp={}", respJson);
info.setUserName(userName);
info.setPayAuthNo(payAuthNo);

@ -9,8 +9,8 @@ import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
public class WechatMIConfig {
private WechatMIConfig() {
public class WxMedConfig {
private WxMedConfig() {
}
// 免密授权

@ -1,14 +1,15 @@
# \u533B\u4FDD\u914D\u7F6E
mi_ali.is_dev=true
mi_ali.is_enable=true
mi_ali.is_auto_refund=true
med_ali.is_dev=true
med_ali.is_enable=true
med_ali.is_auto_refund=true
# \u5B9A\u70B9\u533B\u7597\u673A\u6784\u540D\u79F0\uFF08\u652F\u4ED8\u5B9D\u53EF\u80FD\u4E0D\u540C\uFF09
mi_ali.org_hospital_name=\u4E91\u5357\u7701\u6EC7\u5357\u4E2D\u5FC3\u533B\u9662
med_ali.org_hospital_name=\u4E91\u5357\u7701\u6EC7\u5357\u4E2D\u5FC3\u533B\u9662
# \u57CE\u5E02\u7F16\u7801
med_ali.city_code=530700
# \u533B\u4FDD\uFF08PDF\u6587\u6863\uFF09----------------------------------------------------------------------------------
# \u5B9A\u70B9\u533B\u836F\u673A\u6784\u7F16\u7801
mi_ali.org_no=H53250301796
med_ali.org_no=H53250301796
# \u5B9A\u70B9\u533B\u836F\u673A\u6784\u5C0F\u7A0B\u5E8F/h5\u5E94\u7528id\uFF08\u6B63\u5F0F\u73AF\u5883\uFF1A\u6E20\u9053\u7F16\u53F7\uFF09
mi_ali.org_app_id=1J06MILHV0JM4460C80A0000F05B9B68
med_ali.org_app_id=1J06MILHV0JM4460C80A0000F05B9B68
# \u5B9A\u70B9\u533B\u836F\u673A\u6784\u6E20\u9053\u8BA4\u8BC1\u7F16\u7801
mi_ali.org_chnl_crtf_codg=BqK1kMStlhVDgN2uHf4EsP9BQzovPtfTZGwRsyhqMMY05hWhBzmfAN/glcC2Qe8q
med_ali.org_chnl_crtf_codg=BqK1kMStlhVDgN2uHf4EsP9BQzovPtfTZGwRsyhqMMY05hWhBzmfAN/glcC2Qe8q

Loading…
Cancel
Save