同步支付服代码

main
DESKTOP-C3M45P4\dengdan 2024-11-28 18:13:24 +08:00
parent a2c4571d89
commit 17dffdc483
6 changed files with 0 additions and 565 deletions

View File

@ -1,130 +0,0 @@
package com.ljsd.controller;
import com.google.gson.Gson;
import com.google.gson.JsonObject;
import com.ljsd.pojo.*;
import com.ljsd.redis.RedisKey;
import com.ljsd.timer.ServerManager;
import com.ljsd.util.BaseGlobal;
import com.ljsd.util.MyMD5Util;
import com.mongodb.DBObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
* @version V1.0
* @ClassName: KSGetRoleListController
* @Package com.ljsd.controller
* @Description: ${快手获取角色列表}
* @Author: zw
* @date: 2020/6/18 10:27
*/
public class KSGetRoleListController extends HttpServlet {
private static final Logger LOGGER = LoggerFactory.getLogger(KSGetRoleListController.class);
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("UTF-8");
resp.setCharacterEncoding("UTF-8");
resp.setContentType("application/json; charset=utf-8");
String data = req.getQueryString();
LOGGER.info("reqData:--- " + data);
PrintWriter out = resp.getWriter();
JsonObject jsonObject = new JsonObject();
String sign = req.getHeader("sign");
if (sign == null) {
// 签名错误
jsonObject.addProperty("result", KSConstant.SIGN_ERROR);
out.print(jsonObject);
out.flush();
return;
}
String gameId = req.getParameter("game_id");
String ts = req.getParameter("ts");
long timeStamp = Long.parseLong(ts);
long nowTime = System.currentTimeMillis();
if (Math.abs(timeStamp - nowTime) > KSConstant.FIVE_MIN) {
LOGGER.info("ksGetRoleList===>timeStamp:{},nowTime:{} " ,timeStamp,nowTime);
jsonObject.addProperty("result", KSConstant.OTHER_ERROR);
out.print(jsonObject);
out.flush();
return;
}
try {
String resultSign = MyMD5Util.getSignature(data, KSConstant.APP_SECRET);
if (!resultSign.equalsIgnoreCase(sign)) {
LOGGER.error("签名错误---- sdkSign ={},-----resultSign={} ", sign, resultSign);
//签名错误
jsonObject.addProperty("result", KSConstant.SIGN_ERROR);
out.print(jsonObject);
out.flush();
return;
}
} catch (Exception e) {
e.printStackTrace();
}
try {
KSRoleListInfo infos = new KSRoleListInfo();
infos.result = KSConstant.SUCCESS;
infos.msg = "";
infos.servers = createMyServerList(gameId);
Gson gson = new Gson();
out.print(gson.toJson(infos));
out.flush();
LOGGER.info("角色列表: " + gson.toJson(infos));
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doGet(req, resp);
}
/**
* 服务器角色列表
*
* @param openId
* @return
* @throws Exception
*/
private static List<KSServerInfo> createMyServerList(String openId) throws Exception {
List<DBObject> servers = ServerManager.servers;
Map<String, UserServerInfo> userServerInfoMap = BaseGlobal.redisApp.hgetAll(RedisKey.USER_SERVER_INFO, openId, UserServerInfo.class,
RedisKey.COMMON);
List<KSServerInfo> serverInfoList = new ArrayList<>();
for (Map.Entry<String, UserServerInfo> entry : userServerInfoMap.entrySet()) {
KSServerInfo info = new KSServerInfo();
UserServerInfo userServerInfo = entry.getValue();
info.server_id = entry.getKey();
String serverName = "";
for (DBObject data : servers) {
if (entry.getKey().equals(data.get("server_id").toString())) {
serverName = data.get("name").toString();
}
}
info.server_name = serverName;
KSRole ksRole = new KSRole();
ksRole.role_id = userServerInfo.getId();
ksRole.role_name = userServerInfo.getName();
ksRole.recent_login_time = userServerInfo.getLoginTime();
info.roles.add(ksRole);
serverInfoList.add(info);
}
return serverInfoList;
}
}

View File

