Explorar el Código

调试聚合支付接口

XF--LRQYEJOKYDS\Administrator hace 4 años
padre
commit
d065fd6e92

+ 93 - 4
YijiaRestful/src/main/java/com/platform/yijia/controller/PayController.java

@@ -26,6 +26,89 @@ public class PayController {
     private PayOrderService payOrderService;
     @Resource
     private AppUserInfoService appUserInfoService;
+
+    /***
+     * 微信子商户支付接口
+     * @param weChatPaySetRequest
+     * @return
+     */
+    @RequestMapping(value = "/weChatPaySet", consumes = "application/json", method = RequestMethod.POST)
+    @ResponseBody
+    public  String weChatPaySet(@RequestBody WeChatPaySetRequest weChatPaySetRequest){
+        Gson gson = new Gson();
+        ResultData resultData = null;    //返回结果
+        try {
+            String type = weChatPaySetRequest.getType();    //获取配置类型
+            JSONObject reqData = new JSONObject();          //微信子商户支付参数配置
+            reqData.put("mno", weChatPaySetRequest.getMno());                           //商编
+            reqData.put("subMchIdsubMchId", weChatPaySetRequest.getSubMchIdsubMchId()); //获取微信子商号
+            if(type != null  && type !=""){
+                reqData.put("type", type);
+                //根据类型设置必传参数
+                switch (type){
+                    case "01":  //支付Appid
+                        reqData.put("accountType", weChatPaySetRequest.getAccountType());   // 支付Appid类型  配置类型为01时必传
+                        reqData.put("subAppid", weChatPaySetRequest.getSubAppid());         // 支付Appid      配置类型为01,02时必传
+                        break;
+                    case "02":  //关注Appid
+                        reqData.put("subAppid", weChatPaySetRequest.getSubAppid());         // 支付Appid      配置类型为01,02时必传
+                        reqData.put("subscribeAppid", weChatPaySetRequest.getSubscribeAppid());  // 推荐关注公众号Appid 配置类型为02时与推荐关注  小程序Appid二选一
+                        reqData.put("receiptAppid", weChatPaySetRequest.getReceiptAppid());     // 推荐关注小程序Appid 配置类型为02时与推荐关注 公众号Appid二选一
+                        break;
+                    case "03":  //jsapi授权目录
+                        reqData.put("jsapiPath", weChatPaySetRequest.getJsapiPath());       // jsapi授权目录 配置类型为03时必传
+                        break;
+                }
+            }
+
+            String sxfPay = SXFPaySign.getSXFPay(reqData);      //封装传参信息,增加公共信息,增加业务信息
+            logger.debug("参数信息:"+ sxfPay);
+            System.out.println("req:" + sxfPay);
+            //此处不要改变reqData里面值的顺序用LinkedHashMap
+            HashMap reqMap = JSON.parseObject(sxfPay, LinkedHashMap.class, Feature.OrderedField);
+            //组装加密串
+            String signContent = RSASignature.getOrderContent(reqMap);
+            System.out.println("拼接后的参数:" + signContent);
+            logger.debug("拼接后的参数:"+signContent);
+            //sign
+            String sign = RSASignature.encryptBASE64(RSASignature.sign(signContent, SXFPaySign.privateKey));
+            reqMap.put("sign", sign);
+            String reqStr = JSON.toJSONString(reqMap);
+            System.out.println("请求参数:" + reqMap);
+            System.out.println("请求参数:" + reqStr);
+
+            //String url = "https://openapi-test.tianquetech.com/merchant/weChatPaySet/addConf";    //测试环境
+            String url = "https://openapi.tianquetech.com/merchant/weChatPaySet/addConf";       //生产环境
+            //访问第三方接口
+            String resultJson = HttpUtils.connectPostUrl(url, reqStr);
+            System.out.println("返回信息:" + resultJson);
+            //   logger.debug("返回信息:"+resultJson);
+            //不要对reqData排序 所以用LinkedHashMap
+            HashMap<String, Object> result = JSON.parseObject(resultJson, LinkedHashMap.class, Feature.OrderedField);
+            if ("0000".equals(result.get("code"))) {
+                //验签
+                String signResult = result.get("sign").toString();
+                result.remove("sign");
+                String resultStr = RSASignature.getOrderContent(result);
+                System.out.println(resultStr);
+                //sign
+                String resultSign = RSASignature.encryptBASE64(RSASignature.sign(signContent, SXFPaySign.privateKey));
+                System.out.println("resultSign:" + resultSign);
+                //组装加密串
+
+                if (RSASignature.doCheck(resultStr, signResult, SXFPaySign.sxfPublic)) {
+                    System.out.println("===================验签成功==============");
+                }
+            }
+            resultData=ResultData.success(result);
+        } catch (Exception e) {
+            resultData=ResultData.error(CodeMsg.YEWU_FAIL,"支付失败");
+            e.printStackTrace();
+        }
+        return  gson.toJson(resultData);
+    }
+
+
     /**
      * 支付接口,前台上传支付信息,支付数据落地生产订单,调用随行付支付接口
      * @param
@@ -64,7 +147,8 @@ public class PayController {
                     reqData.put("ordNo", payOrder.getOrderNo()); //商户订单号
                     reqData.put("mno", mno); //商户编号
                     //reqData.put("subMechId", ""); //子商户号
-                    reqData.put("amt", payOrder.getAmt()); //订单总金额
+                    //reqData.put("amt", payOrder.getAmt()); //订单总金额
+                    reqData.put("amt", "0.01");
                     //reqData.put("discountAmt", ""); //参与优惠金额
                     //reqData.put("unDiscountAmt", ""); //不参与优惠金额
                     reqData.put("payType", "WECHAT"); //支付渠道
@@ -263,6 +347,9 @@ public class PayController {
     @RequestMapping(value = "/getCallback", consumes = "application/json", method = RequestMethod.POST)
     @ResponseBody
     public void getCallback(HttpServletRequest request,HttpServletResponse response){
+        logger.info("回调返回过来的参数"+request);
+        Gson gson =new Gson();
+        logger.info("回调返回过来的参数json:--"+gson.toJson(request));
         //获取回调参数信息
         String uuid=request.getParameter("uuid");////随行付交易流水号
         String mno=request.getParameter("mno");//发起交易的商户编号
@@ -322,7 +409,7 @@ public class PayController {
         reqData.put("refBuyerAmt",refBuyerAmt);
         reqData.put("extend",extend);
         //根据回调信息,先进行验签,验签后修改状态
-        Gson gson =new Gson();
+        logger.info("打印参数信息"+gson.toJson(reqData));
         //不要对reqData排序 所以用LinkedHashMap
         HashMap<String, Object> result = JSON.parseObject(gson.toJson(reqData), LinkedHashMap.class, Feature.OrderedField);
         //验签
@@ -330,17 +417,19 @@ public class PayController {
         System.out.println(resultStr);
         if (RSASignature.doCheck(resultStr, sign, SXFPaySign.sxfPublic)) {
             System.out.println("===================验签成功==============");
+            logger.info("验签成功");
             //验签成功,修改订单状态
             List<PayOrder> list = payOrderService.getPayOrderList(ordNo);
+            logger.info("根据订单号,查询订单"+gson.toJson(list));
             if (list != null && list.size() == 1) {
                 String status = list.get(0).getStatus();
                 //状态为未支付 1  修改状态为已支付
                 if (status.equals("1")) {
                     PayOrder payOrder = new PayOrder();
-                    //   payOrder.setOrderNo(callBack.getOrdNo());
+                    //payOrder.setOrderNo(callBack.getOrdNo());
                     payOrder.setStatus("2");
                     //根据修改状态
-                    payOrderService.getUpdatePayOrder(payOrder);
+                    //payOrderService.getUpdatePayOrder(payOrder);
                 }
             }
         }

+ 3 - 2
YijiaRestful/src/main/java/com/platform/yijia/utils/SXFPaySign.java

@@ -21,8 +21,9 @@ public class SXFPaySign {
     //生产环境私钥
     public static final String privateKey="MIICeAIBADANBgkqhkiG9w0BAQEFAASCAmIwggJeAgEAAoGBAPCpA8iF1tYerDYcZTGiPkRHlQKlkM2vy752cLZydVUrfKkGQaSMBHbmgK7LgenQ6cjWl2mM5zLOWxqNKxsUj/xMbkAdYXKtYy1nL6NLo3RI+cXbUB5tNiS4ojSwjFg4AHIfjGyBnnQar/dulfuNJ3QBsfHBDR/DsIfXUaBcmsoFAgMBAAECgYEA8A7YHEUNWUb9Z3iJpKn/TKLOy/YVbGdoaFPC+OtRiSS40+3OuvGEXoptYG7V50MigNk17e7EjNR04hZhIkEvoX/d9KLIKRtZUOMga6GhqD/PqRpgKq8JObMkvJ1U7KeEimUqBeukbvzBUJrVQT1RpbXmX3zpf0kj7l/FPOfZD8ECQQD9RpXw7gtv96N6WIF2k42UMAMLVuGivTW2bZzxP6TCD/FeZMG2JNy3nydCc2v6GuGDQZ8WCQIpzK72gMzLrYVVAkEA8z+w+Ao8Y6BxX8P/5GZg4x1ZHqQOfsrWbC6iMeIenLkAgMpEPYLYpm5nZ0db7pf5OU037bSXxQoauQnjOM8x8QJBANzQGk94Kg6PFz7GRPDNScTlavIK6CMK1PZccFTASPNMFQJX067qSmfoYMEFgiEGKJBXuMvsRK+OnQeaWXJFsRUCQFva9Uz1MJC+iZGMRhlNv9CDyJ+VfBPNLON1SLJlnQG5qsL3noVL39wZXNrXS5Pxt5831aLhy14Qzr6JSVCujUECQQDD0KIfodS9dxKnstJaaX2B5aYXPYsI+4PBMeFw4inl+9JFJb85U1SmuYAkGPj8OFBtxkhzeHXkvD5aMKj0cUVs";
     //随行付公钥
-    public static final String sxfPublic = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCOmsrFtFPTnEzfpJ/hDl5RODBxw4i9Ex3NmmG/N7A1+by032zZZgLLpdNh8y5otjFY0E37Nyr4FGKFRSSuDiTk8vfx3pv6ImS1Rxjjg4qdVHIfqhCeB0Z2ZPuBD3Gbj8hHFEtXZq8+msAFu/5ZQjiVhgs5WWBjh54LYWSum+d9+wIDAQAB";
-
+   // public static final String sxfPublic = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCOmsrFtFPTnEzfpJ/hDl5RODBxw4i9Ex3NmmG/N7A1+by032zZZgLLpdNh8y5otjFY0E37Nyr4FGKFRSSuDiTk8vfx3pv6ImS1Rxjjg4qdVHIfqhCeB0Z2ZPuBD3Gbj8hHFEtXZq8+msAFu/5ZQjiVhgs5WWBjh54LYWSum+d9+wIDAQAB";
+   //生产环境随行付公钥
+    public static final String sxfPublic = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAjo1+KBcvwDSIo+nMYLeOJ19Ju4ii0xH66ZxFd869EWFWk/EJa3xIA2+4qGf/Ic7m7zi/NHuCnfUtUDmUdP0JfaZiYwn+1Ek7tYAOc1+1GxhzcexSJLyJlR2JLMfEM+rZooW4Ei7q3a8jdTWUNoak/bVPXnLEVLrbIguXABERQ0Ze0X9Fs0y/zkQFg8UjxUN88g2CRfMC6LldHm7UBo+d+WlpOYH7u0OTzoLLiP/04N1cfTgjjtqTBI7qkOGxYs6aBZHG1DJ6WdP+5w+ho91sBTVajsCxAaMoExWQM2ipf/1qGdsWmkZScPflBqg7m0olOD87ymAVP/3Tcbvi34bDfwIDAQAB";
     /**
      * 封装传参信息,增加公共信息,增加业务信息
      * @param reqData

+ 1 - 1
YijiaRestful/src/main/resources/application.yml

@@ -12,7 +12,7 @@ server:
 # Spring配置
 spring:
     datasource:
-        url: jdbc:mysql://47.105.116.204:3306/jiaduoduo_db?useUnicode=true&characterEncoding=utf8
+        url: jdbc:mysql://47.105.116.204:3306/jiaduoduo_db_test?useUnicode=true&characterEncoding=utf8
         username: develop
         password: 1234.Abcd
         driver-class-name: com.mysql.cj.jdbc.Driver

+ 1 - 1
YijiaRestful/src/main/resources/generator/generatorConfig.xml

@@ -45,7 +45,7 @@
             <property name="enableSubPackages" value="false" />
         </javaClientGenerator>
 
-        <table tableName="sys_user" domainObjectName="SysUser" >
+        <table tableName="station_info" domainObjectName="StationInfo" >
         </table>
 
     </context>

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

@@ -16,6 +16,7 @@
     <result column="station_group_name" jdbcType="VARCHAR" property="stationGroupName" />
     <result column="station_longitude" jdbcType="VARCHAR" property="stationLongitude" />
     <result column="station_latitude" jdbcType="VARCHAR" property="stationLatitude" />
+    <result column="mno" jdbcType="INTEGER" property="mno" />
   </resultMap>
   <resultMap extends="BaseResultMap" id="ResultMapWithBLOBs" type="com.platform.yijia.pojo.StationInfo">
     <!--
@@ -96,7 +97,7 @@
       This element is automatically generated by MyBatis Generator, do not modify.
     -->
     station_id, station_name, station_address, oil_gun_num, contacts, phone, station_group_id, 
-    station_group_name, station_longitude, station_latitude
+    station_group_name, station_longitude, station_latitude, mno
   </sql>
   <sql id="Blob_Column_List">
     <!--
@@ -181,11 +182,13 @@
     insert into station_info (station_id, station_name, station_address, 
       oil_gun_num, contacts, phone, 
       station_group_id, station_group_name, station_longitude, 
-      station_latitude, station_pic)
+      station_latitude, mno, station_pic
+      )
     values (#{stationId,jdbcType=INTEGER}, #{stationName,jdbcType=VARCHAR}, #{stationAddress,jdbcType=VARCHAR}, 
       #{oilGunNum,jdbcType=INTEGER}, #{contacts,jdbcType=VARCHAR}, #{phone,jdbcType=VARCHAR}, 
       #{stationGroupId,jdbcType=INTEGER}, #{stationGroupName,jdbcType=VARCHAR}, #{stationLongitude,jdbcType=VARCHAR}, 
-      #{stationLatitude,jdbcType=VARCHAR}, #{stationPic,jdbcType=LONGVARBINARY})
+      #{stationLatitude,jdbcType=VARCHAR}, #{mno,jdbcType=INTEGER}, #{stationPic,jdbcType=LONGVARBINARY}
+      )
   </insert>
   <insert id="insertSelective" parameterType="com.platform.yijia.pojo.StationInfo">
     <!--
@@ -224,6 +227,9 @@
       <if test="stationLatitude != null">
         station_latitude,
       </if>
+      <if test="mno != null">
+        mno,
+      </if>
       <if test="stationPic != null">
         station_pic,
       </if>
@@ -259,6 +265,9 @@
       <if test="stationLatitude != null">
         #{stationLatitude,jdbcType=VARCHAR},
       </if>
+      <if test="mno != null">
+        #{mno,jdbcType=INTEGER},
+      </if>
       <if test="stationPic != null">
         #{stationPic,jdbcType=LONGVARBINARY},
       </if>
@@ -311,6 +320,9 @@
       <if test="record.stationLatitude != null">
         station_latitude = #{record.stationLatitude,jdbcType=VARCHAR},
       </if>
+      <if test="record.mno != null">
+        mno = #{record.mno,jdbcType=INTEGER},
+      </if>
       <if test="record.stationPic != null">
         station_pic = #{record.stationPic,jdbcType=LONGVARBINARY},
       </if>
@@ -335,6 +347,7 @@
       station_group_name = #{record.stationGroupName,jdbcType=VARCHAR},
       station_longitude = #{record.stationLongitude,jdbcType=VARCHAR},
       station_latitude = #{record.stationLatitude,jdbcType=VARCHAR},
+      mno = #{record.mno,jdbcType=INTEGER},
       station_pic = #{record.stationPic,jdbcType=LONGVARBINARY}
     <if test="_parameter != null">
       <include refid="Update_By_Example_Where_Clause" />
@@ -355,7 +368,8 @@
       station_group_id = #{record.stationGroupId,jdbcType=INTEGER},
       station_group_name = #{record.stationGroupName,jdbcType=VARCHAR},
       station_longitude = #{record.stationLongitude,jdbcType=VARCHAR},
-      station_latitude = #{record.stationLatitude,jdbcType=VARCHAR}
+      station_latitude = #{record.stationLatitude,jdbcType=VARCHAR},
+      mno = #{record.mno,jdbcType=INTEGER}
     <if test="_parameter != null">
       <include refid="Update_By_Example_Where_Clause" />
     </if>
@@ -394,6 +408,9 @@
       <if test="stationLatitude != null">
         station_latitude = #{stationLatitude,jdbcType=VARCHAR},
       </if>
+      <if test="mno != null">
+        mno = #{mno,jdbcType=INTEGER},
+      </if>
       <if test="stationPic != null">
         station_pic = #{stationPic,jdbcType=LONGVARBINARY},
       </if>
@@ -415,6 +432,7 @@
       station_group_name = #{stationGroupName,jdbcType=VARCHAR},
       station_longitude = #{stationLongitude,jdbcType=VARCHAR},
       station_latitude = #{stationLatitude,jdbcType=VARCHAR},
+      mno = #{mno,jdbcType=INTEGER},
       station_pic = #{stationPic,jdbcType=LONGVARBINARY}
     where station_id = #{stationId,jdbcType=INTEGER}
   </update>
@@ -432,7 +450,8 @@
       station_group_id = #{stationGroupId,jdbcType=INTEGER},
       station_group_name = #{stationGroupName,jdbcType=VARCHAR},
       station_longitude = #{stationLongitude,jdbcType=VARCHAR},
-      station_latitude = #{stationLatitude,jdbcType=VARCHAR}
+      station_latitude = #{stationLatitude,jdbcType=VARCHAR},
+      mno = #{mno,jdbcType=INTEGER}
     where station_id = #{stationId,jdbcType=INTEGER}
   </update>
 </mapper>