|
|
|
@ -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; |
|
|
|
@ -170,6 +171,7 @@ public class PayAction extends BaseAction { |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 体检退费 |
|
|
|
|
* |
|
|
|
|
* @param recipeId 订单号 |
|
|
|
|
* @param payCode 支付方式 |
|
|
|
|
* @param totalFee 订单金额 |
|
|
|
@ -190,8 +192,7 @@ public class PayAction extends BaseAction { |
|
|
|
|
Result result = peisService.peisAutoRefund(recipeId, merchantEnum, outTradeNo, new BigDecimal(totalFee), pushMessage, new Date(), openid); |
|
|
|
|
if (result.isSuccess()) { |
|
|
|
|
peisService.peisRefund(recipeId, "OK", ""); |
|
|
|
|
} |
|
|
|
|
else { |
|
|
|
|
} else { |
|
|
|
|
peisService.peisRefund(recipeId, "FAIL", result.getMessage()); |
|
|
|
|
} |
|
|
|
|
return result; |
|
|
|
@ -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) { |
|
|
|
|
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); |
|
|
|
|
} |
|
|
|
|