@ -1,102 +0,0 @@
package com.ljsd.controller;
import com.google.gson.Gson;
import com.ljsd.pojo.KSConstant;
import com.ljsd.pojo.KSPay;
import com.ljsd.util.BaseGlobal;
import com.ljsd.util.HttpUtil;
import com.ljsd.util.RSAUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.URLDecoder;
import java.util.HashMap;
import java.util.Map;
/**
* @version V1.0
* @ClassName: KSPayController
* @Package com.ljsd.controller
* @Description: ${快手支付回调}
* @Author: zw
* @date: 2020/7/28 18:04
*/
public class KSPayNotifyController extends HttpServlet {
private static final Logger LOGGER = LoggerFactory.getLogger(KSPayNotifyController.class);
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("UTF-8");
resp.setCharacterEncoding("UTF-8");
resp.setContentType("application/json; charset=utf-8");
String data = HttpUtil.requestToStr(req);
data = URLDecoder.decode(data, "utf-8");
LOGGER.info("payData--- " + data);
PrintWriter out = resp.getWriter();
if (data.equals("")) {
out.print("success");
out.flush();
return;
}
Map<String, String> paramMap = new HashMap<>();
Map<String, String> orderData = new HashMap<>();
String[] str = data.split("&");
for (String s : str) {
String[] payData = s.split("=");
System.out.println("key: " + payData[0] + " value: " + payData[1]);
orderData.put(payData[0], payData[1]);
}
String sign = orderData.remove("sign");
String content = RSAUtil.getSignStringFromMap(orderData);
//验签
boolean flag = RSAUtil.check(content, sign, KSConstant.KS_PAY_PUBLIC_KEY, "utf-8");
LOGGER.info("充值flag: " + flag);
//验签失败
if (!flag) {
out.print("sign error");
out.flush();
LOGGER.info("充值验签失败");
return;
}
//init pay
KSPay pay = new KSPay();
pay.app_id = orderData.get("app_id");
pay.allin_trade_no = orderData.get("allin_trade_no");
pay.product_id = orderData.get("product_id");
pay.role_id = orderData.get("role_id");
pay.server_id = orderData.get("server_id");
pay.data = orderData.get("data");
pay.extension = orderData.get("extension");
pay.money = orderData.get("money");
Gson gson = new Gson();
Map<String, String> json = gson.fromJson(orderData.get("extension"), Map.class);
String orderId = json.get("orderId");
//存入redis 存入成功就返回成功,后续在游戏服处理
try {
BaseGlobal.redisApp.hset("game", pay.server_id, "pay", KSConstant.KS_PAY, orderId, gson.toJson(pay), -1);
} catch (Exception e) {
e.printStackTrace();
out.print("data error");
out.flush();
return;
}
LOGGER.info("玩家充值成功,存入redis----roleId={},orderId={}", pay.role_id, pay.allin_trade_no);
out.print("success");
out.flush();
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doPost(req, resp);
}
}

View File

@ -1,109 +0,0 @@
package com.ljsd.controller;
import com.google.gson.Gson;
import com.google.gson.JsonObject;
import com.ljsd.pojo.*;
import com.ljsd.util.BaseGlobal;
import com.ljsd.util.HttpUtil;
import com.ljsd.util.MyMD5Util;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
/**
* @version V1.0
* @ClassName:
* @Package com.ljsd.controller
* @Description: ${发放礼包}
* @Author: zw
* @date: 2020/6/19 14:00
*/
public class KSPostGiftController extends HttpServlet {
private static final Logger LOGGER = LoggerFactory.getLogger(KSPostGiftController.class);
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("UTF-8");
resp.setCharacterEncoding("UTF-8");
resp.setContentType("application/json; charset=utf-8");
String data = HttpUtil.requestToStr(req);
LOGGER.info("reqData:--- " + data);
JsonObject jsonObject = new JsonObject();
Gson gson = new Gson();
KSGiftInfo giftInfo = gson.fromJson(data, KSGiftInfo.class);
PrintWriter out = resp.getWriter();
String sign = req.getHeader("sign");
if (sign == null) {
//非法请求
jsonObject.addProperty("result", KSConstant.SIGN_ERROR);
out.print(jsonObject);
out.flush();
return;
}
long timeStamp = giftInfo.ts;
long nowTime = System.currentTimeMillis();
if (Math.abs(timeStamp - nowTime) > KSConstant.FIVE_MIN) {
LOGGER.info("ksGetRoleList===>timeStamp:{},nowTime:{} " ,timeStamp,nowTime);
jsonObject.addProperty("result", KSConstant.OTHER_ERROR);
out.print(jsonObject);
out.flush();
return;
}
try {
String resultSign = MyMD5Util.getSignature(data, KSConstant.APP_SECRET);
if (!resultSign.equalsIgnoreCase(sign)) {
LOGGER.error("签名错误: ----sdkSign ={},----resultSign={} ", sign, resultSign);
//签名错误
jsonObject.addProperty("result", KSConstant.SIGN_ERROR);
out.print(jsonObject);
out.flush();
return;
}
} catch (Exception e) {
e.printStackTrace();
}
String gift_pack_name = giftInfo.gift_pack_name;
String game_id = giftInfo.game_id;
KSGiftRoleInfo giftRoleInfo = giftInfo.role_info;
String serverId = giftRoleInfo.server_id;
String roleId = giftRoleInfo.role_id;
List<KSGiftPackItem> giftPackItems = giftInfo.pack_items;
String timeStr = String.valueOf(System.currentTimeMillis());
//生成mail对象
KSMailInfo mail = new KSMailInfo();
mail.type = 1;
mail.gift_name = gift_pack_name;
mail.pack_items = giftPackItems;
//存入redis
try {
BaseGlobal.redisApp.hset("game", serverId, "mail", KSConstant.GIFT_KEY, roleId + "_" + timeStr, mail, -1);
} catch (Exception e) {
e.printStackTrace();
jsonObject.addProperty("result", KSConstant.OTHER_ERROR);
out.print(jsonObject);
out.flush();
return;
}
LOGGER.info("发送礼包-------roleId={},serverId={},mail={}", roleId, serverId, gson.toJson(mail));
jsonObject.addProperty("result", KSConstant.SUCCESS);
out.print(jsonObject);
out.flush();
}
}

