generated from root/miduo_server
悠谷渠道小七专服
parent
5f8256b0b3
commit
7faaa5aa2b
|
@ -0,0 +1,91 @@
|
|||
package com.jmfy.controller;
|
||||
|
||||
import com.jmfy.paramBean.PaySdkEnum;
|
||||
import com.jmfy.util.JsonUtil;
|
||||
import com.jmfy.util.MD5Util;
|
||||
import org.json.JSONObject;
|
||||
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.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 悠谷游戏
|
||||
*/
|
||||
@RestController
|
||||
public class YouGuXQRechargeController {
|
||||
|
||||
@Resource
|
||||
private PayLogic payLogic;
|
||||
|
||||
private static final String PAYKEY = "afc0f968ddbdb0d1de3e59ddb01ad892";
|
||||
|
||||
private static final Logger LOGGER = LoggerFactory.getLogger(YouGuXQRechargeController.class);
|
||||
|
||||
@RequestMapping(value = "/Web/youguXQCallback")
|
||||
public String youguCallback(HttpServletRequest request) throws Exception {
|
||||
JSONObject jsonObject = new JSONObject();
|
||||
jsonObject.put("errno","1");
|
||||
|
||||
HashMap<String, String> parameterMap = JsonUtil.getInstence().getParameterMap2(request);
|
||||
if (parameterMap.isEmpty()) {
|
||||
LOGGER.info("悠谷---》youguXQCallback data is null");
|
||||
jsonObject.put("errmsg","youguXQCallback data is null");
|
||||
return jsonObject.toString();
|
||||
}
|
||||
boolean sign = verifySign(parameterMap);
|
||||
if (!sign) {
|
||||
LOGGER.info("悠谷---》sign error");
|
||||
jsonObject.put("errmsg","sign error");
|
||||
return jsonObject.toString();
|
||||
}
|
||||
|
||||
String orderno = parameterMap.get("orderno"); // 51sfsy 支付订单号(唯一
|
||||
int amount = Integer.parseInt(parameterMap.get("amount"))*100; // 充值金额(单位:元)(需要换算成分)
|
||||
String gameExt = request.getParameter("extinfo"); //透传参数,如CP下单有值提交,则会原样回传,不得超过255个字符
|
||||
String[] callback = gameExt.split("_");
|
||||
String result = payLogic.initOrder(gameExt, orderno, String.valueOf(amount), new Date(), callback[0], PaySdkEnum.YOUGU);
|
||||
jsonObject.put("errmsg",result);
|
||||
if (result.equals("SUCCESS")){
|
||||
jsonObject.put("errno","0");
|
||||
return jsonObject.toString();
|
||||
}
|
||||
return jsonObject.toString();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 验证sign
|
||||
* @param map
|
||||
* @return
|
||||
*/
|
||||
private boolean verifySign(Map<String, String> map) {
|
||||
String status = map.get("status"); // 状态(1 成功,2 失败)(目前支付失败不通知)
|
||||
if (status == null || status.isEmpty() || !"1".equals(status)) {
|
||||
LOGGER.error("youguXQCallback orderStatus={}", status);
|
||||
return false;
|
||||
}
|
||||
String sid = map.get("sid"); //游戏区服标识
|
||||
String uid = map.get("uid"); //51sfsy 用户 ID
|
||||
String orderno = map.get("orderno"); // 51sfsy 支付订单号(唯一
|
||||
String amount = map.get("amount"); // 充值金额(单位:元)
|
||||
String gameExt = map.get("extinfo"); //透传参数,如CP下单有值提交,则会原样回传,不得超过255个字符
|
||||
String nonce = map.get("nonce"); //签名时间戳(由 51sfsy 服务端获取当前时间戳,用于生成签名)
|
||||
String token = map.get("token"); //签名(规则见下
|
||||
|
||||
StringBuilder sbKey = new StringBuilder();
|
||||
sbKey.append(sid).append(uid).append(orderno).append(amount).append(gameExt).append(nonce).append(PAYKEY);
|
||||
String mySign = MD5Util.encrypByMd5(sbKey.toString());
|
||||
if (!mySign.equals(token)) {
|
||||
LOGGER.error("youguXQCallback==>roleUid={},sin derify fail, my sign={} sign={}", gameExt, mySign, token);
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue