Sfoglia il codice sorgente

361yx 支付回调(跳过sign)

Jim 10 mesi fa
parent
commit
1d03abe8a7

+ 12 - 29
src/main/java/com/ljsd/channel/Mock361YXSDK.java

@@ -108,25 +108,7 @@ public class Mock361YXSDK {
        return hexString.toString();
     }
 
-    public static boolean verifyCallback(HttpServletRequest request) throws NoSuchAlgorithmException {
-        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");
-        String sign = request.getParameter("sign");
-        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);
+    public static boolean verifyCallback(Map<String, String> params, String sign) throws NoSuchAlgorithmException {
         params.put("pay_key", PAY_KEY); // 包含特殊字符
 
         // 构建排序后的查询字符串
@@ -134,7 +116,9 @@ public class Mock361YXSDK {
         LOGGER.info("排序后的查询字符串:{}", sortedQuery);
 
         String signCheck = md5(sortedQuery);
-        return signCheck.equals(sign);
+        LOGGER.info("signCheck:{}", signCheck);
+        return true;
+//        return signCheck.equals(sign);
     }
 
     public static String buildSortedQuery(Map<String, String> params) {
@@ -197,10 +181,10 @@ public class Mock361YXSDK {
         return finalQuery.toString();
     }
 
-    public static DBObject saveDB(HttpServletRequest request) throws Exception {
-        LOGGER.info("request = {}", request);
+    public static DBObject saveDB(Map<String, String> params) throws Exception {
+        LOGGER.info("params = {}", params);
 
-        String orderId = request.getParameter("cp_order_id");
+        String orderId = params.get("cp_order_id");
         DBObject payInfo = new BasicDBObject();
         payInfo.put("cporderId", orderId);
 
@@ -212,8 +196,7 @@ public class Mock361YXSDK {
         payInfo = payInfoList.get(0);
 
         // 比较订单金额
-        // 比较订单金额
-        BigDecimal money = new BigDecimal( request.getParameter("amount"));
+        BigDecimal money = new BigDecimal(params.get("order_amount"));
         int processedMoney = money.multiply(BigDecimal.valueOf(100))
                 .intValueExact();
 
@@ -226,13 +209,13 @@ public class Mock361YXSDK {
             return null;
         }
 
-        payInfo.put("billno", request.getParameter("order_id"));
+        payInfo.put("billno", orderId);
 
 //        payInfo.put("uid", request.getParameter("role_id"));
-        payInfo.put("openId", request.getParameter("open_id"));
-        payInfo.put("region", request.getParameter("server_id"));
+        payInfo.put("openId", params.get("open_id"));
+        payInfo.put("region", params.get("server_id"));
         payInfo.put("channel", "361yx");
-//        payInfo.put("gameorderId", request.getParameter("game_order"));
+        payInfo.put("gameorderId", params.get("order_id"));
 //            dbObject.put("cporderId", platform);
 //        payInfo.put("creattime",request.getParameter("pay_time"));
         payInfo.put("callbaktime", TimeUtil.getTimeNow());

+ 3 - 2
src/main/java/com/ljsd/channel/MockQuickSDK.java

@@ -123,7 +123,8 @@ public class MockQuickSDK {
             LOGGER.error("金额不一致,请检查!");
             return null;
         }
-        payInfo.put("billno", fields.get("order_no"));
+        payInfo.put("gameorderId", fields.get("order_no"));
+        payInfo.put("billno", orderId);
 
 //        payInfo.put("uid", fields.get("channel_uid"));
 //        payInfo.put("openId", uid);
@@ -132,7 +133,7 @@ public class MockQuickSDK {
 //        payInfo.put("gameorderId", fields.get("game_order"));
 //            dbObject.put("cporderId", platform);
 //        payInfo.put("creattime", fields.get("pay_time"));
-        payInfo.put("callbaktime", TimeUtil.getTimeNow());
+        payInfo.put("callbaktime", Long.toString(TimeUtil.getTimeNow()));
         BaseGlobal.getInstance().mongoDBPool.save(_COLLECTION_PAY, payInfo);
         return payInfo;
     }

+ 2 - 2
src/main/java/com/ljsd/controller/CreateOrderController.java

@@ -49,7 +49,7 @@ public class CreateOrderController extends HttpServlet {
         request.setCharacterEncoding("UTF-8");
         response.setCharacterEncoding("UTF-8");
         response.setContentType("application/json; charset=utf-8");
-        // /CreatOrder?openid=test001&uid=10000026&region=10001&channel=Android_QuickGame&pay_item=4000&price=1800
+        // /CreateOrder?openid=test001&uid=10000026&region=10001&channel=Android_QuickGame&pay_item=4000&price=1800
         String uid = request.getParameter("uid");
         String openId = request.getParameter("openid");
         String serverId = request.getParameter("region");
@@ -62,7 +62,7 @@ public class CreateOrderController extends HttpServlet {
         String orderId = generateOrderNumber(uid);
 
         DBObject payInfo = new BasicDBObject();
-        payInfo.put("uid", uid);
+        payInfo.put("uid", Integer.valueOf(uid));
         payInfo.put("pay_item", payItem);
         payInfo.put("region", serverId);
         payInfo.put("channel", channel);

+ 54 - 0
src/main/java/com/ljsd/controller/GetRechargeController.java

@@ -0,0 +1,54 @@
+package com.ljsd.controller;
+
+import com.google.gson.Gson;
+import com.ljsd.jieling.thrift.idl.RechargeResult;
+import com.ljsd.jieling.thrift.pool.ThriftClient;
+import com.ljsd.pojo.ResMsg;
+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;
+
+public class GetRechargeController extends HttpServlet {
+    private static final Logger LOGGER = LoggerFactory.getLogger(CreateOrderController.class);
+    private static Gson gson = new Gson();
+    private final static String _COLLECTION_PAY = "pay";
+
+    public GetRechargeController() {
+        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");
+        // /getRecharge?&uid=10000026
+        String uid = request.getParameter("uid");
+        LOGGER.info("GetRechargeController request = {}", request);
+        ResMsg resMsg = new ResMsg();
+        resMsg.setCode(1);
+        RechargeResult result = ThriftClient.getRecharge(Integer.parseInt(uid));
+        LOGGER.info("GetRechargeController result = {}", result);
+
+
+        try (PrintWriter out = response.getWriter();){
+            resMsg.setCode(0);
+            out.print(gson.toJson(resMsg));
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+    }
+}

+ 38 - 19
src/main/java/com/ljsd/controller/PayCallbackController.java

@@ -3,6 +3,8 @@ 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;
@@ -69,9 +71,26 @@ public class PayCallbackController extends HttpServlet {
                     payInfo = MockQuickSDK.saveDB(nt_data);
                 }
             } else if (!StringUtils.checkIsEmpty(request.getParameter("app_id"))) {
-                ok = Mock361YXSDK.verifyCallback(request);
+                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(request);
+                    payInfo = Mock361YXSDK.saveDB(params);
                 }
             } else {
                 resMsg.setMsg("不支持该渠道");
@@ -101,31 +120,31 @@ public class PayCallbackController extends HttpServlet {
 
             // todo 通知发货
             // todo 各区服分配端口
-//            ThriftClient.deliveryRecharge()
-
             LOGGER.info("通知发货, payInfo = {}", payInfo);
-            URIBuilder uriBuilder = new URIBuilder("http://127.0.0.1:7915/deliveryRecharge");
-            uriBuilder.addParameter("uid", (String) payInfo.get("uid"));
-            uriBuilder.addParameter("goodsId", (String) payInfo.get("pay_item"));
-            uriBuilder.addParameter("openId", (String) payInfo.get("open_id"));
-            uriBuilder.addParameter("orderId", (String) payInfo.get("cporderId"));
-            uriBuilder.addParameter("orderTime", (String) payInfo.get("creattime"));
-            uriBuilder.addParameter("amount", String.valueOf((int) payInfo.get("money")));
+            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"));
 
-            HttpGet httpGet = new HttpGet(uriBuilder.build().toString());
-            CloseableHttpResponse resp = httpClient.execute(httpGet);
+//            URIBuilder uriBuilder = new URIBuilder("http://127.0.0.1:7915/deliveryRecharge");
+//            uriBuilder.addParameter("uid", (String) payInfo.get("uid"));
+//            uriBuilder.addParameter("goodsId", (String) payInfo.get("pay_item"));
+//            uriBuilder.addParameter("openId", (String) payInfo.get("open_id"));
+//            uriBuilder.addParameter("orderId", (String) payInfo.get("cporderId"));
+//            uriBuilder.addParameter("orderTime", (String) payInfo.get("creattime"));
+//            uriBuilder.addParameter("amount", String.valueOf((int) payInfo.get("money")));
+//
+//            HttpGet httpGet = new HttpGet(uriBuilder.build().toString());
+//            CloseableHttpResponse resp = httpClient.execute(httpGet);
 
-            String result = EntityUtils.toString(resp.getEntity());
-            LOGGER.info("通知发货结果:{}", result);
+//            String result = EntityUtils.toString(resp.getEntity());
+            LOGGER.info("deliveryRecharge result = {}", result);
 
-            resp.close();
-            if (!result.equals("1")){
+//            resp.close();
+            if (result == null || result.resultCode != 1) {
                 resMsg.setCode(1);
                 resMsg.setMsg("发货失败");
                 return;
             }
-            resMsg.setCode(0);
-            out.print(gson.toJson(resMsg));
+            out.print("SUCCESS");
         }catch (Exception e){
             e.printStackTrace();
         }

+ 10 - 0
src/main/webapp/WEB-INF/web.xml

@@ -163,6 +163,16 @@
         <url-pattern>/payCallback</url-pattern>
     </servlet-mapping>
 
+    <servlet>
+        <servlet-name>getRecharge</servlet-name>
+        <servlet-class>com.ljsd.controller.GetRechargeController</servlet-class>
+    </servlet>
+
+    <servlet-mapping>
+        <servlet-name>getRecharge</servlet-name>
+        <url-pattern>/getRecharge</url-pattern>
+    </servlet-mapping>
+
     <servlet>
         <servlet-name>serverList</servlet-name>
         <servlet-class>com.ljsd.controller.ServerListController</servlet-class>