View File

@ -1,85 +0,0 @@
package com.ljsd.controller;
import com.google.gson.Gson;
import com.ljsd.pojo.ResultVo;
import com.ljsd.redis.RedisKey;
import com.ljsd.util.BaseGlobal;
import com.ljsd.util.HttpUtil;
import com.ljsd.util.MyMD5Util;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.HashMap;
/**
* @author gaojie
* @version V1.0
* @className RechargeController
* @packageName com.ljsd.controller
* @description bt 充值返利
* @date 2022-02-21 14:10
* copyright(c) 2020-2030 蓝鲸时代技术有限公司
**/
public class Rebate9kController extends HttpServlet {
private static final Logger LOGGER = LoggerFactory.getLogger(Rebate9kController.class);
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
req.setCharacterEncoding("UTF-8");
resp.setCharacterEncoding("UTF-8");
resp.setContentType("application/json; charset=utf-8");
PrintWriter out = resp.getWriter();
HashMap<String, String> parameterMap = HttpUtil.getParameterMap(req);
String rebateType = parameterMap.get("rebate_type");
String rebate_no = parameterMap.get("rebate_no");
String gameOrderNo = parameterMap.get("game_order_no");
String accountid = parameterMap.get("user_id");
String payMoney = parameterMap.get("pay_money");
String gold = parameterMap.get("gold");
String gameId = parameterMap.get("game_id");
String serviceId = parameterMap.get("service_id");
String roleId = parameterMap.get("role_id");
String roleName = parameterMap.get("role_name");
String payTime = parameterMap.get("time");
String payStatus = parameterMap.get("pay_status");
String sign = parameterMap.get("sign");
boolean isSignSuccess = false;
for (String value : BaseGlobal.PAY_KEY.values()) {
String info =rebateType + rebate_no + HttpUtil.getUrlEncoder(gameOrderNo) + HttpUtil.getUrlEncoder(accountid) + payMoney + gold + gameId + HttpUtil.getUrlEncoder(serviceId)
+ HttpUtil.getUrlEncoder(roleId) +payTime + value;
String sig = MyMD5Util.encrypByMd5(info);
if (sig.equals(sign)){
isSignSuccess = true;
break;
}
LOGGER.info("rebate()info={}, 9k_md5Sign={},sig" + "={} sin derify fail !!!",info,sign,sig);
}
if (!isSignSuccess) {
ResultVo resultVo = new ResultVo(100,"sign fail");
out.print(HttpUtil.getResult(resultVo));
out.flush();
return;
}
try {
Gson gson = new Gson();
BaseGlobal.redisApp.hset( serviceId + ":" + RedisKey.BT_REBATE_KEY,"",rebate_no,gson.toJson(parameterMap),-1);
} catch (Exception e) {
e.printStackTrace();
}
String result = HttpUtil.getResult(new ResultVo(200, "success"));
LOGGER.info("Rebate9kController==>url:{},result={}",req.getRequestURI(),result);
out.print(result);
out.flush();
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doGet(req, resp);
}
}

View File

