java110
2022-08-28 bdfedffd7ae1bf7d119de4e2aa362005f0a39680
临时停车费支持支付宝支付
6个文件已修改
3个文件已添加
428 ■■■■ 已修改文件
java110-bean/src/main/java/com/java110/dto/fee/FeeDto.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-acct/src/main/java/com/java110/acct/cmd/alipay/NotifyPayTempCarFeeCmd.java 86 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-acct/src/main/java/com/java110/acct/cmd/alipay/PayTempCarFeeCmd.java 104 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-api/src/main/java/com/java110/api/controller/app/AliPayNotifyController.java 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-api/src/main/java/com/java110/api/smo/payment/ITempCarFeeToNotifySMO.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-api/src/main/java/com/java110/api/smo/payment/impl/TempCarFeeToNotifySMOImpl.java 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot/src/main/java/com/java110/boot/controller/app/AliPayNotifyController.java 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot/src/main/java/com/java110/boot/smo/payment/ITempCarFeeToNotifySMO.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot/src/main/java/com/java110/boot/smo/payment/impl/TempCarFeeToNotifySMOImpl.java 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-bean/src/main/java/com/java110/dto/fee/FeeDto.java
@@ -30,6 +30,7 @@
    public static final String FEE_FLAG_CYCLE_ONCE = "4012024";//间接性费用
    public static final String REDIS_PAY_OWE_FEE = "PAY_OWE_FEE_";
    public static final String REDIS_PAY_TEMP_CAR_FEE = "PAY_TEMP_CAR_FEE_";
    public static final String REDIS_PAY_TEMP_CAR_FEE_COMMUNITY = "REDIS_PAY_TEMP_CAR_FEE_COMMUNITY_";
    private String amount;
    private String incomeObjId;
