package com.jmfy.controller; import com.jmfy.paramBean.PaySdkEnum; import com.jmfy.paramBean.XPParamBean; import com.jmfy.util.JsonUtil; import com.jmfy.util.MD5Util; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import java.util.Date; import java.util.HashMap; /** * @author lvxinran * @date 2021/6/9 * @discribe 喜扑专服 */ @Deprecated @RestController public class XPRechargeController { @Resource private PayLogic payLogic; private static final Logger LOGGER = LoggerFactory.getLogger(XPRechargeController.class); @RequestMapping(value = "/XPCallback") public String MHTGnCallback(HttpServletRequest request) throws Exception { return process(request,"c6b1b36a27195504134161f264969dec"); } private String process(HttpServletRequest request,String appsecret) throws Exception{ HashMap parameterMap = JsonUtil.getInstence().getParameterMap2(request); if (parameterMap.isEmpty()) { LOGGER.info("data is null"); return "FAIL"; } XPParamBean data = getData(parameterMap); if (data == null) { LOGGER.info("data is null"); return "FAIL"; } String response = "SUCCESS"; try { String consumerid = data.getOpenId(); String sign = parameterMap.get("newsign"); String sig = getMySign(data, appsecret); if (!sig.equals(sign)) { LOGGER.info("callback==>roleUid={},sin derify fail,mine sign={} ", consumerid, sig); return "sign fail"; } response = insertOrder(data); } catch (Exception e) { e.printStackTrace(); LOGGER.info("callback==>err " + e.toString()); response = "FAIL"; } return response; } private XPParamBean getData(HashMap parameterMap) { XPParamBean paramBean = new XPParamBean(); paramBean.setAppId(parameterMap.getOrDefault("appId","")); paramBean.setOrderId(parameterMap.getOrDefault("orderId","")); paramBean.setOpenId(parameterMap.getOrDefault("openId","")); paramBean.setServerId(parameterMap.getOrDefault("serverId","")); paramBean.setRoleId(parameterMap.getOrDefault("roleId","")); paramBean.setMoney(parameterMap.getOrDefault("money","")); paramBean.setAmount(parameterMap.getOrDefault("amount","")); paramBean.setCallbackInfo(parameterMap.getOrDefault("callbackInfo","")); return paramBean; } private String insertOrder(XPParamBean data) { // 角色id_物品id_cc值 String callbackInfo = data.getCallbackInfo(); String orderNo = data.getOrderId(); String amount = data.getAmount(); Date time = new Date(System.currentTimeMillis()); String[] collback = callbackInfo.split("_"); //为了兼容老包 if(collback.length==1) { callbackInfo = data.getRoleId()+"_"+callbackInfo; } return payLogic.initOrder(callbackInfo,orderNo,amount,time,data.getOpenId(), PaySdkEnum.XP); } private static String getMySign(XPParamBean paramBean,String appsecret){ String paramStr = paramBean.getAppId()+paramBean.getOrderId()+paramBean.getOpenId()+paramBean.getServerId()+paramBean.getRoleId()+paramBean.getMoney()+paramBean.getAmount()+paramBean.getCallbackInfo()+appsecret; String sign = MD5Util.encrypByMd5(paramStr); LOGGER.info("加密前字符串:{}",paramStr); LOGGER.info("加密后得:{}",sign); return sign; } }