@ -1,116 +0,0 @@
package com.ljsd.controller;
import com.google.gson.Gson;
import com.google.gson.JsonObject;
import com.ljsd.pojo.KSConstant;
import com.ljsd.pojo.KSPay;
import com.ljsd.pojo.ResultVo;
import com.ljsd.util.BaseGlobal;
import com.ljsd.util.GlobalSys;
import com.ljsd.util.HttpUtil;
import com.ljsd.util.MyMD5Util;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.Map;
import java.util.TreeMap;
/**
* @author gaojie
* @version V1.0
* @className RechargeController
* @packageName com.ljsd.controller
* @description 一元 充值
* @date 2022-02-21 14:10
* copyright(c) 2020-2030 蓝鲸时代技术有限公司
**/
public class Recharge9kController extends HttpServlet {
private static final Logger LOGGER = LoggerFactory.getLogger(Recharge9kController.class);
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
req.setCharacterEncoding("UTF-8");
resp.setCharacterEncoding("UTF-8");
resp.setContentType("application/json; charset=utf-8");
PrintWriter out = resp.getWriter();
HashMap<String, String> parameterMap = HttpUtil.getParameterMap(req);
String platformId = parameterMap.get("platformId");
String uid = parameterMap.get("uid");
String zoneId = parameterMap.get("zoneId");
String roleId = parameterMap.get("roleId");
String cpOrderId = parameterMap.get("cpOrderId");
String orderId = parameterMap.get("orderId");
String orderStatus = parameterMap.get("orderStatus");
String amount = parameterMap.get("amount");
String goodsInfo = parameterMap.get("extInfo");
String payTime = parameterMap.get("payTime");
String paySucTime = parameterMap.get("paySucTime");
String notifyUrl = parameterMap.get("notifyUrl");
String clientType = parameterMap.get("clientType");
String sign = parameterMap.get("sign");
parameterMap.remove("sign");
String info = MyMD5Util.buildHttpQueryNoEncode(parameterMap) +GlobalSys.YY_APP_KEY;
if (Integer.parseInt(orderStatus) != 1){
LOGGER.info("callback()info={},9k_md5Sign={},orderStatus !=1");
out.print("2");
out.flush();
return;
}
String sig = MyMD5Util.encrypByMd5(info);
if (!sig.equals(sign)) {
LOGGER.info("callback()info={},9k_md5Sign={},sig={} sin derify fail !!!",info,sign,sig);
out.print("1");
out.flush();
return;
}
//init pay
Gson gson = new Gson();
String[] split = goodsInfo.split("\\|");
JsonObject jsonObject = new JsonObject();
jsonObject.addProperty("orderId", split[0]);
jsonObject.addProperty("goodsId",split[1]);
jsonObject.addProperty("welfareNum",split[2]);
Map<String, String> json = gson.fromJson(jsonObject, Map.class);
KSPay pay = new KSPay();
pay.app_id = "zhj_yy";
pay.allin_trade_no = orderId ;
pay.goods_id = json.get("goodsId");
pay.role_id = roleId;
pay.server_id = zoneId;
pay.data = orderStatus;
pay.extension = jsonObject.toString() ;
pay.money = amount;
pay.couponAmount = amount;
orderId = json.get("orderId");
//存入redis 存入成功就返回成功,后续在游戏服处理
try {
BaseGlobal.redisApp.hset("game", pay.server_id, "pay", KSConstant.KS_PAY, orderId, gson.toJson(pay), -1);
} catch (Exception e) {
e.printStackTrace();
out.print("data error");
out.flush();
return;
}
LOGGER.info("玩家充值成功,存入redis----roleId={},orderId={},money={}", pay.role_id, pay.allin_trade_no,pay.money);
String result = "0";
LOGGER.info("Recharge9kController==>url:{},result={}",req.getRequestURI(),result);
out.print(result);
out.flush();
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doGet(req, resp);
}
public static void main(String[] args) throws Exception {
String info = "";
String sig = MyMD5Util.encrypByMd5(info);
System.out.println(sig);
}
}

View File

@ -1,23 +0,0 @@
package com.ljsd.pojo;
/**
* @version V1.0
* @ClassName: KSPay
* @Package com.ljsd.pojo
* @Description: ${TODO}
* @Author: zw
* @date: 2020/7/28 18:30
*/
public class KSPay {
public String app_id;
public String role_id;
public String server_id;
public String product_id;
public String money;
public String extension;
public String allin_trade_no;
public String data;
public String couponAmount;
public String goods_id;
}