miduo_pay/src/main/java/com/jmfy/controller/XPRechargeController.java

106 lines
3.8 KiB
Java

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<String, String> 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<String, String> 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;
}
}