jk-GitHub-coder 3 年之前
父節點
當前提交
1c9852e749

+ 190 - 49
YijiaRestful/src/main/java/com/platform/yijia/controller/SaoBeiPayController.java

@@ -4,7 +4,9 @@ import com.alibaba.fastjson.JSON;
 import com.google.gson.Gson;
 import com.platform.yijia.config.YiJiaRequest;
 import com.platform.yijia.param.request.PayInfoRequest;
+import com.platform.yijia.pojo.PayOrder;
 import com.platform.yijia.service.*;
+import com.platform.yijia.utils.CodeMsg;
 import com.platform.yijia.utils.ResultData;
 import com.platform.yijia.utils.weixinapp.WxPushUtil;
 import com.saobei.open.sdk.DefaultSaobeiApiClient;
@@ -26,6 +28,7 @@ import org.springframework.web.bind.annotation.*;
 import javax.annotation.Resource;
 import java.text.SimpleDateFormat;
 import java.util.Date;
+import java.util.Map;
 import java.util.Random;
 
 
@@ -106,35 +109,49 @@ public class SaoBeiPayController {
 //    密钥:23570b46a955484d92038f6a18d2b9d6
         Gson gson = new Gson();
         ResultData resultData = null;
-        //创建client
-        SaobeiApiClient<SaobeiJsPayRequest, SaobeiJsPayResponse> client = new DefaultSaobeiApiClient<>("23570b46a955484d92038f6a18d2b9d6");
-        //创建requst
-        SaobeiJsPayRequest requst = new SaobeiJsPayRequest();
-        requst.setPay_ver("110");
-        requst.setPay_type("010");
-        requst.setService_id("012");
-        requst.setMerchant_no("845104816000034");
-        requst.setTerminal_id("18241101");
-        Random random = new Random();
-        String result = "";
-        for (int i = 0; i < 6; i++) {
-            result += random.nextInt(10);
+
+        //根据订单号查询订单信息
+        String ordNo = payInfoRequest.getOrdNo();
+        PayOrder payOrder=payOrderService.selectOrderInfoByOrdNo(ordNo);
+        if(payOrder !=null){
+            if(payOrder.getStatus().equals("0")){
+                //String stationId = payInfoRequest.getStationId();
+                Map<String, String> staPayChannelInfo = stationService.getStationAppIdAndAppSecret(Integer.valueOf(payInfoRequest.getStationId()));
+                if(staPayChannelInfo !=null && staPayChannelInfo.containsKey("merchantNo") && staPayChannelInfo.containsKey("terminalId")
+                        && staPayChannelInfo.containsKey("yunKey") && staPayChannelInfo.containsKey("gzhAppId")){
+                    //创建client
+                    SaobeiApiClient<SaobeiJsPayRequest, SaobeiJsPayResponse> client = new DefaultSaobeiApiClient<>(staPayChannelInfo.get("yunKey"));
+                    //创建requst
+                    SaobeiJsPayRequest requst = new SaobeiJsPayRequest();
+                    requst.setPay_ver("110");
+                    requst.setPay_type("010");
+                    requst.setService_id("012");
+                    requst.setMerchant_no(staPayChannelInfo.get("merchantNo"));                 //商户号
+                    requst.setTerminal_id(staPayChannelInfo.get("terminalId"));                 //终端号
+                    requst.setTerminal_trace(payOrder.getOrderNo());                            //订单号
+                    requst.setTerminal_time(new SimpleDateFormat("yyyyMMddhhmmss").format(new Date()));
+                    requst.setTotal_fee(payOrder.getAmt().toString());
+                    requst.setSub_appid(staPayChannelInfo.get("gzhAppId"));
+                    requst.setOpen_id(payInfoRequest.getOpenId());                      //oJR5R6r4EJhaORFcPap70r_mtFZo   //oRwjv4iHjSUgxNxOJOQ_60Ln7cno
+                    String orderBody = payOrder.getOilName() + " - " +payOrder.getStationName();
+                    requst.setOrder_body(orderBody);
+                    String notifyUrl = "https://" + this.domainName + "/" + this.globalPrefix + "/getYunPayGzhCallback";
+                    //logger.info("回调地址:"+ notifyUrl);
+                    requst.setNotify_url(notifyUrl);
+                    //发送请求
+                    System.out.println("请求报文:"+JSON.toJSONString(requst));
+                    SaobeiJsPayResponse response = client.execute(requst);
+                    System.out.println("返回报文:"+JSON.toJSONString(response));
+                    resultData = ResultData.success(response);
+                }else {
+                    resultData = ResultData.error(CodeMsg.STATION_NULL_INFO);
+                }
+            }else {
+                resultData = ResultData.error(CodeMsg.ALREADY_PAY);
+            }
+        }else {
+            resultData = ResultData.error(CodeMsg.NO_ORDER);
         }
-        String ordNo_1 = System.nanoTime() + result;
-        requst.setTerminal_trace(ordNo_1);     //202003252204310000
-        requst.setTerminal_time(new SimpleDateFormat("yyyyMMddhhmmss").format(new Date()));
-        requst.setTotal_fee("1");
-        requst.setSub_appid("wxc8189d3b3a7283e0");
-        requst.setOpen_id("oJR5R6r4EJhaORFcPap70r_mtFZo");                      //oJR5R6r4EJhaORFcPap70r_mtFZo   //oRwjv4iHjSUgxNxOJOQ_60Ln7cno
-        requst.setOrder_body("sdk测试");
-        String notifyUrl = "https://" + this.domainName + "/" + this.globalPrefix + "/getYunPayGzhCallback";
-        logger.info("回调地址:"+ notifyUrl);
-        requst.setNotify_url(notifyUrl);
-        //发送请求
-        System.out.println("请求报文:"+JSON.toJSONString(requst));
-        SaobeiJsPayResponse response = client.execute(requst);
-        System.out.println("返回报文:"+JSON.toJSONString(response));
-        resultData = ResultData.success(response);
         return gson.toJson(resultData);
     }
 
@@ -179,6 +196,105 @@ public class SaoBeiPayController {
 //    密钥:23570b46a955484d92038f6a18d2b9d6
         Gson gson = new Gson();
         ResultData resultData = null;
+        //根据订单号查询订单信息
+        String ordNo = payInfoRequest.getOrdNo();
+        PayOrder payOrder=payOrderService.selectOrderInfoByOrdNo(ordNo);
+        if(payOrder !=null){
+            if(payOrder.getStatus().equals("0")) {
+                //String stationId = payInfoRequest.getStationId();
+                Map<String, String> staPayChannelInfo = stationService.getStationAppIdAndAppSecret(Integer.valueOf(payInfoRequest.getStationId()));
+                if(staPayChannelInfo !=null && staPayChannelInfo.containsKey("merchantNo") && staPayChannelInfo.containsKey("terminalId")
+                        && staPayChannelInfo.containsKey("yunKey") && staPayChannelInfo.containsKey("appId")) {
+                    //秘钥
+                    String yunKey = staPayChannelInfo.get("yunKey");                //23570b46a955484d92038f6a18d2b9d6
+                    DefaultSaobeiApiClient defaultSaobeiApiClient = new DefaultSaobeiApiClient(yunKey); //2ef428f4f76c414282e831baea9e4b0e
+                    SaobeiMiniPayRequest requst = new SaobeiMiniPayRequest();
+                    requst.setPay_ver("100");
+                    requst.setPay_type("010");
+                    requst.setService_id("015");
+                    requst.setMerchant_no(staPayChannelInfo.get("merchantNo"));                 //商户号   845104816000034
+                    requst.setTerminal_id(staPayChannelInfo.get("terminalId"));                 //终端号   18241101
+                    requst.setTerminal_trace(payOrder.getOrderNo());                            //订单号   202003252204310000 6683315853083916109905
+                    requst.setTerminal_time(new SimpleDateFormat("yyyyMMddhhmmss").format(new Date()));      //"20200325220431"
+
+                    //requst.setTotal_fee(String.valueOf(payOrder.getAmt()));
+                    Double amt = payOrder.getAmt();
+//                    String amtStr = amt + "";
+//                    requst.setTotal_fee(amtStr);
+//                    requst.setTotal_fee(amt.toString());
+                    requst.setTotal_fee(payInfoRequest.getAmt());
+                    String openId = payInfoRequest.getOpenId();
+                    requst.setOpen_id(openId);  // oRwjv4iHjSUgxNxOJOQ_60Ln7cno   obnG9jhDLvom5fGwuhYysmQTW4qQ
+
+                    //订单内容
+                    String orderBody = payOrder.getOilName() + "-" +payOrder.getStationName();
+                    requst.setOrder_body(orderBody);
+                    //回调地址
+                    String notifyUrl = "https://" + this.domainName + "/" + this.globalPrefix + "/getYunPayCallback";
+                    logger.info("回调地址" + notifyUrl);
+                    requst.setNotify_url(notifyUrl);
+                    //小程序appId
+                    requst.setSub_appid(staPayChannelInfo.get("appId"));          //  wxe1135cd390b38a54    wxe568c727d466aef9        智慧易加公众号:wxc8189d3b3a7283e0
+
+                    System.out.println("请求报文" + JSON.toJSONString(requst));
+                    SaobeiMiniPayResponse response = (SaobeiMiniPayResponse) defaultSaobeiApiClient.execute(requst);
+                    System.out.println("返回报文" + JSON.toJSONString(response));
+                    resultData = ResultData.success(response);
+                }else {
+                    resultData = ResultData.error(CodeMsg.STATION_NULL_INFO);
+                }
+            }else {
+                resultData = ResultData.error(CodeMsg.ALREADY_PAY);
+            }
+        }else {
+            resultData = ResultData.error(CodeMsg.NO_ORDER);
+        }
+        return gson.toJson(resultData);
+    }
+
+    /***
+     * 小程序云闪付扫呗回调
+     * @param jsonObject
+     * @return
+     */
+    @RequestMapping(value = "/getYunPayCallback", consumes = "application/json", method = RequestMethod.POST)
+    @ResponseBody
+    @Transactional
+    public JSONObject getYunPayCallback(@RequestBody JSONObject jsonObject){
+        JSONObject result = new JSONObject();       //返回给扫呗状态码
+        System.out.println("扫呗调用回调接口返回参数:" + jsonObject);
+        if(jsonObject.containsKey("result_code") && jsonObject.get("result_code").toString().equals("01")){
+
+            //业务逻辑
+
+            //返给扫呗状态码
+            result.put("return_code", "01");
+            result.put("return_msg", "success");
+        }else {
+            result.put("return_code", "02");
+            result.put("return_msg", "fail");
+        }
+        return result;
+    }
+
+//===========================================================  以下为测试接口   =================================================================================//
+
+    /***
+     * 小程序云闪付拉起支付
+     * @param payInfoRequest
+     * @return
+     * @throws Exception
+     */
+    @RequestMapping(value = {"/yunPayTest"}, consumes = {"application/json"}, method = {RequestMethod.POST})
+    @ResponseBody
+    public String yunPayTest(@RequestBody PayInfoRequest payInfoRequest) throws Exception {
+
+//    智慧易加
+//    商户号码:845104816000034
+//    终端号:18241101
+//    密钥:23570b46a955484d92038f6a18d2b9d6
+        Gson gson = new Gson();
+        ResultData resultData = null;
         DefaultSaobeiApiClient defaultSaobeiApiClient = new DefaultSaobeiApiClient("23570b46a955484d92038f6a18d2b9d6"); //2ef428f4f76c414282e831baea9e4b0e
         SaobeiMiniPayRequest requst = new SaobeiMiniPayRequest();
         requst.setPay_ver("110");
@@ -197,14 +313,14 @@ public class SaoBeiPayController {
 
         requst.setTerminal_time(new SimpleDateFormat("yyyyMMddhhmmss").format(new Date()));      //"20200325220431"
         String amt = payInfoRequest.getAmt();
-        requst.setTotal_fee("1");
+        requst.setTotal_fee("0.01");
         String openId = payInfoRequest.getOpenId();
-        requst.setOpen_id("oJR5R6r4EJhaORFcPap70r_mtFZo");  // oRwjv4iHjSUgxNxOJOQ_60Ln7cno   obnG9jhDLvom5fGwuhYysmQTW4qQ
+        requst.setOpen_id("oRwjv4iHjSUgxNxOJOQ_60Ln7cno");  // oRwjv4iHjSUgxNxOJOQ_60Ln7cno   obnG9jhDLvom5fGwuhYysmQTW4qQ
         requst.setOrder_body("sdk测试");
         String notifyUrl = "https://" + this.domainName + "/" + this.globalPrefix + "/getYunPayCallback";
         logger.info("回调地址"+ notifyUrl);
         requst.setNotify_url(notifyUrl);
-        requst.setSub_appid("wxc8189d3b3a7283e0");          //  wxe1135cd390b38a54    wxe568c727d466aef9        智慧易加公众号:wxc8189d3b3a7283e0
+        requst.setSub_appid("wxe1135cd390b38a54");          //  智慧易加小程序: wxe1135cd390b38a54    wxe568c727d466aef9        智慧易加公众号:wxc8189d3b3a7283e0
         System.out.println("请求报文"+ JSON.toJSONString(requst));
         SaobeiMiniPayResponse response = (SaobeiMiniPayResponse)defaultSaobeiApiClient.execute(requst);
         System.out.println("返回报文"+ JSON.toJSONString(response));
@@ -212,29 +328,54 @@ public class SaoBeiPayController {
         return gson.toJson(resultData);
     }
 
+
     /***
-     * 小程序云闪付扫呗回调
-     * @param jsonObject
+     * 测试
+     * 公众号云闪付拉起支付
+     * @param payInfoRequest
      * @return
+     * @throws Exception
      */
-    @RequestMapping(value = "/getYunPayCallback", consumes = "application/json", method = RequestMethod.POST)
+    @RequestMapping(value = {"/yunPayGzhTest"}, consumes = {"application/json"}, method = {RequestMethod.POST})
     @ResponseBody
-    @Transactional
-    public JSONObject getYunPayCallback(@RequestBody JSONObject jsonObject){
-        JSONObject result = new JSONObject();       //返回给扫呗状态码
-        System.out.println("扫呗调用回调接口返回参数:" + jsonObject);
-        if(jsonObject.containsKey("result_code") && jsonObject.get("result_code").toString().equals("01")){
-
-            //业务逻辑
-
-            //返给扫呗状态码
-            result.put("return_code", "01");
-            result.put("return_msg", "success");
-        }else {
-            result.put("return_code", "02");
-            result.put("return_msg", "fail");
+    public String yunPayGzhTest(@RequestBody PayInfoRequest payInfoRequest) throws Exception {
+        //智慧易加
+//    商户号码:845104816000034
+//    终端号:18241101
+//    密钥:23570b46a955484d92038f6a18d2b9d6
+        Gson gson = new Gson();
+        ResultData resultData = null;
+        //创建client
+        SaobeiApiClient<SaobeiJsPayRequest, SaobeiJsPayResponse> client = new DefaultSaobeiApiClient<>("23570b46a955484d92038f6a18d2b9d6");
+        //创建requst
+        SaobeiJsPayRequest requst = new SaobeiJsPayRequest();
+        requst.setPay_ver("110");
+        requst.setPay_type("010");
+        requst.setService_id("012");
+        requst.setMerchant_no("845104816000034");
+        requst.setTerminal_id("18241101");
+        Random random = new Random();
+        String result = "";
+        for (int i = 0; i < 6; i++) {
+            result += random.nextInt(10);
         }
-        return result;
+        String ordNo_1 = System.nanoTime() + result;
+        requst.setTerminal_trace(ordNo_1);     //202003252204310000
+        requst.setTerminal_time(new SimpleDateFormat("yyyyMMddhhmmss").format(new Date()));
+        requst.setTotal_fee("1");
+        requst.setSub_appid("wxc8189d3b3a7283e0");
+        requst.setOpen_id("oJR5R6r4EJhaORFcPap70r_mtFZo");                      //oJR5R6r4EJhaORFcPap70r_mtFZo   //oRwjv4iHjSUgxNxOJOQ_60Ln7cno
+        requst.setOrder_body("sdk测试");
+        String notifyUrl = "https://" + this.domainName + "/" + this.globalPrefix + "/getYunPayGzhCallback";
+        logger.info("回调地址:"+ notifyUrl);
+        requst.setNotify_url(notifyUrl);
+        //发送请求
+        System.out.println("请求报文:"+JSON.toJSONString(requst));
+        SaobeiJsPayResponse response = client.execute(requst);
+        System.out.println("返回报文:"+JSON.toJSONString(response));
+        resultData = ResultData.success(response);
+        return gson.toJson(resultData);
     }
 
+
 }

+ 5 - 1
YijiaRestful/src/main/resources/mapper/StationInfoMapper.xml

@@ -607,7 +607,11 @@
       ali_app_id      AS aliAppId,
       ali_public_key  AS aliPublicKey,
       ali_private_key AS aliPrivateKey,
-      ali_encrypt_key AS aliEncryptKey
+      ali_encrypt_key AS aliEncryptKey,
+      merchant_no     AS merchantNo,
+      terminal_id     AS terminalId,
+      yun_key         AS yunKey
+
     FROM
         sys_dept
     <where>