generated from root/miduo_server
灵动网页支付发货机
parent
efac72d27e
commit
2cc43277ea
|
@ -0,0 +1,210 @@
|
|||
package com.jmfy.controller;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import com.jmfy.dto.CPayOrder;
|
||||
import com.jmfy.dto.CUserDao;
|
||||
import com.jmfy.dto.CUserInfo;
|
||||
import com.jmfy.thrift.idl.RPCRequestIFace;
|
||||
import com.jmfy.thrift.idl.Result;
|
||||
import com.jmfy.thrift.pool.ClientAdapterPo;
|
||||
import com.jmfy.thrift.pool.ServiceKey;
|
||||
import com.jmfy.util.JsonUtil;
|
||||
import com.jmfy.util.MD5Util;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
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.lang.reflect.Field;
|
||||
import java.text.DateFormat;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* consumerId 游戏用户唯一标识
|
||||
* consumerName Cp自定义信息
|
||||
* orderNo 平台订单编号
|
||||
* orderDetail 订单详情
|
||||
* mhtOrderAmt 充值金额(分)
|
||||
* time 平台支付时间
|
||||
* sign 签名
|
||||
*/
|
||||
@RestController
|
||||
public class MHTHwNetRechargeController {
|
||||
@Resource
|
||||
private CUserDao cuserDao;
|
||||
private static final Logger LOGGER = LoggerFactory.getLogger(MHTHwNetRechargeController.class);
|
||||
private static Gson gson = new Gson();
|
||||
|
||||
|
||||
@RequestMapping(value = "/Web/MHTHwcallback")
|
||||
public String MHTcallback(HttpServletRequest request) throws Exception {
|
||||
return process(request,"6d415f7ae72649b5b9a248677b080034");
|
||||
}
|
||||
|
||||
@RequestMapping(value = "/Web/MHTHwIosCallback")
|
||||
public String MHTHwIosCallback(HttpServletRequest request) throws Exception {
|
||||
return process(request,"c130d086f10a275de2440f6e2a28912a");
|
||||
}
|
||||
|
||||
@RequestMapping(value = "/Web/MHTHwTestCallback")
|
||||
public String MHTHwIestCallback(HttpServletRequest request) throws Exception {
|
||||
return process(request,"02738d4f8aad8f4860c3916be35dc89b");
|
||||
}
|
||||
|
||||
|
||||
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";
|
||||
}
|
||||
|
||||
MHTNetRechargeRequestBean data = getData(parameterMap);
|
||||
|
||||
if (data == null) {
|
||||
LOGGER.info("data is null");
|
||||
return "FAIL";
|
||||
}
|
||||
|
||||
String response = "SUCCESS";
|
||||
try {
|
||||
String consumerid = data.getUser_id();
|
||||
String sign = data.getSign();
|
||||
|
||||
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 MHTNetRechargeRequestBean getData(HashMap<String, String> parameterMap) {
|
||||
String source = parameterMap.keySet().iterator().next();
|
||||
source = source.replaceAll(" ", "+");
|
||||
LOGGER.info(source);
|
||||
MHTNetRechargeRequestBean rechargeRequestBean = gson.fromJson(source, MHTNetRechargeRequestBean.class);
|
||||
return rechargeRequestBean;
|
||||
}
|
||||
|
||||
|
||||
private String insertOrder(MHTNetRechargeRequestBean data) {
|
||||
try {
|
||||
String user_id = data.getPlayer_id();
|
||||
|
||||
String consumerName = data.getItem_id();
|
||||
|
||||
String orderNo = data.getOrder_id();
|
||||
|
||||
CUserInfo cUserInfo = cuserDao.findUserInfo(Integer.valueOf(user_id));
|
||||
if (cUserInfo == null) {
|
||||
LOGGER.info("该用户无此角色" + user_id);
|
||||
return "FAIL";
|
||||
}
|
||||
|
||||
CPayOrder cPayOrder = cuserDao.getCpayOrderByOrderId(orderNo);
|
||||
|
||||
if (cPayOrder != null) {
|
||||
LOGGER.info("callback==>creditId={},uId={} orderId is exit!!!", cUserInfo.getId(), cUserInfo.getOpenId());
|
||||
return "FAIL";
|
||||
} else {
|
||||
DateFormat dateTimeformat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
|
||||
String date = dateTimeformat.format(new Date());
|
||||
cPayOrder = new CPayOrder();
|
||||
cPayOrder.setOrderId(orderNo);
|
||||
cPayOrder.setServerId(cUserInfo.getServerid());
|
||||
cPayOrder.setDelivery_time(date);
|
||||
cPayOrder.setUserId(user_id);
|
||||
|
||||
|
||||
Result result = null;
|
||||
String userAddress = cuserDao.findUserAddress(cUserInfo.getId());
|
||||
if (userAddress != null) {
|
||||
LOGGER.info("callback==>userAddress={} ", userAddress);
|
||||
String[] split = userAddress.split(":");
|
||||
String ip = split[0];
|
||||
String port = split[1];
|
||||
LOGGER.info("RPC address --> IP : " + ip + "; PORT : " + port);
|
||||
ClientAdapterPo<RPCRequestIFace.Client> rPCClient = null;
|
||||
String serviceKey = JsonUtil.getServiceKey(ServiceKey.RPCCore, ip, port);
|
||||
LOGGER.info("serviceKey : " + serviceKey);
|
||||
try {
|
||||
rPCClient = ClientAdapterPo.getClientAdapterPo(serviceKey);
|
||||
result = rPCClient.getClient().deliveryRecharge(cUserInfo.getId(), consumerName, data.getUser_id(), orderNo, 0, 0);
|
||||
} catch (Exception e) {
|
||||
LOGGER.info("callback=>", e);
|
||||
} finally {
|
||||
if (rPCClient != null) {
|
||||
rPCClient.returnObject(serviceKey);
|
||||
} else {
|
||||
LOGGER.info("callback=> rPCClient is null ");
|
||||
}
|
||||
}
|
||||
} else {
|
||||
LOGGER.info("not get the user url,the openID={} ", user_id);
|
||||
return "FAIL";
|
||||
}
|
||||
if (result != null && result.getResultCode() == 1) {
|
||||
LOGGER.info(" callback==>RPC result : ResultCode : " + result.getResultCode() + "; ResultMsg : " + result.getResultMsg());
|
||||
cuserDao.addCpayOrder(cPayOrder);
|
||||
} else {
|
||||
return "FAIL";
|
||||
}
|
||||
}
|
||||
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
LOGGER.info("callback==>err " + e.toString());
|
||||
return "FAIL";
|
||||
}
|
||||
return "SUCCESS";
|
||||
}
|
||||
|
||||
private static String getMySign(MHTNetRechargeRequestBean rechargeRequestBean,String appsecret) throws IllegalAccessException {
|
||||
StringBuilder stringBuilder = new StringBuilder();
|
||||
TreeMap<String, String> tempMap = new TreeMap<>(new Comparator<String>() {
|
||||
@Override
|
||||
public int compare(String o1, String o2) {
|
||||
return o1.compareTo(o2);
|
||||
}
|
||||
});
|
||||
|
||||
Class<? extends MHTNetRechargeRequestBean> aClass = rechargeRequestBean.getClass();
|
||||
Field[] fields = aClass.getDeclaredFields();
|
||||
for (Field field : fields) {
|
||||
field.setAccessible(true);
|
||||
if ("sign".equals(field.getName())) {
|
||||
continue;
|
||||
}
|
||||
tempMap.put(field.getName(), field.get(rechargeRequestBean).toString());
|
||||
}
|
||||
for (Map.Entry<String, String> item : tempMap.entrySet()) {
|
||||
String value = item.getValue();
|
||||
if (StringUtils.isEmpty(value)) {
|
||||
continue;
|
||||
}
|
||||
String key = item.getKey();
|
||||
stringBuilder.append(key).append("=").append(value).append("&");
|
||||
}
|
||||
String plain = stringBuilder.substring(0, stringBuilder.length() - 1) +appsecret;
|
||||
System.out.println(plain);
|
||||
return MD5Util.encrypByMd5(plain);
|
||||
}
|
||||
|
||||
|
||||
}
|
|
@ -44,12 +44,12 @@ public class MHTHwRechargeController {
|
|||
|
||||
@RequestMapping(value = "/MHTHwcallback")
|
||||
public String MHTcallback(HttpServletRequest request) throws Exception {
|
||||
return process(request,"");
|
||||
return process(request,"6d415f7ae72649b5b9a248677b080034");
|
||||
}
|
||||
|
||||
@RequestMapping(value = "/MHTHwIosCallback")
|
||||
public String MHTHwIosCallback(HttpServletRequest request) throws Exception {
|
||||
return process(request,"6d415f7ae72649b5b9a248677b080034");
|
||||
return process(request,"c130d086f10a275de2440f6e2a28912a");
|
||||
}
|
||||
|
||||
@RequestMapping(value = "/MHTHwTestCallback")
|
||||
|
@ -57,6 +57,8 @@ public class MHTHwRechargeController {
|
|||
return process(request,"02738d4f8aad8f4860c3916be35dc89b");
|
||||
}
|
||||
|
||||
|
||||
|
||||
private String process(HttpServletRequest request,String appsecret) throws Exception{
|
||||
HashMap<String, String> parameterMap = JsonUtil.getInstence().getParameterMap2(request);
|
||||
if (parameterMap.isEmpty()) {
|
||||
|
@ -64,9 +66,9 @@ public class MHTHwRechargeController {
|
|||
return "FAIL";
|
||||
}
|
||||
|
||||
MHTRechargeRequestBean rechargeRequestBean = getData(parameterMap);
|
||||
MHTRechargeRequestBean.DataBean rechargeRequestBean = getData(parameterMap);
|
||||
|
||||
MHTRechargeRequestBean.DataBean data = rechargeRequestBean.getData();
|
||||
MHTRechargeRequestBean.DataBean data = rechargeRequestBean;
|
||||
if (data == null) {
|
||||
LOGGER.info("data is null");
|
||||
return "FAIL";
|
||||
|
@ -77,7 +79,7 @@ public class MHTHwRechargeController {
|
|||
String consumerid = data.getConsumerid();
|
||||
String sign = data.getSign();
|
||||
|
||||
String sig = getMySign(rechargeRequestBean, appsecret);
|
||||
String sig = getMySign(data, appsecret);
|
||||
|
||||
if (!sig.equals(sign)) {
|
||||
LOGGER.info("callback==>roleUid={},sin derify fail,mine sign={} ", consumerid, sig);
|
||||
|
@ -96,11 +98,11 @@ public class MHTHwRechargeController {
|
|||
}
|
||||
|
||||
|
||||
private MHTRechargeRequestBean getData(HashMap<String, String> parameterMap) {
|
||||
private MHTRechargeRequestBean.DataBean getData(HashMap<String, String> parameterMap) {
|
||||
String source = parameterMap.keySet().iterator().next();
|
||||
source = source.replaceAll(" ", "+");
|
||||
LOGGER.info(source);
|
||||
MHTRechargeRequestBean rechargeRequestBean = gson.fromJson(source, MHTRechargeRequestBean.class);
|
||||
MHTRechargeRequestBean.DataBean rechargeRequestBean = gson.fromJson(source, MHTRechargeRequestBean.DataBean.class);
|
||||
return rechargeRequestBean;
|
||||
}
|
||||
|
||||
|
@ -143,7 +145,7 @@ public class MHTHwRechargeController {
|
|||
LOGGER.info("serviceKey : " + serviceKey);
|
||||
try {
|
||||
rPCClient = ClientAdapterPo.getClientAdapterPo(serviceKey);
|
||||
result = rPCClient.getClient().deliveryRecharge(cUserInfo.getId(), Integer.parseInt(consumerName), consumerid, orderNo, 0, 0);
|
||||
result = rPCClient.getClient().deliveryRecharge(cUserInfo.getId(), consumerName, consumerid, orderNo, 0, 0);
|
||||
} catch (Exception e) {
|
||||
LOGGER.info("callback=>", e);
|
||||
} finally {
|
||||
|
@ -173,7 +175,7 @@ public class MHTHwRechargeController {
|
|||
return "SUCCESS";
|
||||
}
|
||||
|
||||
private static String getMySign(MHTRechargeRequestBean rechargeRequestBean,String appsecret) throws IllegalAccessException {
|
||||
private static String getMySign(MHTRechargeRequestBean.DataBean rechargeRequestBean,String appsecret) throws IllegalAccessException {
|
||||
StringBuilder stringBuilder = new StringBuilder();
|
||||
TreeMap<String, String> tempMap = new TreeMap<>(new Comparator<String>() {
|
||||
@Override
|
||||
|
@ -182,8 +184,8 @@ public class MHTHwRechargeController {
|
|||
}
|
||||
});
|
||||
|
||||
MHTRechargeRequestBean.DataBean data = rechargeRequestBean.getData();
|
||||
Class<? extends MHTRechargeRequestBean.DataBean> aClass = rechargeRequestBean.getData().getClass();
|
||||
MHTRechargeRequestBean.DataBean data = rechargeRequestBean;
|
||||
Class<? extends MHTRechargeRequestBean.DataBean> aClass = rechargeRequestBean.getClass();
|
||||
Field[] fields = aClass.getDeclaredFields();
|
||||
for (Field field : fields) {
|
||||
field.setAccessible(true);
|
||||
|
|
|
@ -0,0 +1,128 @@
|
|||
package com.jmfy.controller;
|
||||
|
||||
public class MHTNetRechargeRequestBean {
|
||||
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
Sign=MD5(url+MD5(secretKey))
|
||||
|
||||
如果secretKey=”9a9abfc62d437a47196744f7fe57bc4b”,
|
||||
MD5后为"0d77c0a7d092a3a2db5b8a5013ae0f22"
|
||||
例如支付同步参数:
|
||||
|
||||
|
||||
consumerid=11111111
|
||||
consumername=2222222
|
||||
orderNo=20171223154943944475091217940480
|
||||
orderDetail=3333333
|
||||
gameCurrency=0
|
||||
mhtOrderAmt=100
|
||||
time=20171223164800
|
||||
sign=2104de6bb884f7e972242c51ca45d703
|
||||
|
||||
|
||||
|
||||
*/
|
||||
private String app_id;//应用id
|
||||
|
||||
private Long ts;//13位数时间戳(单位:毫秒)
|
||||
|
||||
private Long server_id;//13位数时间戳(单位:毫秒)
|
||||
|
||||
private String order_id;//平台订单编号
|
||||
|
||||
private String user_id;//游戏用户唯一标识
|
||||
|
||||
private String player_id;//CP游戏角色编号
|
||||
|
||||
private String item_id;//CP游戏角色编号
|
||||
|
||||
private String currency_code;//CP游戏角色编号
|
||||
|
||||
private double currency_value;//货币值
|
||||
|
||||
private String sign;
|
||||
|
||||
|
||||
public String getApp_id() {
|
||||
return app_id;
|
||||
}
|
||||
|
||||
public void setApp_id(String app_id) {
|
||||
this.app_id = app_id;
|
||||
}
|
||||
|
||||
public Long getTs() {
|
||||
return ts;
|
||||
}
|
||||
|
||||
public void setTs(Long ts) {
|
||||
this.ts = ts;
|
||||
}
|
||||
|
||||
public Long getServer_id() {
|
||||
return server_id;
|
||||
}
|
||||
|
||||
public void setServer_id(Long server_id) {
|
||||
this.server_id = server_id;
|
||||
}
|
||||
|
||||
public String getOrder_id() {
|
||||
return order_id;
|
||||
}
|
||||
|
||||
public void setOrder_id(String order_id) {
|
||||
this.order_id = order_id;
|
||||
}
|
||||
|
||||
public String getUser_id() {
|
||||
return user_id;
|
||||
}
|
||||
|
||||
public void setUser_id(String user_id) {
|
||||
this.user_id = user_id;
|
||||
}
|
||||
|
||||
public String getPlayer_id() {
|
||||
return player_id;
|
||||
}
|
||||
|
||||
public void setPlayer_id(String player_id) {
|
||||
this.player_id = player_id;
|
||||
}
|
||||
|
||||
public String getItem_id() {
|
||||
return item_id;
|
||||
}
|
||||
|
||||
public void setItem_id(String item_id) {
|
||||
this.item_id = item_id;
|
||||
}
|
||||
|
||||
public String getCurrency_code() {
|
||||
return currency_code;
|
||||
}
|
||||
|
||||
public void setCurrency_code(String currency_code) {
|
||||
this.currency_code = currency_code;
|
||||
}
|
||||
|
||||
public double getCurrency_value() {
|
||||
return currency_value;
|
||||
}
|
||||
|
||||
public void setCurrency_value(double currency_value) {
|
||||
this.currency_value = currency_value;
|
||||
}
|
||||
|
||||
public String getSign() {
|
||||
return sign;
|
||||
}
|
||||
|
||||
public void setSign(String sign) {
|
||||
this.sign = sign;
|
||||
}
|
||||
}
|
|
@ -150,7 +150,7 @@ public class MHTRechargeController {
|
|||
LOGGER.info("serviceKey : " + serviceKey);
|
||||
try {
|
||||
rPCClient = ClientAdapterPo.getClientAdapterPo(serviceKey);
|
||||
result = rPCClient.getClient().deliveryRecharge(cUserInfo.getId(),Integer.parseInt(goodID),uid, orderNo,0,0);
|
||||
result = rPCClient.getClient().deliveryRecharge(cUserInfo.getId(),goodID,uid, orderNo,0,0);
|
||||
} catch (Exception e) {
|
||||
LOGGER.info("callback=>",e);
|
||||
}finally {
|
||||
|
|
|
@ -96,7 +96,7 @@ public class RechargeController {
|
|||
LOGGER.info("serviceKey : " + serviceKey);
|
||||
try {
|
||||
rPCClient = ClientAdapterPo.getClientAdapterPo(serviceKey);
|
||||
result = rPCClient.getClient().deliveryRecharge(cUserInfo.getId(),Integer.parseInt(productID),userId, orderId,orderTime,0);
|
||||
result = rPCClient.getClient().deliveryRecharge(cUserInfo.getId(),productID,userId, orderId,orderTime,0);
|
||||
} catch (Exception e) {
|
||||
LOGGER.info("callback=>",e);
|
||||
}finally {
|
||||
|
|
|
@ -1,12 +1,15 @@
|
|||
echo off
|
||||
echo "======first del java src files======"
|
||||
del E:\sdkdel\delivery-server\src\main\thrift\idl\gen-java\com\jmfy\thrift\idl\*.java
|
||||
del D:\jielin\delivery-server\src\main\thrift\idl\gen-java\com\jmfy\thrift\idl\*.java
|
||||
|
||||
del E:\sdkdel\delivery-server\src\main\java\com\jmfy\thrift\idl\*.java
|
||||
del D:\jielin\delivery-server\src\main\java\com\jmfy\thrift\idl\*.java
|
||||
|
||||
echo "======gen java src files======"
|
||||
for %%i in (".\*.bat") do echo %%i
|
||||
echo "======gen java src files======"
|
||||
|
||||
for %%i in (".\*.thrift") do thrift-0.9.2 --gen java %%i
|
||||
echo "=======begin to copy src files======"
|
||||
copy .\gen-java\com\jmfy\thrift\idl\*.java E:\sdkdel\delivery-server\src\main\java\com\jmfy\thrift\idl /y
|
||||
copy .\gen-java\com\jmfy\thrift\idl\*.java D:\jielin\delivery-server\src\main\java\com\jmfy\thrift\idl /y
|
||||
echo on
|
||||
pause
|
|
@ -7,5 +7,5 @@ struct Result {
|
|||
}
|
||||
|
||||
service RPCRequestIFace{
|
||||
Result deliveryRecharge(1:i32 uid, 2:i32 goodsId,3: string openId,4: string orderId,5: i64 orderTime, 6:i32 amount);
|
||||
Result deliveryRecharge(1:i32 uid, 2:string goodsId,3: string openId,4: string orderId,5: i64 orderTime, 6:i32 amount);
|
||||
}
|
Loading…
Reference in New Issue