灵动sdk接入

zhangshanxue 2020-07-28 21:11:08 +08:00
parent 4a5eee2c64
commit b17d5ee774
3 changed files with 305 additions and 0 deletions

View File

@ -0,0 +1,170 @@
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.KTSDKConstans;
import com.jmfy.util.MD5Util;
import com.jmfy.util.MHTSDKConstans;
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.io.UnsupportedEncodingException;
import java.lang.reflect.Field;
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.*;
/**
* consumerId
* consumerName Cp
* orderNo
* orderDetail
* mhtOrderAmt ()
* time
* sign
*/
@RestController
public class MHTRechargeController {
@Resource
private CUserDao cuserDao;
private static final Logger LOGGER = LoggerFactory.getLogger(MHTRechargeController.class);
private static Gson gson = new Gson();
@RequestMapping(value = "/MHTcallback")
public String MHTcallback( HttpServletRequest request) throws Exception {
HashMap<String, String> parameterMap = JsonUtil.getInstence().getParameterMap(request);
if(parameterMap.isEmpty()) {
LOGGER.info( "data is null");
return "FAIL";
}
String source = parameterMap.keySet().iterator().next();
source = source.replaceAll(" ", "+");
LOGGER.info(source);
MHTRechargeRequestBean rechargeRequestBean = gson.fromJson(source, MHTRechargeRequestBean.class);
MHTRechargeRequestBean.DataBean data = rechargeRequestBean.getData();
if(data == null){
LOGGER.info( "data is null");
return "FAIL";
}
String consumerid = data.getConsumerid();
String consumerName = data.getConsumerName();
String orderNo = data.getOrderNo();
String sign = data.getSign();
String sig = getMySign(rechargeRequestBean);
String goodID;
if(consumerName.isEmpty()){
LOGGER.info("callback==>roleUid={},sin derify fail,mine sign={} ",consumerid,sig);
return "FAIL";
}
String[] split1 = consumerName.split("#");
goodID = split1[0];
if(null==goodID||goodID.isEmpty()){
LOGGER.info("callback==>roleUid={},sin derify fail,mine sign={} ,consumerName={}",consumerid,sig,consumerName);
}
if (!sig.equals(sign)){
LOGGER.info("callback==>roleUid={},sin derify fail,mine sign={} ",consumerid,sig);
return "FAIL";
}
CUserInfo cUserInfo = cuserDao.findUserInfo(Integer.valueOf(consumerid));
if(cUserInfo == null){
LOGGER.info( "该用户无此角色"+consumerid);
return "FAIL";
}
CPayOrder cPayOrder = cuserDao.getCpayOrderByOrderId(orderNo);
String response = "SUCCESS";
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(consumerid);
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(),Integer.parseInt(goodID),consumerid, 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={} ",consumerid);
response = "FAIL";
}
if (result != null && result.getResultCode() == 1) {
LOGGER.info(" callback==>RPC result : ResultCode : " + result.getResultCode() + "; ResultMsg : " + result.getResultMsg());
cuserDao.addCpayOrder(cPayOrder);
} else {
response = "FAIL";
}
}
return response;
}
private static String getMySign( MHTRechargeRequestBean rechargeRequestBean ) throws IllegalAccessException {
StringBuilder stringBuilder = new StringBuilder();
MHTRechargeRequestBean.DataBean data = rechargeRequestBean.getData();
Class<? extends MHTRechargeRequestBean.DataBean> aClass = rechargeRequestBean.getData().getClass();
Field[] fields = aClass.getDeclaredFields();
for(Field field : fields){
field.setAccessible(true);
if("sign".equals(field.getName())){
continue;
}
String value = field.get(data).toString();
if(StringUtils.isEmpty(value)){
continue;
}
String key =field.getName();
stringBuilder.append(key).append("=").append(value).append("&");
}
String plain = stringBuilder.substring(0, stringBuilder.length() - 1) + MHTSDKConstans.appid;
return MD5Util.encrypByMd5(plain);
}
public static void main(String[] args) throws IllegalAccessException, UnsupportedEncodingException {
}
}

View File

@ -0,0 +1,111 @@
package com.jmfy.controller;
public class MHTRechargeRequestBean {
private int state;
private DataBean data;
public int getState() {
return state;
}
public void setState(int state) {
this.state = state;
}
public DataBean getData() {
return data;
}
public void setData(DataBean data) {
this.data = data;
}
public static class DataBean {
/**
*
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 consumerid;//游戏用户唯一标识
private String consumerName;//Cp自定义信息
private String orderNo;//平台订单编号
private String orderDetail;//订单详情
private int gameCurrency = 0;//获取的金币 没有用传0
private String mhtOrderAmt;//分
private String time;//平台支付时间
private String sign;
public String getConsumerid() {
return consumerid;
}
public void setConsumerid(String consumerid) {
this.consumerid = consumerid;
}
public String getConsumerName() {
return consumerName;
}
public void setConsumerName(String consumerName) {
this.consumerName = consumerName;
}
public String getOrderNo() {
return orderNo;
}
public void setOrderNo(String orderNo) {
this.orderNo = orderNo;
}
public String getOrderDetail() {
return orderDetail;
}
public void setOrderDetail(String orderDetail) {
this.orderDetail = orderDetail;
}
public String getMhtOrderAmt() {
return mhtOrderAmt;
}
public void setMhtOrderAmt(String mhtOrderAmt) {
this.mhtOrderAmt = mhtOrderAmt;
}
public String getTime() {
return time;
}
public void setTime(String time) {
this.time = time;
}
public String getSign() {
return sign;
}
public void setSign(String sign) {
this.sign = sign;
}
}
}

View File

@ -0,0 +1,24 @@
package com.jmfy.util;
public class MHTSDKConstans {
public static String appid = "e4ecefecc8034cffaa69e81b2c044f2c";
public static String rhappid = "7bb5f604306ccd93fc19f05d3a374e84";
public static String back = "http://kwsdk.17173g.cn/platformPay/MHT/callBack";
// public static String androidVerify = "http://sujie.passport.ktsdk.com/user/verifyAccount";
// public static String iosVerify = "http://sujie.passport.ktsdk.com/userios/verifyAccount";
public static String loginVerify = " http://kwsdk.17173g.cn/cp/checkLogin";
public static String secretKey = "5b980134872a8afa993f8a3b35a8efbd";
public static String channelid = "MHT";
public static void main(String[] args) {
// boolean equals = "http://sujie.passport.ktsdk.com/user/verifyAccount".equals(androidVerify);
// System.out.println(equals);
}
}