You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
			
				
					77 lines
				
				3.1 KiB
			
		
		
			
		
	
	
					77 lines
				
				3.1 KiB
			| 
											3 years ago
										 | package com.ynxbd.common.action;
 | ||
|  | 
 | ||
|  | import com.ynxbd.common.action.base.BaseAction;
 | ||
|  | import com.ynxbd.common.bean.enums.MerchantEnum;
 | ||
|  | import com.ynxbd.common.bean.pay.Order;
 | ||
|  | import com.ynxbd.common.helper.common.CodeHelper;
 | ||
|  | import com.ynxbd.common.helper.common.HttpHelper;
 | ||
|  | import com.ynxbd.common.result.Result;
 | ||
|  | import com.ynxbd.common.result.ResultEnum;
 | ||
|  | import com.ynxbd.common.service.OutCollectService;
 | ||
|  | import com.ynxbd.common.service.PayService;
 | ||
|  | import com.ynxbd.wx.wxfactory.WxPayHelper;
 | ||
|  | import lombok.extern.slf4j.Slf4j;
 | ||
|  | import org.apache.struts2.convention.annotation.Action;
 | ||
|  | import org.apache.struts2.convention.annotation.Namespace;
 | ||
|  | 
 | ||
|  | import java.math.BigDecimal;
 | ||
|  | 
 | ||
|  | @Slf4j
 | ||
|  | @Namespace("/wechat_mini")
 | ||
|  | public class WechatMiniAction extends BaseAction {
 | ||
|  | 
 | ||
|  |     /**
 | ||
|  |      * [外采支付]
 | ||
|  |      *
 | ||
|  |      * @param authCode    二维码授权码
 | ||
|  |      * @param title       标题
 | ||
|  |      * @param operateUser 操作人
 | ||
|  |      * @param totalFee    总金额
 | ||
|  |      * @return Y|N
 | ||
|  |      */
 | ||
|  |     @Action("miniPayMicro")
 | ||
|  |     public Result microPay(String authCode, String title, String operateUser, BigDecimal totalFee, String barCode, String patientId, String cardNo, String mid) {
 | ||
|  |         Result result = PayService.isNoPay();
 | ||
|  |         if (result != null) {
 | ||
|  |             return result;
 | ||
|  |         }
 | ||
|  | 
 | ||
|  |         MerchantEnum merchantEnum = MerchantEnum.getMerchantEnumByAuthCode(authCode);
 | ||
|  |         if (merchantEnum == null) {
 | ||
|  |             log.info("[外采支付]条码不符合规则 authCode={}", authCode);
 | ||
|  |             return Result.error(ResultEnum.PAY_AUTH_CODE_RULES_ERROR); // 条码不符合规则
 | ||
|  |         }
 | ||
|  | 
 | ||
|  |         log.info("{} 外采支付 title={},  totalFee={}", merchantEnum.NAME, title, totalFee);
 | ||
|  |         if (operateUser == null || authCode == null || title == null || totalFee == null) {
 | ||
|  |             return Result.error(ResultEnum.PARAM_IS_DEFECT);
 | ||
|  |         }
 | ||
|  | 
 | ||
|  |         String ip = HttpHelper.getIpAddress(request);
 | ||
|  |         String outTradeNo = CodeHelper.getOutTradeNo(merchantEnum);
 | ||
|  | 
 | ||
|  |         Order order = PayService.payMicro(merchantEnum, outTradeNo, title, totalFee, authCode, ip);
 | ||
|  |         if (!order.isSuccess()) {
 | ||
|  |             log.info("[外采支付]订单号={}, errMsg={}", outTradeNo, order.getErrorMsg());
 | ||
|  |             // 等待输入密码
 | ||
|  |             if (WxPayHelper.USER_PAYING.equals(order.getTradeState())) {
 | ||
|  |                 return Result.error(ResultEnum.PAY_NEED_PASSWORD, order.getOutTradeNo(), order.getErrorMsg());
 | ||
|  |             }
 | ||
|  |             return Result.error(ResultEnum.ERROR, order.getOutTradeNo(), order.getErrorMsg());
 | ||
|  |         }
 | ||
|  | 
 | ||
|  |         order.setOperateUser(operateUser);
 | ||
|  |         order.setTotalFee(totalFee);
 | ||
|  |         order.setAuthCode(authCode);
 | ||
|  |         order.setPatientId(patientId);
 | ||
|  |         order.setOpenid(mid);
 | ||
|  |         order.setPayWay(merchantEnum.PAY_WAY_MICRO);
 | ||
|  |         Order orderResult = new OutCollectService().ocPayMicro(order, barCode, cardNo);
 | ||
|  | 
 | ||
|  |         return orderResult.isSuccess()
 | ||
|  |                 ? Result.success(outTradeNo)
 | ||
|  |                 : Result.error(ResultEnum.ERROR, outTradeNo, orderResult.getErrorMsg());
 | ||
|  |     }
 | ||
|  | 
 | ||
|  | }
 |