悠谷折扣服支付

master
PC-202302260912\Administrator 2023-07-12 18:23:58 +08:00
parent 9604639706
commit bee2be3523
1 changed files with 89 additions and 0 deletions

View File

@ -0,0 +1,89 @@
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 YouguDiscountRechargeController {
@Resource
private PayLogic payLogic;
private static final String PAYKEY = "ceff390cc5be9960dcc90c62dd9fe64b";
private static final Logger LOGGER = LoggerFactory.getLogger(YouguDiscountRechargeController.class);
@RequestMapping(value = "/Web/youguDiscountCallback")
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"); //签名(规则见下
String mySign = MD5Util.encrypByMd5(sid + uid + orderno + amount + gameExt + nonce + PAYKEY);
if (!mySign.equals(token)) {
LOGGER.error("youguXQCallback==>roleUid={},sin derify fail, my sign={} sign={}", gameExt, mySign, token);
return false;
}
return true;
}
}