浩凡sdk

master
xuexinpeng 2022-05-10 11:03:43 +08:00
parent f5a0177439
commit dc00ffea13
3 changed files with 85 additions and 0 deletions

View File

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

View File

@ -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,"");
}

View File

@ -16,6 +16,7 @@ public enum PaySdkEnum {
DY(6,"DY"),
DUOYOU(7,"DUOYOU"),
AIWAN(8,"AIWAN"),
HANFAN(9,"HAOFAN"),
;
private int id;