Procházet zdrojové kódy

回调验签修改

jk-GitHub-coder před 4 roky
rodič
revize
8e7a1b3b48

+ 71 - 56
YijiaRestful/src/main/java/com/platform/yijia/controller/PayController.java

@@ -361,51 +361,62 @@ public class PayController {
      */
     @RequestMapping(value = "/getCallback", consumes = "application/json", method = RequestMethod.POST)
     @ResponseBody
-    public void getCallback(HttpServletRequest request,HttpServletResponse response){
+    public void getCallback(@RequestBody JSONObject request){
+
         logger.info("回调返回过来的参数"+request);
-        logger.info("ordNo:" + request.getParameter("ordNo"));
-        logger.info("sign信息:" + request.getParameter("sign"));
+        logger.info("ordNo:" + request.get("ordNo").toString());
+        logger.info("sign信息:" + request.get("sign").toString());
         Gson gson =new Gson();
-        //获取回调参数信息
-        String uuid=request.getParameter("uuid");////随行付交易流水号
-        String mno=request.getParameter("mno");//发起交易的商户编号
-        String ordNo=request.getParameter("ordNo");//商户生成的订单号
-        String origOrdNo=request.getParameter("origOrdNo");//反交易退款异步通知
-        String origUuid=request.getParameter("origUuid");//token
-        String scene=request.getParameter("scene");//用户登录
-        String amt=request.getParameter("amt");//用户登录
-        String buyerId=request.getParameter("buyerId");//用户登录
-        String buyerAccount=request.getParameter("buyerAccount");//用户登录
-        String transactionId=request.getParameter("transactionId");//用户登录
-        String drType=request.getParameter("drType");//借贷记标识 1-借,2-贷,3-其他
-        String payType=request.getParameter("payType");//对订单的描述,取值范围:WECHAT:微信,ALIPAY:支付宝,UNIONPAY:
-        String payBank=request.getParameter("payBank");//付款银行银行编码,例如 ICBC
-        String pointAmount=request.getParameter("pointAmount");//代金券金额
-        String totalOffstAmt=request.getParameter("totalOffstAmt");//消 费 者 付 款金额
-        String settleAmt=request.getParameter("settleAmt");//商家入账金额
-        String realRefundAmount=request.getParameter("realRefundAmount");//商家出账金额
-        String recFeeAmt=request.getParameter("recFeeAmt");//交易手续费
-        String recFeeRate=request.getParameter("recFeeRate");//交易手续费率
-        String timeStamp=request.getParameter("timeStamp");//响应时间
-        String sign=request.getParameter("sign");//签名
-        String bizCode=request.getParameter("bizCode");//业务返回码
-        String bizMsg=request.getParameter("bizMsg");//业 务 返 回 信息
-        String openid=request.getParameter("openid");//微 信 或 支 付宝身份id()opendid userid
-        String channelId=request.getParameter("channelId");//渠道商户号
-        String subMechId=request.getParameter("subMechId");//子商户号
-        String refBuyerAmt=request.getParameter("refBuyerAmt");//消 费 者 到 账金额
-        String extend=request.getParameter("extend");//备用
+
+
+        String sxfUuid=request.get("sxfUuid").toString();     //随行付落单号
+        String payWay=request.get("payWay").toString();     //随行付交易方式
+        String payTime=request.get("payTime").toString();   //随行付交易时间
+        String uuid=request.get("uuid").toString();         //随行付交易流水号
+        String mno=request.get("mno").toString();//发起交易的商户编号
+        String ordNo=request.get("ordNo").toString();//商户生成的订单号
+        String amt=request.get("amt").toString();//金额
+        String buyerId=request.get("buyerId").toString();//用户登录
+        String transactionId=request.get("transactionId").toString();//用户登录
+        String drType=request.get("drType").toString();//借贷记标识 1-借,2-贷,3-其他
+        String payType=request.get("payType").toString();//对订单的描述,取值范围:WECHAT:微信,ALIPAY:支付宝,UNIONPAY:
+        String payBank=request.get("payBank").toString();//付款银行银行编码,例如 ICBC
+        String pointAmount=request.get("pointAmount").toString();//代金券金额
+        String totalOffstAmt=request.get("totalOffstAmt").toString();//消 费 者 付 款金额
+        String settleAmt=request.get("settleAmt").toString();//商家入账金额
+        String timeStamp=request.get("timeStamp").toString();//响应时间
+        String sign=request.get("sign").toString();//签名
+        String bizCode=request.get("bizCode").toString();//业务返回码
+        String bizMsg=request.get("bizMsg").toString();//业 务 返 回 信息
+        String openid=request.get("openid").toString();//微 信 或 支 付宝身份id()opendid userid
+        String channelId=request.get("channelId").toString();//渠道商户号
+        String subMechId=request.get("subMechId").toString();//子商户号
+        String finishTime=request.get("finishTime").toString();//交易完成时间
+        String clearDt=request.get("clearDt").toString();
+        String settlementBatchNo=request.get("settlementBatchNo").toString();
+
+        //String origOrdNo=request.get("origOrdNo").toString();//反交易退款异步通知
+        //String origUuid=request.get("origUuid").toString();//token
+        //String scene=request.get("scene").toString();//用户登录
+        //String buyerAccount=request.get("buyerAccount").toString();//
+        //String realRefundAmount=request.get("realRefundAmount").toString();//商家出账金额
+        //String recFeeAmt=request.get("recFeeAmt").toString();//交易手续费
+        //String recFeeRate=request.get("recFeeRate").toString();//交易手续费率
+        //String refBuyerAmt=request.get("refBuyerAmt").toString();//消 费 者 到 账金额
+        //String extend = extend=request.get("extend").toString();//备用
+
+
         //将业务参数存放在 JSON 对象中
         JSONObject reqData = new JSONObject();
+
+        reqData.put("sxfUuid",sxfUuid);
+        reqData.put("payWay",payWay);
+        reqData.put("payTime",payTime);
         reqData.put("uuid",uuid);
         reqData.put("mno",mno);
         reqData.put("ordNo",ordNo);
-        reqData.put("origOrdNo",origOrdNo);
-        reqData.put("origUuid",origUuid);
-        reqData.put("scene",scene);
         reqData.put("amt",amt);
         reqData.put("buyerId",buyerId);
-        reqData.put("buyerAccount",buyerAccount);
         reqData.put("transactionId",transactionId);
         reqData.put("drType",drType);
         reqData.put("payType",payType);
@@ -413,17 +424,25 @@ public class PayController {
         reqData.put("pointAmount",pointAmount);
         reqData.put("totalOffstAmt",totalOffstAmt);
         reqData.put("settleAmt",settleAmt);
-        reqData.put("realRefundAmount",realRefundAmount);
-        reqData.put("recFeeAmt",recFeeAmt);
-        reqData.put("recFeeRate",recFeeRate);
         reqData.put("timeStamp",timeStamp);
         reqData.put("bizCode",bizCode);
         reqData.put("bizMsg",bizMsg);
         reqData.put("openid",openid);
         reqData.put("channelId",channelId);
         reqData.put("subMechId",subMechId);
-        reqData.put("refBuyerAmt",refBuyerAmt);
-        reqData.put("extend",extend);
+        reqData.put("finishTime",finishTime);
+        reqData.put("clearDt",clearDt);
+        reqData.put("settlementBatchNo",settlementBatchNo);
+
+        //reqData.put("realRefundAmount",realRefundAmount);
+        //reqData.put("recFeeAmt",recFeeAmt);
+        //reqData.put("recFeeRate",recFeeRate);
+        //reqData.put("buyerAccount",buyerAccount);
+        //reqData.put("origOrdNo",origOrdNo);
+        //reqData.put("origUuid",origUuid);
+        //reqData.put("scene",scene);
+        //reqData.put("refBuyerAmt",refBuyerAmt);
+        //reqData.put("extend",extend);
         //根据回调信息,先进行验签,验签后修改状态
         logger.info("打印参数信息"+gson.toJson(reqData));
         //不要对reqData排序 所以用LinkedHashMap
@@ -442,16 +461,21 @@ public class PayController {
                 String status = list.get(0).getStatus();
                 int ordId= list.get(0).getOrderId();
                 //状态为未支付 1  修改状态为已支付
-                if (status.equals("1")) {
+                if (status.equals("0")) {
                     PayOrder payOrder = new PayOrder();
                     payOrder.setOrderId(ordId);
-                    payOrder.setStatus("2");
+                    payOrder.setOrderNo(ordNo);
+                    payOrder.setStatus("1");
                     payOrder.setPayDate(new Date());    //支付时间
                     payOrder.setReceivedAmt(Double.valueOf(settleAmt)); //settleAmt商家入账金额
-                    //根据修改状态
-                    payOrderService.getUpdatePayOrder(payOrder);
-                    req.put("code","success");
-                    req.put("msg","成功");
+                    //修改订单状态
+                    int count = payOrderService.getUpdatePayOrder(payOrder);
+                    if(count == 1){
+                        req.put("code","success");
+                        req.put("msg","修改订单状态成功");
+                        logger.info(req.toString());
+                    }
+
                 }
             }
         }else {
@@ -459,14 +483,5 @@ public class PayController {
             req.put("code","fail");
             req.put("msg","失败");
         }
-        try {
-            response.setContentType("application/json; charset=UTF-8");
-            response.setCharacterEncoding("UTF-8");
-            response.getWriter().print(req);
-            response.getWriter().flush();
-            response.getWriter().close();
-        }catch (Exception e){
-            e.printStackTrace();
-        }
     }
 }

+ 5 - 0
YijiaRestful/src/main/java/com/platform/yijia/dao/PayOrderMapper.java

@@ -9,6 +9,11 @@ import org.apache.ibatis.annotations.Param;
 
 public interface PayOrderMapper {
 
+    /*
+     *修改订单状态
+     */
+    int updateOrderStatus(PayOrder payOrder);
+
     /***
      * 根据油品名称和油站查询油品调价信息
      * @param map

+ 1 - 1
YijiaRestful/src/main/java/com/platform/yijia/service/PayOrderService.java

@@ -16,7 +16,7 @@ public interface PayOrderService {
      List<PayOrder> getPayOrderList(String orderNo);
 
      //修改订单状态
-     void getUpdatePayOrder(PayOrder payOrder);
+     int getUpdatePayOrder(PayOrder payOrder);
 
      //根据订单号查询
      PayOrder searchPayOrder(Integer orderId);

+ 4 - 3
YijiaRestful/src/main/java/com/platform/yijia/service/impl/PayOrderServiceImpl.java

@@ -189,9 +189,10 @@ public class PayOrderServiceImpl implements PayOrderService {
      * @param payOrder
      */
     @Override
-    public void getUpdatePayOrder(PayOrder payOrder) {
-        PayOrderExample example =new PayOrderExample();
-        payOrderMapper.updateByExample(payOrder,example);
+    public int getUpdatePayOrder(PayOrder payOrder) {
+//        PayOrderExample example =new PayOrderExample();
+//        example.or().andOrderIdEqualTo(payOrder.getOrderId());
+        return payOrderMapper.updateOrderStatus(payOrder);
     }
 
     @Override

+ 14 - 0
YijiaRestful/src/main/resources/mapper/PayOrderMapper.xml

@@ -657,6 +657,20 @@
       <include refid="Update_By_Example_Where_Clause" />
     </if>
   </update>
+
+  <!-- 更新订单状态-->
+  <update id="updateOrderStatus" parameterType="com.platform.yijia.pojo.PayOrder">
+    UPDATE
+        pay_order
+    SET
+        status = #{status,jdbcType=VARCHAR},
+        received_amt = #{receivedAmt,jdbcType=DOUBLE}
+    <where>
+      order_id = #{orderId,jdbcType=INTEGER}
+    </where>
+  </update>
+
+
   <update id="updateByExample" parameterType="map">
     <!--
       WARNING - @mbg.generated