From 2e030c5bd1db2e1b7c140e2aae387dcdb4c71c0e Mon Sep 17 00:00:00 2001 From: linfso Date: Tue, 20 May 2025 17:07:21 +0800 Subject: [PATCH] md --- .../web/emis/EmisSettleBillController.java | 17 ++++ .../web/emis/EmisTmsCostProfitController.java | 11 ++- .../erp/emis/domain/EmisSettleBill.java | 3 +- .../service/IEmisSettleBillPayLogService.java | 10 +++ .../impl/EmisSettleBillPayLogServiceImpl.java | 78 +++++++++++++++++++ 5 files changed, 114 insertions(+), 5 deletions(-) diff --git a/emis-biz-web/src/main/java/com/xdadan/erp/web/emis/EmisSettleBillController.java b/emis-biz-web/src/main/java/com/xdadan/erp/web/emis/EmisSettleBillController.java index 808ef3a29..709e9806b 100644 --- a/emis-biz-web/src/main/java/com/xdadan/erp/web/emis/EmisSettleBillController.java +++ b/emis-biz-web/src/main/java/com/xdadan/erp/web/emis/EmisSettleBillController.java @@ -240,6 +240,23 @@ public class EmisSettleBillController extends BaseController } } + /** + * 微信小程序支付 + * @param emisSettleBill + * @return + */ + @GetMapping(value = "/genWxPayFromWxApp") + public AjaxResult genWxPayFromWxApp(EmisSettleBill emisSettleBill) + { + try { + String qrPicUrl=emisSettleBillPayLogService.genWxPayFromWxApp(emisSettleBill.getSettleBillNo(),emisSettleBill.getOpenId()); + return AjaxResult.success("成功",qrPicUrl); + } catch (EmisBizError emisBizError) { + emisBizError.printStackTrace(); + return AjaxResult.error(emisBizError.getMessage()); + } + } + @PostMapping(value = "/sumbitWxPay") public AjaxResult sumbitWxPay(@RequestBody EmisSettleBill emisSettleBill) diff --git a/emis-biz-web/src/main/java/com/xdadan/erp/web/emis/EmisTmsCostProfitController.java b/emis-biz-web/src/main/java/com/xdadan/erp/web/emis/EmisTmsCostProfitController.java index f8aebce8f..d78f7bfb4 100644 --- a/emis-biz-web/src/main/java/com/xdadan/erp/web/emis/EmisTmsCostProfitController.java +++ b/emis-biz-web/src/main/java/com/xdadan/erp/web/emis/EmisTmsCostProfitController.java @@ -59,10 +59,13 @@ public class EmisTmsCostProfitController extends BaseController public TableDataInfo list(EmisTmsCostProfit emisTmsCostProfit) { startPage(); - emisTmsCostProfit.setBillCode(WaybillHelper.formatQueryValue(emisTmsCostProfit.getBillCode())); - String[] billCodeSortList = emisTmsCostProfit.getBillCode().split(","); - if(billCodeSortList.length>1){ - emisTmsCostProfit.getParams().put("billCodeSortList", Arrays.asList(billCodeSortList)); + + if(!StringUtils.isEmpty(emisTmsCostProfit.getBillCode())) { + emisTmsCostProfit.setBillCode(WaybillHelper.formatQueryValue(emisTmsCostProfit.getBillCode())); + String[] billCodeSortList = emisTmsCostProfit.getBillCode().split(","); + if (billCodeSortList.length > 1) { + emisTmsCostProfit.getParams().put("billCodeSortList", Arrays.asList(billCodeSortList)); + } } List list = emisTmsCostProfitService.selectEmisTmsCostProfitList(emisTmsCostProfit); diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/domain/EmisSettleBill.java b/emis-biz/src/main/java/com/xdadan/erp/emis/domain/EmisSettleBill.java index 9e5950f80..6ff417dc7 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/domain/EmisSettleBill.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/domain/EmisSettleBill.java @@ -193,7 +193,8 @@ public class EmisSettleBill extends BaseEntity // 支付二维码图片 private String qrCodePayPicUrl; - + // 支付人openId + private String openId; List subBillList; diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/service/IEmisSettleBillPayLogService.java b/emis-biz/src/main/java/com/xdadan/erp/emis/service/IEmisSettleBillPayLogService.java index 76f360004..ddd1127c6 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/service/IEmisSettleBillPayLogService.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/service/IEmisSettleBillPayLogService.java @@ -87,6 +87,16 @@ public interface IEmisSettleBillPayLogService public String genWxPayQR(String settleBillNo) throws EmisBizError; + /** + * 公众号/小程序支付 + * @param settleBillNo + * @param openId + * @return + * @throws EmisBizError + */ + public String genWxPayFromWxApp(String settleBillNo,String openId) throws EmisBizError; + + /** * 检查支付状态 * @param orderNo diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisSettleBillPayLogServiceImpl.java b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisSettleBillPayLogServiceImpl.java index 7f86bf549..8bd03596e 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisSettleBillPayLogServiceImpl.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisSettleBillPayLogServiceImpl.java @@ -228,6 +228,84 @@ public class EmisSettleBillPayLogServiceImpl implements IEmisSettleBillPayLogSer } } + + /** + * 微信小程序支付 + * @param settleBillNo + * @return + * @throws EmisBizError + */ + @Override + public String genWxPayFromWxApp(String settleBillNo,String openId) throws EmisBizError { + + EmisSettleBill emisSettleBill=emisSettleBillMapper.selectSettleBillBySettleBillNo(settleBillNo); + + BigDecimal thisPayMoney=emisSettleBill.getRecMoney().subtract(emisSettleBill.getRecedMoney()); + + int amount= (int) (thisPayMoney.floatValue()*100.0f); + + String merId="1"; + float feeRate=0.0065f; + + int fee= (int) (thisPayMoney.floatValue()*feeRate); + String authCode=""; + + String payId= WaybillHelper.genPayId(); + // 产生支付订单 + EmisSettleBillPayLog emisSettleBillPayLog = new EmisSettleBillPayLog(); + emisSettleBillPayLog.setPayId(payId); + emisSettleBillPayLog.setSettleBillNo(settleBillNo); + emisSettleBillPayLog.setAmount(amount); + emisSettleBillPayLog.setPayType("wx"); + emisSettleBillPayLog.setStatus(0); + emisSettleBillPayLog.setStatusDesc("初始"); + emisSettleBillPayLog.setFee(fee); + emisSettleBillPayLog.setCurrency("CNY"); + emisSettleBillPayLog.setSubject("账单支付"); + emisSettleBillPayLog.setBody("账单支付"); + emisSettleBillPayLog.setRemark("账单支付"); + + emisSettleBillPayLogMapper.insertEmisSettleBillPayLog(emisSettleBillPayLog); + + // 公众号及小程序支付 + String channel="wxpay_pub"; + String appId=""; + String notifyUrl= Config.ERP_API_PAY_NOTIFY_URL; + ApiRes res= null; + + EmisSettleBillPayLog emisSettleBillPayLogUpd = new EmisSettleBillPayLog(); + emisSettleBillPayLogUpd.setId(emisSettleBillPayLog.getId()); + try { + res = VitePayOnlineSdk.onlinePay(channel,payId,merId,amount,fee,notifyUrl,appId,authCode,openId,"运费",emisSettleBill.getSettleBillName()+"-运费"); + log.info("支付代码生成==>{}",JSONObject.toJSONString(res)); + emisSettleBillPayLogUpd.setResponseExtra(JSON.toJSONString(res)); + if(res.isSuccess()){ + String payCode=((Map)res.getData().get("credential")).get("qr_image_url").toString(); + emisSettleBillPayLogUpd.setCredential(JSON.toJSONString(res.getData().get("credential"))); + + emisSettleBillPayLogUpd.setStatus(10); + emisSettleBillPayLogUpd.setStatusDesc("支付中"); + emisSettleBillPayLogMapper.updateEmisSettleBillPayLog(emisSettleBillPayLogUpd); + + return payCode; + } + else{ + emisSettleBillPayLogUpd.setStatus(40); + emisSettleBillPayLogUpd.setStatusDesc(res.getMessage()); + emisSettleBillPayLogMapper.updateEmisSettleBillPayLog(emisSettleBillPayLogUpd); + throw new EmisBizError(EmisBizErrorType.FAIL,res.getMessage()); + } + + } catch (Exception e) { + e.printStackTrace(); + emisSettleBillPayLogUpd.setStatus(40); + emisSettleBillPayLogUpd.setStatusDesc("exception:"+e.getMessage()); + emisSettleBillPayLogMapper.updateEmisSettleBillPayLog(emisSettleBillPayLogUpd); + throw new EmisBizError(EmisBizErrorType.FAIL,"支付异常"); + } + } + + /** * 检查支付订单 * @param payId