service-acct/src/main/java/com/java110/acct/cmd/alipay/NotifyPayTempCarFeeCmd.java
New file
@@ -0,0 +1,86 @@
package com.java110.acct.cmd.alipay;
import com.alibaba.fastjson.JSONObject;
import com.alipay.api.AlipayApiException;
import com.alipay.api.internal.util.AlipaySignature;
import com.java110.core.annotation.Java110Cmd;
import com.java110.core.context.ICmdDataFlowContext;
import com.java110.core.event.cmd.Cmd;
import com.java110.core.event.cmd.CmdEvent;
import com.java110.core.factory.CommunitySettingFactory;
import com.java110.dto.fee.FeeDto;
import com.java110.intf.community.IParkingAreaV1InnerServiceSMO;
import com.java110.intf.fee.ITempCarFeeCreateOrderV1InnerServiceSMO;
import com.java110.intf.store.ISmallWechatV1InnerServiceSMO;
import com.java110.intf.user.IOwnerCarOpenUserV1InnerServiceSMO;
import com.java110.utils.cache.CommonCache;
import com.java110.utils.exception.CmdException;
import com.java110.utils.util.Assert;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import java.text.ParseException;
import java.util.LinkedHashMap;
@Java110Cmd(serviceCode = "alipay.notifyPayTempCarFee")
public class NotifyPayTempCarFeeCmd extends Cmd {
    @Autowired
    private IOwnerCarOpenUserV1InnerServiceSMO ownerCarOpenUserV1InnerServiceSMOImpl;
    @Autowired
    private IParkingAreaV1InnerServiceSMO parkingAreaV1InnerServiceSMOImpl;
    @Autowired
    private ISmallWechatV1InnerServiceSMO smallWechatV1InnerServiceSMOImpl;
    @Autowired
    private ITempCarFeeCreateOrderV1InnerServiceSMO tempCarFeeCreateOrderV1InnerServiceSMOImpl;
    @Override
    public void validate(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException {
        Assert.jsonObjectHaveKey(reqJson, "out_trade_no", "请求报文中未包含订单信息");
        Assert.jsonObjectHaveKey(reqJson, "sign", "请求报文中未包含签名信息");
        String communityId = CommonCache.getAndRemoveValue(FeeDto.REDIS_PAY_TEMP_CAR_FEE_COMMUNITY + reqJson.getString("out_trade_no"));
        String resultInfo = reqJson.getString("resultInfo");
        String[] temp = resultInfo.split("&");
        LinkedHashMap<String, String> map = new LinkedHashMap<String, String>();
        //把拆分数据放在map集合内
        for (int i = 0; i < temp.length; i++) {
            String[] arr = temp[i].split("=", 2); //通过"="号分割成2个数据
            String[] tempAagin = new String[arr.length]; //再开辟一个数组用来接收分割后的数据
            for (int j = 0; j < arr.length; j++) {
                tempAagin[j] = arr[j];
            }
            map.put(tempAagin[0], tempAagin[1]);
        }
        System.out.println(map);
        boolean signVerified = false;
        try {
            signVerified = AlipaySignature.rsaCheckV1(map,
                    CommunitySettingFactory.getRemark(communityId, "ALIPAY_PUBLIC_KEY")
                    , "UTF-8", "RSA2");
        } catch (AlipayApiException e) {
            throw new RuntimeException(e);
        }
        if (!signVerified) {
            throw new CmdException("签名失败");
        }
    }
    @Override
    public void doCmd(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException, ParseException {
        ResponseEntity responseEntity = null;
        JSONObject paramIn = new JSONObject();
        paramIn.put("oId", reqJson.getString("out_trade_no"));
        responseEntity = tempCarFeeCreateOrderV1InnerServiceSMOImpl.notifyOrder(paramIn);
        context.setResponseEntity(responseEntity);
    }
}
service-acct/src/main/java/com/java110/acct/cmd/alipay/PayTempCarFeeCmd.java
@@ -2,13 +2,18 @@
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.alipay.api.AlipayApiException;
import com.alipay.api.AlipayClient;
import com.alipay.api.DefaultAlipayClient;
import com.alipay.api.request.AlipayTradeCreateRequest;
import com.alipay.api.response.AlipayTradeCreateResponse;
import com.java110.core.annotation.Java110Cmd;
import com.java110.core.context.ICmdDataFlowContext;
import com.java110.core.context.IPageData;
import com.java110.core.event.cmd.Cmd;
import com.java110.core.event.cmd.CmdEvent;
import com.java110.core.factory.CallApiServiceFactory;
import com.java110.core.factory.CommunitySettingFactory;
import com.java110.core.factory.GenerateCodeFactory;
import com.java110.dto.fee.FeeDto;
import com.java110.dto.ownerCarOpenUser.OwnerCarOpenUserDto;
import com.java110.dto.parking.ParkingAreaDto;
import com.java110.dto.smallWeChat.SmallWeChatDto;
@@ -17,22 +22,20 @@
import com.java110.intf.store.ISmallWechatV1InnerServiceSMO;
import com.java110.intf.user.IOwnerCarOpenUserV1InnerServiceSMO;
import com.java110.po.ownerCarOpenUser.OwnerCarOpenUserPo;
import com.java110.utils.cache.CommonCache;
import com.java110.utils.cache.MappingCache;
import com.java110.utils.constant.WechatConstant;
import com.java110.utils.exception.CmdException;
import com.java110.utils.factory.ApplicationContextFactory;
import com.java110.utils.util.Assert;
import com.java110.utils.util.StringUtil;
import com.java110.utils.util.DateUtil;
import com.java110.vo.ResultVo;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpMethod;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@Java110Cmd(serviceCode = "alipay.payTempCarFee")
public class PayTempCarFeeCmd extends Cmd {
@@ -71,15 +74,7 @@
        Assert.listOnlyOne(parkingAreaDtos, "停车场不存在");
        reqJson.put("communityId", parkingAreaDtos.get(0).getCommunityId());
        SmallWeChatDto smallWeChatDto = getSmallWechat( reqJson);
        if (smallWeChatDto == null) { //从配置文件中获取 小程序配置信息
            smallWeChatDto = new SmallWeChatDto();
            smallWeChatDto.setAppId(MappingCache.getValue(WechatConstant.WECHAT_DOMAIN, "wechatAppId"));
            smallWeChatDto.setAppSecret(MappingCache.getValue(WechatConstant.WECHAT_DOMAIN, "wechatAppSecret"));
            smallWeChatDto.setMchId(MappingCache.getValue(WechatConstant.WECHAT_DOMAIN, "mchId"));
            smallWeChatDto.setPayPassword(MappingCache.getValue(WechatConstant.WECHAT_DOMAIN, "key"));
        }
        JSONArray couponList = reqJson.getJSONArray("couponList");
        List<String> couponIds = new ArrayList<String>();
        if (couponList != null && couponList.size() > 0) {
@@ -92,15 +87,15 @@
        reqJson.put("userId", "-1");
        JSONObject paramIn = new JSONObject();
        paramIn.put("paId",reqJson.getString("paId"));
        paramIn.put("carNum",reqJson.getString("carNum"));
        paramIn.put("machineId",reqJson.getString("machineId"));
        paramIn.put("couponIds",StringUtils.join(couponIds, ","));
        paramIn.put("paId", reqJson.getString("paId"));
        paramIn.put("carNum", reqJson.getString("carNum"));
        paramIn.put("machineId", reqJson.getString("machineId"));
        paramIn.put("couponIds", StringUtils.join(couponIds, ","));
        responseEntity = tempCarFeeCreateOrderV1InnerServiceSMOImpl.createOrder(paramIn);
        if (responseEntity.getStatusCode() != HttpStatus.OK) {
            context.setResponseEntity(responseEntity);
            return ;
            return;
        }
        JSONObject orderInfo = JSONObject.parseObject(responseEntity.getBody().toString());
        if (orderInfo.getIntValue("code") != 0) {
@@ -121,33 +116,30 @@
                param.put("code", "101");
                param.put("msg", "扣费为0回调失败");
                context.setResponseEntity(new ResponseEntity(JSONObject.toJSONString(param), HttpStatus.OK));
                return ;
                return;
            }
            param.put("code", "100");
            param.put("msg", "扣费为0回调成功");
            context.setResponseEntity(new ResponseEntity(JSONObject.toJSONString(param), HttpStatus.OK));
            return ;
            return;
        }
        String openId = reqJson.getString("openId");
        String payAdapt = MappingCache.getValue(WechatConstant.WECHAT_DOMAIN, WechatConstant.PAY_ADAPT);
        //payAdapt = StringUtil.isEmpty(payAdapt) ? DEFAULT_PAY_ADAPT : payAdapt;
        //支付适配器
//        IPayAdapt tPayAdapt = ApplicationContextFactory.getBean(payAdapt, IPayAdapt.class);
//        Map result = tPayAdapt.java110Payment(outRestTemplate, paramIn.getString("feeName"), paramIn.getString("tradeType"),
//                orderId, money, openId, smallWeChatDto, wechatAuthProperties.getTempCarFeeNotifyUrl());
   //     responseEntity = new ResponseEntity(JSONObject.toJSONString(result), HttpStatus.OK);
//        if (!"0".equals(result.get("code"))) {
//            context.setResponseEntity(responseEntity);
//            return ;
//        }
//        JSONObject saveFees = new JSONObject();
//        saveFees.put("orderId", paramIn.getString("inoutId"));
//        saveFees.put("carNum", paramIn.getString("carNum"));
//        saveFees.put("amount", money);
//        saveFees.put("paId", paramIn.getString("paId"));
//        saveFees.put("payTime", DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A));
//        saveFees.put("payType", "2");
//        CommonCache.setValue(FeeDto.REDIS_PAY_TEMP_CAR_FEE + orderId, saveFees.toJSONString(), CommonCache.PAY_DEFAULT_EXPIRE_TIME);
        ResultVo result = doAlipay(reqJson, paramIn.getString("feeName"), orderId, money, openId);
        responseEntity = new ResponseEntity(JSONObject.toJSONString(result), HttpStatus.OK);
        context.setResponseEntity(responseEntity);
        if (!"0".equals(result.getCode())) {
            return;
        }
        JSONObject saveFees = new JSONObject();
        saveFees.put("orderId", paramIn.getString("inoutId"));
        saveFees.put("carNum", paramIn.getString("carNum"));
        saveFees.put("amount", money);
        saveFees.put("paId", paramIn.getString("paId"));
        saveFees.put("payTime", DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A));
        saveFees.put("payType", "2");
        CommonCache.setValue(FeeDto.REDIS_PAY_TEMP_CAR_FEE + orderId, saveFees.toJSONString(), CommonCache.PAY_DEFAULT_EXPIRE_TIME);
        CommonCache.setValue(FeeDto.REDIS_PAY_TEMP_CAR_FEE_COMMUNITY + orderId, reqJson.getString("communityId"), CommonCache.PAY_DEFAULT_EXPIRE_TIME);
        //记录openId 和车辆关系 以免每次 输入 车牌号麻烦
        OwnerCarOpenUserPo ownerCarOpenUserPo = new OwnerCarOpenUserPo();
        ownerCarOpenUserPo.setCarNum(reqJson.getString("carNum"));
@@ -159,6 +151,36 @@
        ownerCarOpenUserV1InnerServiceSMOImpl.saveOwnerCarOpenUser(ownerCarOpenUserPo);
    }
    private ResultVo doAlipay(JSONObject reqJson, String feeName, String orderId, double money, String openId) {
        AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do",
                CommunitySettingFactory.getValue(reqJson.getString("communityId"), "APP_ID"),
                CommunitySettingFactory.getRemark(reqJson.getString("communityId"), "APP_PRIVATE_KEY"),
                "json",
                "UTF-8",
                CommunitySettingFactory.getRemark(reqJson.getString("communityId"), "ALIPAY_PUBLIC_KEY"),
                "RSA2");
        AlipayTradeCreateRequest request = new AlipayTradeCreateRequest();
        request.setNotifyUrl(MappingCache.getValue("ALIPAY", "temp"));
        JSONObject bizContent = new JSONObject();
        bizContent.put("out_trade_no", orderId);
        bizContent.put("total_amount", money);
        bizContent.put("subject", feeName);
        bizContent.put("buyer_id", openId);
        bizContent.put("timeout_express", "10m");
        request.setBizContent(bizContent.toString());
        AlipayTradeCreateResponse response = null;
        try {
            response = alipayClient.execute(request);
            if (response.isSuccess()) {
                return new ResultVo(ResultVo.CODE_OK, ResultVo.MSG_OK,orderId);
            } else {
                return new ResultVo(ResultVo.CODE_ERROR, response.getMsg());
            }
        } catch (AlipayApiException e) {
            throw new CmdException("支付宝下单失败" + e);
        }
    }
    private SmallWeChatDto getSmallWechat(JSONObject paramIn) {
        SmallWeChatDto smallWeChatDto = new SmallWeChatDto();
service-api/src/main/java/com/java110/api/controller/app/AliPayNotifyController.java
New file
@@ -0,0 +1,55 @@
package com.java110.api.controller.app;
import com.alibaba.fastjson.JSONObject;
import com.java110.api.smo.payment.ITempCarFeeToNotifySMO;
import com.java110.core.base.controller.BaseController;
import com.java110.core.log.LoggerFactory;
import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
import javax.xml.ws.Action;
import java.util.Map;
@RestController
@RequestMapping(path = "/app/alipay/notify")
public class AliPayNotifyController extends BaseController {
    private final static Logger logger = LoggerFactory.getLogger(PaymentController.class);
    @Autowired
    private ITempCarFeeToNotifySMO tempCarFeeToNotifySMOImpl;
    /**
     * <p>支付回调Api</p>
     *
     * @param request
     * @throws Exception
     */
    @RequestMapping(path = "/receive", method = RequestMethod.POST)
    public ResponseEntity<String> receive(HttpServletRequest request) {
        JSONObject paramIn = new JSONObject();
        for (String key : request.getParameterMap().keySet()) {
            paramIn.put(key, request.getParameter(key));
            logger.debug("支付宝回调报文form" + key + ":: " + request.getParameter(key));
        }
        logger.debug("支付宝支付回调报文" + paramIn.toJSONString());
        /*接收参数*/
        Map<String, String> params = getRequestParams(request);
        System.out.println("params:" + params);
        String sign = params.get("sign");
        System.out.println(sign);
        paramIn.put("resultInfo",request.getQueryString());
        // 收到通知后记得返回SUCCESS
        return tempCarFeeToNotifySMOImpl.aliPayToNotify(paramIn.toJSONString(), request);
    }
}
service-api/src/main/java/com/java110/api/smo/payment/ITempCarFeeToNotifySMO.java
@@ -15,4 +15,12 @@
     * @return
     */
    public ResponseEntity<String> toNotify(String param,HttpServletRequest request);
    /**
     * 支付宝支付
     * @param param
     * @param request
     * @return
     */
    ResponseEntity<String> aliPayToNotify(String param,HttpServletRequest request);
}
service-api/src/main/java/com/java110/api/smo/payment/impl/TempCarFeeToNotifySMOImpl.java
@@ -1,26 +1,39 @@
package com.java110.api.smo.payment.impl;
import com.alibaba.fastjson.JSONObject;
import com.java110.api.smo.AppAbstractComponentSMO;
import com.java110.api.smo.payment.IOweFeeToNotifySMO;
import com.java110.api.smo.payment.ITempCarFeeToNotifySMO;
import com.java110.api.smo.payment.adapt.IOweFeeToNotifyAdapt;
import com.java110.api.smo.payment.adapt.ITempCarFeeToNotifyAdapt;
import com.java110.core.context.IPageData;
import com.java110.utils.cache.MappingCache;
import com.java110.utils.constant.CommonConstant;
import com.java110.utils.constant.WechatConstant;
import com.java110.utils.factory.ApplicationContextFactory;
import com.java110.utils.util.DateUtil;
import com.java110.utils.util.StringUtil;
import org.slf4j.Logger;
import com.java110.core.log.LoggerFactory;
import org.springframework.http.HttpMethod;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletRequest;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
@Service("tempCarFeeToNotifySMOImpl")
public class TempCarFeeToNotifySMOImpl implements ITempCarFeeToNotifySMO {
public class TempCarFeeToNotifySMOImpl extends AppAbstractComponentSMO implements ITempCarFeeToNotifySMO {
    private static final Logger logger = LoggerFactory.getLogger(TempCarFeeToNotifySMOImpl.class);
    private static final String APP_ID = "992020011134400001";
    /**
     * 支付宝appId
     */
    private static final String APP_ID = "992022082855370008";
    private static final String DEFAULT_OWE_FEE_TO_NOTIFY_ADAPT = "wechatTempCarFeeToNotifyAdapt";// 默认微信通用支付
@@ -37,5 +50,42 @@
        return new ResponseEntity<String>(resXml, HttpStatus.OK);
    }
    @Override
    public ResponseEntity<String> aliPayToNotify(String param, HttpServletRequest request) {
        String url = "alipay.notifyPayTempCarFee";
        /**
         *   postParameters.put("carNum", tempCarPayOrderDto.getCarNum());
         *         postParameters.put("extPaId", tempCarPayOrderDto.getPaId());
         *         postParameters.put("orderId", tempCarPayOrderDto.getOrderId());
         *         postParameters.put("amount", tempCarPayOrderDto.getAmount());
         *         postParameters.put("payTime", tempCarPayOrderDto.getPayTime());
         *         postParameters.put("payType", tempCarPayOrderDto.getPayType());
         */
        ResponseEntity<String> responseEntity = super.callCenterService(getHeaders("-1"), param, url, HttpMethod.POST);
        return responseEntity;
    }
    private Map<String, String> getHeaders(String userId) {
        Map<String, String> headers = new HashMap<>();
        headers.put(CommonConstant.HTTP_APP_ID.toLowerCase(), APP_ID);
        headers.put(CommonConstant.HTTP_USER_ID.toLowerCase(), userId);
        headers.put(CommonConstant.HTTP_TRANSACTION_ID.toLowerCase(), UUID.randomUUID().toString());
        headers.put(CommonConstant.HTTP_REQ_TIME.toLowerCase(), DateUtil.getDefaultFormateTimeString(new Date()));
        headers.put(CommonConstant.HTTP_SIGN.toLowerCase(), "");
        return headers;
    }
    @Override
    protected void validate(IPageData pd, JSONObject paramIn) {
    }
    @Override
    protected ResponseEntity<String> doBusinessProcess(IPageData pd, JSONObject paramIn) throws Exception {
        return null;
    }
}
springboot/src/main/java/com/java110/boot/controller/app/AliPayNotifyController.java
New file
@@ -0,0 +1,54 @@
package com.java110.boot.controller.app;
import com.alibaba.fastjson.JSONObject;
import com.java110.boot.smo.payment.ITempCarFeeToNotifySMO;
import com.java110.core.base.controller.BaseController;
import com.java110.core.log.LoggerFactory;
import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
import java.util.Map;
@RestController
@RequestMapping(path = "/app/alipay/notify")
public class AliPayNotifyController extends BaseController {
    private final static Logger logger = LoggerFactory.getLogger(PaymentController.class);
    @Autowired
    private ITempCarFeeToNotifySMO tempCarFeeToNotifySMOImpl;
    /**
     * <p>支付回调Api</p>
     *
     * @param request
     * @throws Exception
     */
    @RequestMapping(path = "/receive", method = RequestMethod.POST)
    public ResponseEntity<String> receive(HttpServletRequest request) {
        JSONObject paramIn = new JSONObject();
        for (String key : request.getParameterMap().keySet()) {
            paramIn.put(key, request.getParameter(key));
            logger.debug("支付宝回调报文form" + key + ":: " + request.getParameter(key));
        }
        logger.debug("支付宝支付回调报文" + paramIn.toJSONString());
        /*接收参数*/
        Map<String, String> params = getRequestParams(request);
        System.out.println("params:" + params);
        String sign = params.get("sign");
        System.out.println(sign);
        paramIn.put("resultInfo",request.getQueryString());
        // 收到通知后记得返回SUCCESS
        return tempCarFeeToNotifySMOImpl.aliPayToNotify(paramIn.toJSONString(), request);
    }
}
springboot/src/main/java/com/java110/boot/smo/payment/ITempCarFeeToNotifySMO.java
@@ -15,4 +15,12 @@
     * @return
     */
    public ResponseEntity<String> toNotify(String param,HttpServletRequest request);
    /**
     * 支付宝支付
     * @param param
     * @param request
     * @return
     */
    ResponseEntity<String> aliPayToNotify(String param,HttpServletRequest request);
}
springboot/src/main/java/com/java110/boot/smo/payment/impl/TempCarFeeToNotifySMOImpl.java
@@ -1,24 +1,39 @@
package com.java110.boot.smo.payment.impl;
import com.alibaba.fastjson.JSONObject;
import com.java110.boot.smo.AppAbstractComponentSMO;
import com.java110.boot.smo.payment.IOweFeeToNotifySMO;
import com.java110.boot.smo.payment.ITempCarFeeToNotifySMO;
import com.java110.boot.smo.payment.adapt.IOweFeeToNotifyAdapt;
import com.java110.boot.smo.payment.adapt.ITempCarFeeToNotifyAdapt;
import com.java110.core.log.LoggerFactory;
import com.java110.core.context.IPageData;
import com.java110.utils.cache.MappingCache;
import com.java110.utils.constant.CommonConstant;
import com.java110.utils.constant.WechatConstant;
import com.java110.utils.factory.ApplicationContextFactory;
import com.java110.utils.util.DateUtil;
import com.java110.utils.util.StringUtil;
import org.slf4j.Logger;
import com.java110.core.log.LoggerFactory;
import org.springframework.http.HttpMethod;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletRequest;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
@Service("tempCarFeeToNotifySMOImpl")
public class TempCarFeeToNotifySMOImpl implements ITempCarFeeToNotifySMO {
public class TempCarFeeToNotifySMOImpl extends AppAbstractComponentSMO implements ITempCarFeeToNotifySMO {
    private static final Logger logger = LoggerFactory.getLogger(TempCarFeeToNotifySMOImpl.class);
    private static final String APP_ID = "992020011134400001";
    /**
     * 支付宝appId
     */
    private static final String APP_ID = "992022082855370008";
    private static final String DEFAULT_OWE_FEE_TO_NOTIFY_ADAPT = "wechatTempCarFeeToNotifyAdapt";// 默认微信通用支付
@@ -35,5 +50,42 @@
        return new ResponseEntity<String>(resXml, HttpStatus.OK);
    }
    @Override
    public ResponseEntity<String> aliPayToNotify(String param, HttpServletRequest request) {
        String url = "alipay.notifyPayTempCarFee";
        /**
         *   postParameters.put("carNum", tempCarPayOrderDto.getCarNum());
         *         postParameters.put("extPaId", tempCarPayOrderDto.getPaId());
         *         postParameters.put("orderId", tempCarPayOrderDto.getOrderId());
         *         postParameters.put("amount", tempCarPayOrderDto.getAmount());
         *         postParameters.put("payTime", tempCarPayOrderDto.getPayTime());
         *         postParameters.put("payType", tempCarPayOrderDto.getPayType());
         */
        ResponseEntity<String> responseEntity = super.callCenterService(getHeaders("-1"), param, url, HttpMethod.POST);
        return responseEntity;
    }
    private Map<String, String> getHeaders(String userId) {
        Map<String, String> headers = new HashMap<>();
        headers.put(CommonConstant.HTTP_APP_ID.toLowerCase(), APP_ID);
        headers.put(CommonConstant.HTTP_USER_ID.toLowerCase(), userId);
        headers.put(CommonConstant.HTTP_TRANSACTION_ID.toLowerCase(), UUID.randomUUID().toString());
        headers.put(CommonConstant.HTTP_REQ_TIME.toLowerCase(), DateUtil.getDefaultFormateTimeString(new Date()));
        headers.put(CommonConstant.HTTP_SIGN.toLowerCase(), "");
        return headers;
    }
    @Override
    protected void validate(IPageData pd, JSONObject paramIn) {
    }
    @Override
    protected ResponseEntity<String> doBusinessProcess(IPageData pd, JSONObject paramIn) throws Exception {
        return null;
    }
}