下单接口调整

debug
wangsq 1 year ago
parent cd6c23c789
commit 3eced532c7
  1. 75
      src/main/java/com/ynxbd/common/action/pay/PayAction.java

@ -21,6 +21,7 @@ import com.ynxbd.common.result.ServiceException;
import com.ynxbd.common.service.*;
import com.ynxbd.common.service.params.RegParams;
import com.ynxbd.wx.config.WeChatConfig;
import com.ynxbd.wx.wxfactory.ReqParamHelper;
import com.ynxbd.wx.wxfactory.WxPayHelper;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.codec.digest.DigestUtils;
@ -131,19 +132,19 @@ public class PayAction extends BaseAction {
/**
* @param openid openid
* @param patientId 患者id
* @param treatNum 体检号
* @param totalFee 总金额
* @param recipeId 处方号
* @param payCode 支付方式
* @param openid openid
* @param patientId 患者id
* @param treatNum 体检号
* @param totalFee 总金额
* @param recipeId 处方号
* @param payCode 支付方式
*/
@Action("PeisPay")
public Result PeisPay(String openid, String patientId, String treatNum, String totalFee, String recipeId,String payCode){
if(openid==null||patientId==null||treatNum==null||totalFee==null||recipeId==null){
public Result PeisPay(String openid, String patientId, String treatNum, String totalFee, String recipeId, String payCode) {
if (openid == null || patientId == null || treatNum == null || totalFee == null || recipeId == null) {
return Result.error(ResultEnum.PARAM_IS_DEFECT);
}
if(new BigDecimal(totalFee).compareTo(BigDecimal.ZERO)==0){
if (new BigDecimal(totalFee).compareTo(BigDecimal.ZERO) == 0) {
return Result.error(ResultEnum.PAY_MONEY_IS_ZERO);
}
MerchantEnum merchantEnum = MerchantEnum.getMerchantEnumByCode(payCode);
@ -152,13 +153,13 @@ public class PayAction extends BaseAction {
}
String outTradeNo = CodeHelper.getOutTradeNo(merchantEnum);
PeisService peisService = new PeisService();
if(!peisService.Reserve(openid,patientId,treatNum,outTradeNo,totalFee,recipeId)){
log.info("{} [体检预约]体检预约信息保存失败 patientId={},recipeId-{}", merchantEnum.NAME, patientId,recipeId);
if (!peisService.Reserve(openid, patientId, treatNum, outTradeNo, totalFee, recipeId)) {
log.info("{} [体检预约]体检预约信息保存失败 patientId={},recipeId-{}", merchantEnum.NAME, patientId, recipeId);
return Result.error(ResultEnum.SPECIFIED_QUESTIONED_USER_NOT_EXIST);
}
String ip = request.getRemoteAddr();
String body = "体检预约 患者:" + patientId + "\n体检号:" + treatNum + "\n订单号:" + recipeId;
String body = "体检预约 患者:" + patientId + "\n体检号:" + treatNum + "\n订单号:" + recipeId;
JSONObject respJson = PayService.createOrder(merchantEnum, openid, patientId, totalFee, outTradeNo, PEnum.PEIS_RESERVE.CODE, ip, body);
// 支付异常
if (respJson == null) {
@ -170,29 +171,29 @@ public class PayAction extends BaseAction {
/**
* 体检退费
* @param recipeId 订单号
* @param payCode 支付方式
* @param totalFee 订单金额
*
* @param recipeId 订单号
* @param payCode 支付方式
* @param totalFee 订单金额
* @param outTradeNo outTradeNo
* @param openid openid
* @param openid openid
*/
@Action("peisRefund")
public Result peisRefund(String recipeId, String payCode, String outTradeNo, String totalFee,String openid){
log.info("[体检预约]取消预约退费,recipeId-{}.payCode-{},outTradeNo-{},totalFee-{},openid-{}",recipeId,payCode,outTradeNo,totalFee,openid);
public Result peisRefund(String recipeId, String payCode, String outTradeNo, String totalFee, String openid) {
log.info("[体检预约]取消预约退费,recipeId-{}.payCode-{},outTradeNo-{},totalFee-{},openid-{}", recipeId, payCode, outTradeNo, totalFee, openid);
PeisService peisService = new PeisService();
MerchantEnum merchantEnum = MerchantEnum.getMerchantEnumByCode(payCode);
PeisDao peisDao = new PeisDao();
Recipe recipe = peisDao.selectByOutTradeNo(outTradeNo);
if(new BigDecimal(totalFee).compareTo(recipe.getTotalFee())!=0){
if (new BigDecimal(totalFee).compareTo(recipe.getTotalFee()) != 0) {
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());
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;
}
@ -504,7 +505,7 @@ public class PayAction extends BaseAction {
}
@Action("refundRegister")
public Result refundRegister(String hisTransNo){
public Result refundRegister(String hisTransNo) {
return new RegService().refundRegister(hisTransNo);
}
@ -807,16 +808,26 @@ public class PayAction extends BaseAction {
* [在线问诊]支付
*/
@Action("createOLOrder")
public Result createOLOrder(String payCode, String openid, String patientId, BigDecimal totalFee, String deptCode, String deptName, String doctName, String doctCode) {
if ( totalFee == null || ObjectUtils.isEmpty(openid) || ObjectUtils.isEmpty(patientId) || ObjectUtils.isEmpty(deptName) || ObjectUtils.isEmpty(doctName)) {
public Result createOLOrder(String payCode, String outTradeNo, String enOutTradeNo, String openid, String patientId, BigDecimal totalFee, String deptCode, String deptName, String doctName, String doctCode) {
log.info("[问诊]订单创建 payCode={}, outTradeNo={}, enOutTradeNo={}, deptCode={}, doctCode={}, totalFee={}", payCode, outTradeNo, enOutTradeNo, deptCode, doctCode, totalFee);
if (totalFee == null || ObjectUtils.isEmpty(openid) || ObjectUtils.isEmpty(patientId) || ObjectUtils.isEmpty(deptName) || ObjectUtils.isEmpty(doctName)) {
return Result.error(ResultEnum.PARAM_IS_DEFECT);
}
if (totalFee.compareTo(BigDecimal.ZERO) == 0) { // 0 元处理
return Result.error(ResultEnum.PAY_MONEY_IS_ZERO);
}
MerchantEnum merchantEnum = MerchantEnum.getMerchantEnumByCode(payCode);
String outTradeNo = CodeHelper.getOutTradeNo(merchantEnum);
if (ObjectUtils.isEmpty(outTradeNo)) {
outTradeNo = CodeHelper.getOutTradeNo(MerchantEnum.WX);
} else {
if (outTradeNo.length() > 32) {
return Result.error(ResultEnum.PARAM_IS_INVALID);
}
if (!outTradeNo.equals(ReqParamHelper.decode(enOutTradeNo))) {
return Result.error(ResultEnum.PARAM_IS_INVALID);
}
}
MerchantEnum merchantEnum = MerchantEnum.getMerchantEnumByCode(payCode);
if (merchantEnum == null) {
return Result.error(ResultEnum.PAY_TYPE_NOT_SUPPORT);
}
@ -827,7 +838,7 @@ public class PayAction extends BaseAction {
if (respJson == null) {
return Result.error(ResultEnum.PAY_ERROR); // 支付异常
}
respJson.put("outTradeNo",outTradeNo);
respJson.put("outTradeNo", outTradeNo);
return Result.success(respJson);
}

Loading…
Cancel
Save