Explorar o código

添加统一支付接口

yq %!s(int64=3) %!d(string=hai) anos
pai
achega
63a2187180

+ 5 - 6
src/main/java/com/usky/dxtop/controller/web/OrderController.java

@@ -2,22 +2,16 @@ package com.usky.dxtop.controller.web;
 
 
 import com.usky.dxtop.common.core.domain.AjaxResult;
-import com.usky.dxtop.common.core.page.CommonPage;
 import com.usky.dxtop.controller.BaseController;
 import com.usky.dxtop.model.Order;
 import com.usky.dxtop.service.OrderService;
-import com.usky.dxtop.service.api.TopApi;
 import com.usky.dxtop.service.emun.OrderStatus;
-import com.usky.dxtop.service.vo.OrderReport;
 import com.usky.dxtop.service.vo.OrderRequest;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletResponse;
 import java.util.Date;
-import java.util.List;
-import java.util.TreeMap;
 
 /**
  * <p>
@@ -142,5 +136,10 @@ public class OrderController extends BaseController {
                                      HttpServletResponse response){
         orderService.reportExport(startTime,endTime,type,response);
     }
+
+    @PostMapping("callUnifiedPay")
+    public AjaxResult callUnifiedPay(@RequestBody Order order){
+        return AjaxResult.success(orderService.callUnifiedPay(order));
+    }
 }
 

+ 7 - 1
src/main/java/com/usky/dxtop/model/Order.java

@@ -1,6 +1,7 @@
 package com.usky.dxtop.model;
 
 import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.usky.dxtop.common.core.domain.BaseEntity;
@@ -9,7 +10,6 @@ import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
 
 import java.io.Serializable;
-import java.time.LocalDateTime;
 
 /**
  * <p>
@@ -83,4 +83,10 @@ public class Order extends BaseEntity implements Serializable {
      */
     private Double topRadio;
 
+    /**
+     * 东信支付类型
+     */
+    @TableField(exist = false)
+    private String topPayType;
+
 }

+ 7 - 1
src/main/java/com/usky/dxtop/service/OrderService.java

@@ -8,7 +8,6 @@ import com.usky.dxtop.service.vo.OrderRequest;
 
 import javax.servlet.http.HttpServletResponse;
 import java.util.Date;
-import java.util.List;
 
 
 /**
@@ -110,4 +109,11 @@ public interface OrderService extends IService<Order> {
      * @return
      */
     void reportExport(Date startTime,Date endTime,Integer type,HttpServletResponse response);
+
+    /**
+     * 调用统一支付api
+     * @param order
+     * @return
+     */
+    String callUnifiedPay(Order order);
 }

+ 56 - 11
src/main/java/com/usky/dxtop/service/api/TopApi.java

