Explorar o código

native支付接入

xdd hai 1 día
pai
achega
b0a612d0f7

+ 12 - 0
fs-company/src/main/java/com/fs/company/controller/CompanyRechargeController.java

@@ -21,6 +21,7 @@ import com.fs.company.service.ICompanyService;
 import com.fs.company.vo.CompanyRechargeVO;
 import com.fs.core.security.LoginUser;
 import com.fs.core.web.service.TokenService;
+import com.tencentcloudapi.organization.v20181225.OrganizationErrorCode;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.transaction.annotation.Transactional;
@@ -97,6 +98,17 @@ public class CompanyRechargeController extends BaseController
         return AjaxResult.success(companyRechargeOrder);
     }
 
+    /**
+     * 查询订单
+     * @param orderNo 订单号
+     * @return AjaxResult
+     */
+    @PostMapping("/queryOrder")
+    public AjaxResult queryOrder(String orderNo) {
+        CompanyRechargeOrder order = companyRechargeService.queryOrder(orderNo);
+
+        return AjaxResult.success(order);
+    }
 
 
     /**

+ 19 - 27
fs-company/src/main/java/com/fs/pay/controller/WxPayController.java

@@ -7,6 +7,8 @@ import com.fs.common.utils.StringUtils;
 import com.fs.company.domain.CompanyRecharge;
 import com.fs.company.service.ICompanyRechargeService;
 import com.fs.pay.bean.WxPayBean;
+import com.fs.wx.pay.config.WxPayProperties;
+import com.github.binarywang.wxpay.util.SignUtils;
 import com.ijpay.core.enums.SignType;
 import com.ijpay.core.enums.TradeType;
 import com.ijpay.core.kit.HttpKit;
@@ -45,6 +47,8 @@ public class WxPayController extends WxPayApiController {
     @Autowired
     ICompanyRechargeService rechargeService;
 
+    @Autowired
+    private WxPayProperties wxPayProperties;
 
 
     @Override
@@ -151,40 +155,28 @@ public class WxPayController extends WxPayApiController {
         Map<String, String> params = WxPayKit.xmlToMap(xmlMsg);
         String returnCode = params.get("return_code");
         // 微信支付订单号
-        String transaction_id      = params.get("transaction_id");
+        String transaction_id = params.get("transaction_id");
         // 商户订单号
-        String out_trade_no      = params.get("out_trade_no");
+        String out_trade_no = params.get("out_trade_no");
         // 注意重复通知的情况,同一订单号可能收到多次通知,请注意一定先判断订单状态
-        // 注意此处签名方式需与统一下单的签名类型一致
-        if (WxPayKit.verifyNotify(params, WxPayApiConfigKit.getWxPayApiConfig().getPartnerKey(), SignType.HMACSHA256)) {
+        // 注意此处签名方式需与统一下单的签名类型一致1
+        if (SignUtils.checkSign(params, String.valueOf(SignType.HMACSHA256), wxPayProperties.getMchKey())) {
             if (WxPayKit.codeIsOk(returnCode)) {
                 // 更新订单信息
                 // 发送通知等
                 String[] order=out_trade_no.split("-");
                 R r;
-                switch (order[0]){
-                    case "recharge":
-                        CompanyRecharge recharge=rechargeService.selectCompanyRechargeByNo(order[1]);
-
-                        if(recharge!=null&&recharge.getStatus()==1){
-                            Map<String, String> xml = new HashMap<String, String>(2);
-                            xml.put("return_code", "SUCCESS");
-                            xml.put("return_msg", "OK");
-                            return WxPayKit.toXml(xml);
-                        }
-                        recharge.setTradeNo(transaction_id);
-                        r= rechargeService.payNotify(recharge);
-                        if(r.get("code").equals(200)){
-                            Map<String, String> xml = new HashMap<String, String>(2);
-                            xml.put("return_code", "SUCCESS");
-                            xml.put("return_msg", "OK");
-                            return WxPayKit.toXml(xml);
-
-                        }
-                        else {
-                            return null;
-                        }
-
+                if (order[0].equals("recharge")) {
+                    r = rechargeService.payNotify(order[1],transaction_id);
+                    if (r.get("code").equals(200)) {
+                        Map<String, String> xml = new HashMap<String, String>(2);
+                        xml.put("return_code", "SUCCESS");
+                        xml.put("return_msg", "OK");
+                        return WxPayKit.toXml(xml);
+
+                    } else {
+                        return null;
+                    }
                 }
             }
         }

+ 2 - 0
fs-service-system/src/main/java/com/fs/company/service/CompanyRechargeOrderService.java

@@ -11,4 +11,6 @@ public interface CompanyRechargeOrderService {
     void autoClosedOrder();
 
     CompanyRechargeOrder createOrder(CompanyRechargeOrder order) throws Exception;
+
+    CompanyRechargeOrder queryOrder(String orderNo);
 }

+ 8 - 1
fs-service-system/src/main/java/com/fs/company/service/ICompanyRechargeService.java

@@ -72,7 +72,7 @@ public interface ICompanyRechargeService
     CompanyRecharge selectCompanyRechargeByNo(String s);
 
     R payNotify(CompanyRecharge recharge);
-    R payNotify(String orderNo);
+    R payNotify(String orderNo,String transactionId);
 
     BigDecimal selectCompanyRechargeMoney();
 
@@ -90,4 +90,11 @@ public interface ICompanyRechargeService
      * @return 地址
      */
     CompanyRechargeOrder recharge(RechargeDTO dto) throws Exception;
