| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140 |
- package com.ljsd.controller;
- import com.google.gson.Gson;
- import com.ljsd.channel.Mock361YXSDK;
- import com.ljsd.channel.MockQuickSDK;
- import com.ljsd.jieling.thrift.idl.RechargeResult;
- import com.ljsd.jieling.thrift.idl.Result;
- import com.ljsd.jieling.thrift.pool.ThriftClient;
- import com.ljsd.pojo.ResMsg;
- import com.ljsd.redis.RedisKey;
- import com.ljsd.util.BaseGlobal;
- import com.ljsd.util.StringUtils;
- import com.ljsd.util.TimeUtil;
- import com.ljsd.util.XmlParser;
- import com.mongodb.BasicDBObject;
- import com.mongodb.DBObject;
- import org.apache.http.client.methods.CloseableHttpResponse;
- import org.apache.http.client.methods.HttpGet;
- import org.apache.http.client.utils.URIBuilder;
- import org.apache.http.impl.client.CloseableHttpClient;
- import org.apache.http.impl.client.HttpClients;
- import org.apache.http.util.EntityUtils;
- 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.URISyntaxException;
- import java.util.*;
- public class PayCallbackController extends HttpServlet {
- private static final Logger LOGGER = LoggerFactory.getLogger(PayCallbackController.class);
- private static Gson gson = new Gson();
- private final static String _COLLECTION_PAY = "pay";
- private static final CloseableHttpClient httpClient = HttpClients.createDefault();
- public PayCallbackController() {
- super();
- }
- public void destroy() {
- super.destroy();
- }
- public void doGet(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException {
- this.doPost(request, response);
- }
- protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
- request.setCharacterEncoding("UTF-8");
- response.setCharacterEncoding("UTF-8");
- response.setContentType("application/json; charset=utf-8");
- // String uid = request.getParameter("userId");
- String sign = request.getParameter("sign");
- String nt_data = request.getParameter("nt_data");
- String md5Sign = request.getParameter("md5Sign");
- LOGGER.info("PayCallbackController sign = {}, nt_data = {}, md5Sign = {}, app_id = {}", sign, nt_data,
- md5Sign, request.getParameter("app_id"));
- ResMsg resMsg = new ResMsg();
- resMsg.setCode(1);
- DBObject payInfo = new BasicDBObject();
- try (PrintWriter out = response.getWriter();){
- boolean ok = false;
- if(!StringUtils.checkIsEmpty(md5Sign) && !StringUtils.checkIsEmpty(nt_data) && !StringUtils.checkIsEmpty(sign)){
- ok = MockQuickSDK.verifyCallback(nt_data, sign, md5Sign);
- if (ok) {
- payInfo = MockQuickSDK.saveDB(nt_data);
- }
- } else if (!StringUtils.checkIsEmpty(request.getParameter("app_id"))) {
- String appId = request.getParameter("app_id");
- String cpOrderId = request.getParameter("cp_order_id");
- String orderAmount = request.getParameter("order_amount");
- String orderId = request.getParameter("order_id");
- String roleId = request.getParameter("role_id");
- String serverId = request.getParameter("server_id");
- String timestamp = request.getParameter("timestamp");
- String uid = request.getParameter("uid");
- Map<String, String> params = new HashMap<>();
- params.put("app_id",appId);
- params.put("cp_order_id",cpOrderId);
- params.put("order_amount",orderAmount);
- params.put("order_id", orderId);
- params.put("role_id", roleId);
- params.put("server_id", serverId);
- params.put("timestamp", timestamp);
- params.put("uid", uid);
- ok = Mock361YXSDK.verifyCallback(params, sign);
- if (ok) {
- payInfo = Mock361YXSDK.saveDB(params);
- }
- } else {
- resMsg.setMsg("不支持该渠道");
- LOGGER.error("不支持该渠道");
- out.print(gson.toJson(resMsg));
- return;
- }
- if (!ok) {
- resMsg.setMsg("支付sign验证失败");
- LOGGER.error("支付sign验证失败");
- out.print(gson.toJson(resMsg));
- return;
- }
- if (payInfo == null) {
- resMsg.setMsg("订单验证失败");
- LOGGER.error("订单验证失败");
- out.print(gson.toJson(resMsg));
- return;
- }
- // 订单入库, 结构根据gameserver的PayVo推测的
- // mongo db:x5_tk_login collect:pay
- // status 怀疑没有使用,发货成功后,会把handlestatus置为1
- // 放在各sdk实例的saveDB中
- // 通知发货
- LOGGER.info("通知发货, payInfo = {}", payInfo);
- Result result = ThriftClient.deliveryRecharge((int) payInfo.get("uid"), (String) payInfo.get("pay_item"),
- (String) payInfo.get("open_id"), (String) payInfo.get("billno"), Long.parseLong((String) payInfo.get("creattime")),
- (int) payInfo.get("money"), (String) payInfo.get("region"));
- LOGGER.info("deliveryRecharge result = {}", result);
- if (result == null || result.resultCode != 1) {
- resMsg.setCode(1);
- resMsg.setMsg("发货失败");
- return;
- }
- out.print("SUCCESS");
- }catch (Exception e){
- e.printStackTrace();
- }
- }
- }
|