@@ -20,19 +20,21 @@ public class TopApi {
      */
     public static final String VERSION = "v1.0";
 
+    public static final String URL = "https://interfacetest.allinpaygx.com";
+
     /**
      * 扫码支付
      */
-    public static final String SCAN_TO_PAY_URL = "https://interfacetest.allinpaygx.com/api/access/payInterface/usePaymentCode";
+    public static final String SCAN_TO_PAY_URL = String.format("%s%s",URL,"/api/access/payInterface/usePaymentCode");
     /**
      * 交易查询
      */
-    public static final String DEAL_SELECT_URL = "https://interfacetest.allinpaygx.com/api/access/payInterface/findOrderInfo";
-
-
-    public static final String RETURN_DEAL_URL = "https://interfacetest.allinpaygx.com/api/access/payInterface/refund";
+    public static final String DEAL_SELECT_URL = String.format("%s%s",URL,"/api/access/payInterface/findOrderInfo");
 
-    public static final String UNIFY_URL = "https://interfacetest.allinpaygx.com/api/access/payInterface/unifiedPay";
+    /**
+     * 统一支付
+     */
+    public static final String UNIFY_URL = String.format("%s%s",URL,"/api/access/payInterface/unifiedPay");
 
     /**
      * 商户编号
@@ -49,7 +51,10 @@ public class TopApi {
      */
     public static final String SCAN_NOTIFY_URL = "https://wx.ewoogi.com/dxapi/top/notify";
 
-
+    /**
+     * 微信appid
+     */
+    public static final String WX_APP_ID = "";
 
     /**
      * 拼接扫码支付参数
@@ -75,7 +80,14 @@ public class TopApi {
         return tMap;
     }
 
-
+    /**
+     * 交易查询参数
+     * @param merchantOrderNo
+     * @param storeNo
+     * @param trxid
+     * @param groupNo
+     * @return
+     */
     public static TreeMap<String, String> generateDealSelectParam(String merchantOrderNo,String storeNo,String trxid,String groupNo){
         TreeMap<String, String> tMap = new TreeMap<>();
         tMap.put("version",VERSION);
@@ -87,7 +99,17 @@ public class TopApi {
         return tMap;
     }
 
-
+    /**
+     * 退单url
+     * @param amount
+     * @param orderNo
+     * @param oriMerchantOrderNo
+     * @param trxid
+     * @param refundType
+     * @param remark
+     * @param groupNo
+     * @return
+     */
     public static TreeMap<String, String> generateReturnDealParam(Integer amount,String orderNo,String oriMerchantOrderNo,
                                                                   String trxid,String refundType,String remark,String groupNo){
         TreeMap<String, String> tMap = new TreeMap<>();
@@ -105,7 +127,24 @@ public class TopApi {
     }
 
 
-    public static TreeMap<String, String> generateUnifyParam(Integer amount,String notifyUrl,
+    /**
+     * 统一支付
+     * @param amount
+     * @param notifyUrl
+     * @param backUrl
+     * @param note
+     * @param orderName
+     * @param acct
+     * @param payType
+     * @param validTime
+     * @param subAppid
+     * @param remark
+     * @param asinfo
+     * @param groupNo
+     * @param consumerIp
+     * @return
+     */
+    public static TreeMap<String, String> generateUnifyParam(String merchantOrderNo,Integer amount,String notifyUrl,
                                                              String backUrl,String note,String orderName,String acct,
                                                              String payType,String validTime,String subAppid,
                                                              String remark,String asinfo,String groupNo,
@@ -113,7 +152,7 @@ public class TopApi {
         TreeMap<String, String> tMap = new TreeMap<>();
         tMap.put("version",VERSION);
         tMap.put("merchantNo",MERCHANT_NO);
-        tMap.put("merchantOrderNo",getOrderNumber());
+        tMap.put("merchantOrderNo",merchantOrderNo);
         tMap.put("amount",amount.toString());
         tMap.put("notifyUrl",notifyUrl);
         tMap.put("backUrl",backUrl);
@@ -131,6 +170,12 @@ public class TopApi {
     }
 
 
+    public static String generateUrl(String url,TreeMap<String, String> params){
+        return String.format("%s?%s&sign=%s", url,
+                TopApi.joinParam(params),
+                TopApi.signData(params));
+    }
+
     public static String joinParam(TreeMap<String, String> params){
         StringBuilder buf = new StringBuilder();
         for (Map.Entry<String, String> entry : params.entrySet()) {

+ 19 - 10
src/main/java/com/usky/dxtop/service/impl/OrderServiceImpl.java

@@ -39,7 +39,6 @@ import org.springframework.util.FastByteArrayOutputStream;
 import javax.imageio.ImageIO;
 import javax.servlet.http.HttpServletResponse;
 import java.awt.image.BufferedImage;
-import java.io.File;
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Date;
@@ -58,7 +57,7 @@ import java.util.stream.Collectors;
 @Service
 public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements OrderService {
 
-    public static final String SCAN_PAY = "扫码支付";
+    public static final String SCAN_PAY = "支付";
 
     public static final String FIND_ORDER_INFO = "交易查询";
 
@@ -129,13 +128,10 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
         TreeMap<String, String> params = TopApi.generateScanPayApiParam(order.getOrderNumber(),
                                         new Double(Arith.mul(order.getMoney(),100)).intValue(), null,
                 null,null,null,null,null,null);
-        String scanPayUrl = String.format("%s?%s&sign=%s", TopApi.SCAN_TO_PAY_URL,
-                TopApi.joinParam(params),
-                TopApi.signData(params));
         baseMapper.insert(order);
         //记录调用日志
         callApiLogService.saveOrUpdate(orderNumber,SCAN_PAY,TopApi.SCAN_TO_PAY_URL,JSONObject.toJSONString(params),null);
-        return scanPayUrl;
+        return TopApi.generateUrl(TopApi.SCAN_TO_PAY_URL, params);
     }
 
     @Transactional(rollbackFor = Exception.class)
@@ -171,8 +167,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
     @Override
     public String callTopFindOrderInfoApi(String orderNumber) {
         TreeMap<String, String> param = TopApi.generateDealSelectParam(orderNumber, null, null, null);
-        String format = String.format("%s&sign=%s", TopApi.joinParam(param),
-                TopApi.signData(param));
+        String format = TopApi.generateUrl(TopApi.DEAL_SELECT_URL, param);
         String result = HttpUtils.sendGet(TopApi.DEAL_SELECT_URL, format);
         Order order = one(orderNumber);
         //处理订单
@@ -264,7 +259,6 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
     @Override
     public void exportDetail(OrderRequest orderRequest,HttpServletResponse response) {
         Workbook workbook = null;
-        File file = null;
         try {
             ExportParams params = new ExportParams(null, "订单详情");
             workbook = ExcelExportUtil.exportBigExcel(params, OrderExport.class,
@@ -329,7 +323,6 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
     @Override
     public void reportExport(Date startTime, Date endTime, Integer type, HttpServletResponse response) {
         Workbook workbook = null;
-        File file = null;
         try {
             ExportParams params = new ExportParams(null, "订单统计");
             workbook = ExcelExportUtil.exportBigExcel(params, OrderReport.class,
@@ -357,6 +350,22 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
         }
     }
 
+    @Override
+    public String callUnifiedPay(Order order) {
+        String orderNumber = TopApi.getOrderNumber();
+        order.setOrderNumber(orderNumber);
+        TreeMap<String, String> params = TopApi.generateUnifyParam(orderNumber,new Double(Arith.mul(order.getMoney(),100)).intValue(),
+                null, null,
+                null,null,null,order.getTopPayType(),null,TopApi.WX_APP_ID,
+                null,null,null,null);
+        String unifyUrl = TopApi.generateUrl(TopApi.SCAN_TO_PAY_URL, params);
+        String result = HttpUtils.sendGet(TopApi.DEAL_SELECT_URL, unifyUrl);
+        baseMapper.insert(order);
+        //记录调用日志
+        callApiLogService.saveOrUpdate(orderNumber,SCAN_PAY,TopApi.SCAN_TO_PAY_URL,JSONObject.toJSONString(params),null);
+        return result;
+    }
+
     /**
      * 充值失败后处理
      * @param order