+
+    /**
+     * 查询订单
+     * @param orderNo 订单号
+     * @return CompanyRechargeOrder
+     */
+    CompanyRechargeOrder queryOrder(String orderNo);
 }

+ 7 - 3
fs-service-system/src/main/java/com/fs/company/service/impl/CompanyRechargeOrderServiceImpl.java

@@ -67,9 +67,9 @@ public class CompanyRechargeOrderServiceImpl implements CompanyRechargeOrderServ
         wxPayService.setConfig(payConfig);
 
         WxPayUnifiedOrderRequest orderRequest = new WxPayUnifiedOrderRequest();
-
+        String orderNo = OrderUtils.getOrderNo();
         orderRequest.setBody("公司余额充值");
-        orderRequest.setOutTradeNo("recharge-"+OrderUtils.getOrderNo());
+        orderRequest.setOutTradeNo("recharge-"+orderNo);
         orderRequest.setTotalFee(order.getPayAmount().multiply(BigDecimal.valueOf(100)).intValue());
         orderRequest.setSpbillCreateIp(IpUtil.getLocalhostIp());
         orderRequest.setNotifyUrl(wxPayProperties.getNativeNotifyUrl());
@@ -80,7 +80,7 @@ public class CompanyRechargeOrderServiceImpl implements CompanyRechargeOrderServ
         WxPayNativeOrderResult wxOrder = wxPayService.createOrder(orderRequest);
 
 
-        order.setOrderNo(OrderUtils.getOrderNo());
+        order.setOrderNo(orderNo);
         order.setPayType(1);
         order.setPayStatus(1);
         order.setCreateTime(LocalDateTime.now());
@@ -92,6 +92,10 @@ public class CompanyRechargeOrderServiceImpl implements CompanyRechargeOrderServ
         return order;
     }
 
+    @Override
+    public CompanyRechargeOrder queryOrder(String orderNo) {
+        return companyRechargeOrderMapper.selectByOrderNo(orderNo);
+    }
 
 
 }

+ 7 - 2
fs-service-system/src/main/java/com/fs/company/service/impl/CompanyRechargeServiceImpl.java

@@ -153,15 +153,15 @@ public class CompanyRechargeServiceImpl implements ICompanyRechargeService
     private CompanyRechargeOrderMapper companyRechargeOrderMapper;
 
     @Override
-    public R payNotify(String orderNo) {
+    public R payNotify(String orderNo,String transactionId) {
         CompanyRechargeOrder order = companyRechargeOrderMapper.selectByOrderNo(orderNo);
 
         //修改状态
         order.setPayStatus(PaymentStatus.SUCCESS.getCode());
+        order.setTransactionId(transactionId);
         companyRechargeOrderMapper.updateByOrderNo(order);
 
         Company company=companyMapper.selectCompanyByIdForUpdate(order.getCompanyId());
-        company.setMoney(company.getMoney().add(order.getPayAmount()));
         //写入日志
         CompanyMoneyLogs log=new CompanyMoneyLogs();
         log.setCompanyId(order.getCompanyId());
@@ -196,4 +196,9 @@ public class CompanyRechargeServiceImpl implements ICompanyRechargeService
         order.setUserId(dto.getUserId());
         return companyRechargeOrderService.createOrder(order);
     }
+
+    @Override
+    public CompanyRechargeOrder queryOrder(String orderNo) {
+        return companyRechargeOrderService.queryOrder(orderNo);
+    }
 }