From dc00ffea133fc15ba6cd0e5f931b20152dcb98f0 Mon Sep 17 00:00:00 2001 From: xuexinpeng Date: Tue, 10 May 2022 11:03:43 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B5=A9=E5=87=A1sdk?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/HaoFanRechargeController.java | 83 +++++++++++++++++++ .../java/com/jmfy/controller/PayLogic.java | 1 + .../java/com/jmfy/paramBean/PaySdkEnum.java | 1 + 3 files changed, 85 insertions(+) create mode 100644 src/main/java/com/jmfy/controller/HaoFanRechargeController.java 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..ca3b956 --- /dev/null +++ b/src/main/java/com/jmfy/controller/HaoFanRechargeController.java @@ -0,0 +1,83 @@ +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 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(PAYKEY); + String substring = builder.substring(0, builder.length() - 1).toUpperCase(); + LOGGER.info("hao fan 参数拼装sign(未加密):" + substring + PAYKEY); + String md5Hex = DigestUtils.md5Hex(substring + PAYKEY); + LOGGER.info("hao fan 参数拼装sign(加密后):" + md5Hex); + 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"); //物品名称 + + LOGGER.info("hao fan======》{}", parameterMap); + SortedMap map = new TreeMap<>(); + map.put("orderNo", orderNo); + map.put("userNo", userNo); + map.put("orderMoney", orderMoney); + + boolean valid = verifySign(map, flag); + if (!valid) { + LOGGER.info("callback==>extra={},sin verify fail"); + return "FAIL"; + } + int rmb = Integer.parseInt(orderMoney) * 100; + JsonObject jsonObject = new JsonObject(); + + if ("SUCCESS".equals(payLogic.initOrder(userNo + "_" + productId + "_" + companyOrderNo, 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/controller/PayLogic.java b/src/main/java/com/jmfy/controller/PayLogic.java index fdbfab6..c6caf7a 100644 --- a/src/main/java/com/jmfy/controller/PayLogic.java +++ b/src/main/java/com/jmfy/controller/PayLogic.java @@ -37,6 +37,7 @@ public class PayLogic { } public String initOrder(String collBackInfo, String orderId, String amount, Date time, String openId, PaySdkEnum sdk){ + LOGGER.info("collBackInfo=>{} orderId {} amount{} openId{} ",collBackInfo); return initOrder(collBackInfo,orderId,amount,time,openId,sdk,""); } 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;