diff --git a/src/main/java/com/jmfy/controller/HaoFanRechargeController.java b/src/main/java/com/jmfy/controller/HaoFanRechargeController.java new file mode 100644 index 0000000..cd574f9 --- /dev/null +++ b/src/main/java/com/jmfy/controller/HaoFanRechargeController.java @@ -0,0 +1,86 @@ +package com.jmfy.controller; + +import com.google.gson.JsonObject; +import com.jmfy.dto.CUserDao; +import com.jmfy.paramBean.PaySdkEnum; +import com.jmfy.util.JsonUtil; +import org.apache.commons.codec.digest.DigestUtils; +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.*; + +/** + * 浩凡游戏 + */ +@RestController +public class HaoFanRechargeController { + + private static final String PAYKEY = "AA594A9028E147D2AD28C9C1A156F9A1"; + private static final String PAYKEY_IOS = "5A98DACA26C446EDB481AE3E617AFBB5"; + private static final Logger LOGGER = LoggerFactory.getLogger(HaoFanRechargeController.class); + + @Resource + private PayLogic payLogic; + + private static boolean verifySign(Map map, String sign) { + if (map == null || map.isEmpty()) { + return false; + } + StringBuilder builder = new StringBuilder(); + builder.append(map.get("orderNo")).append(map.get("userNo")).append(map.get("orderMoney")) + .append(map.get("pKey")); + String substring =builder.toString(); + LOGGER.info("hao fan 参数拼装sign(未加密):" + substring); + String md5Hex = DigestUtils.md5Hex(substring).toUpperCase(); + return md5Hex.equals(sign); + } + + @RequestMapping(value = "/Web/hanFanCallback") + public String youguCallback(HttpServletRequest request) throws Exception { + HashMap parameterMap = JsonUtil.getInstence().getParameterMap2(request); + if (parameterMap.isEmpty()) { + LOGGER.info("hao fan GameCallback data is null"); + //return "FAIL"; + } + + String orderNo = request.getParameter("orderNo"); //此订单号由开发者生成,可用于对账、客服支持等。 + String userNo = request.getParameter("userNo"); //玩家登录成功客户端回传的用户名 + String orderMoney = request.getParameter("orderMoney"); //订单充值的金额,单位元(只接收 >=1 的整数位金额) + String flag = request.getParameter("flag"); //MD5(orderNo+userNo+orderMoney+PKEY).toUpperCase(); + String companyOrderNo = request.getParameter("companyOrderNo"); //游戏传入外部订单号 + String gamePid = request.getParameter("gamePid"); //游戏PID + String productId = request.getParameter("productId"); //物品id + String productName = request.getParameter("productName"); //物品名称 + String remark = request.getParameter("remark"); //透传参数 + String pKey = request.getParameter("pKey"); + LOGGER.info("hao fan======》{}", parameterMap); + SortedMap map = new TreeMap<>(); + map.put("orderNo", orderNo); + map.put("userNo", userNo); + map.put("orderMoney", orderMoney); + map.put("pKey", pKey); + + boolean valid = verifySign(map, flag); + if (!valid) { + LOGGER.info("callback==>extra={},sin verify fail"); + return "FAIL"; + } + int rmb = (int)Float.parseFloat(orderMoney)*100; + JsonObject jsonObject = new JsonObject(); + + if ("SUCCESS".equals(payLogic.initOrder(remark, orderNo, String.valueOf(rmb), new Date(), userNo, PaySdkEnum.HANFAN))) { + jsonObject.addProperty("code", "100"); + jsonObject.addProperty("msg", ""); + return jsonObject.toString(); + } else { + jsonObject.addProperty("code", "-1"); + jsonObject.addProperty("msg", ""); + return jsonObject.toString(); + } + } +} diff --git a/src/main/java/com/jmfy/paramBean/PaySdkEnum.java b/src/main/java/com/jmfy/paramBean/PaySdkEnum.java index f3c97d2..af286d1 100644 --- a/src/main/java/com/jmfy/paramBean/PaySdkEnum.java +++ b/src/main/java/com/jmfy/paramBean/PaySdkEnum.java @@ -16,6 +16,7 @@ public enum PaySdkEnum { DY(6,"DY"), DUOYOU(7,"DUOYOU"), AIWAN(8,"AIWAN"), + HANFAN(9,"HAOFAN"), ; private int id;