|
@@ -10,7 +10,6 @@ import org.springblade.client.entity.GoodsDesc;
|
|
|
import org.springblade.client.feign.ICorpsDescClient;
|
|
import org.springblade.client.feign.ICorpsDescClient;
|
|
|
import org.springblade.client.feign.IFeesDescClient;
|
|
import org.springblade.client.feign.IFeesDescClient;
|
|
|
import org.springblade.client.feign.IGoodsDescClient;
|
|
import org.springblade.client.feign.IGoodsDescClient;
|
|
|
-import org.springblade.client.feign.ISerialClient;
|
|
|
|
|
import org.springblade.core.secure.utils.AuthUtil;
|
|
import org.springblade.core.secure.utils.AuthUtil;
|
|
|
import org.springblade.core.tool.api.R;
|
|
import org.springblade.core.tool.api.R;
|
|
|
import org.springblade.finance.dto.ApplyDTO;
|
|
import org.springblade.finance.dto.ApplyDTO;
|
|
@@ -29,6 +28,8 @@ import org.springblade.purchase.sales.entity.Order;
|
|
|
import org.springblade.purchase.sales.entity.OrderItems;
|
|
import org.springblade.purchase.sales.entity.OrderItems;
|
|
|
import org.springblade.purchase.sales.feign.IOrderDescClient;
|
|
import org.springblade.purchase.sales.feign.IOrderDescClient;
|
|
|
import org.springblade.purchase.sales.feign.IOrderItemsClient;
|
|
import org.springblade.purchase.sales.feign.IOrderItemsClient;
|
|
|
|
|
+import org.springblade.salesPart.entity.PjOrder;
|
|
|
|
|
+import org.springblade.salesPart.feign.IPJOrderClient;
|
|
|
import org.springblade.stock.entity.StockGoods;
|
|
import org.springblade.stock.entity.StockGoods;
|
|
|
import org.springblade.stock.feign.IStockGoodsClient;
|
|
import org.springblade.stock.feign.IStockGoodsClient;
|
|
|
import org.springblade.stock.vo.StockGoodsVO;
|
|
import org.springblade.stock.vo.StockGoodsVO;
|
|
@@ -81,10 +82,7 @@ public class PaymentServiceImpl implements IPaymentService {
|
|
|
//财务
|
|
//财务
|
|
|
private final @NotNull IFinanceClient financeClient;
|
|
private final @NotNull IFinanceClient financeClient;
|
|
|
|
|
|
|
|
- /**
|
|
|
|
|
- * 生成系统编号
|
|
|
|
|
- */
|
|
|
|
|
- private final @NotNull ISerialClient serialClient;
|
|
|
|
|
|
|
+ private final @NotNull IPJOrderClient ipjOrderClient;
|
|
|
|
|
|
|
|
private final @NotNull IStockGoodsClient stockGoodsClient;
|
|
private final @NotNull IStockGoodsClient stockGoodsClient;
|
|
|
|
|
|
|
@@ -215,6 +213,12 @@ public class PaymentServiceImpl implements IPaymentService {
|
|
|
return R.data("下单失败");
|
|
return R.data("下单失败");
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 微信订单回调接口 (翼车配)
|
|
|
|
|
+ *
|
|
|
|
|
+ * @param request
|
|
|
|
|
+ * @param response
|
|
|
|
|
+ */
|
|
|
@Override
|
|
@Override
|
|
|
public void notifyMethod(HttpServletRequest request, HttpServletResponse response) {
|
|
public void notifyMethod(HttpServletRequest request, HttpServletResponse response) {
|
|
|
try {
|
|
try {
|
|
@@ -235,6 +239,123 @@ public class PaymentServiceImpl implements IPaymentService {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 微信订单回调接口 (配件-新)
|
|
|
|
|
+ */
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public void callbackNnotifyMethod(HttpServletRequest request, HttpServletResponse response) {
|
|
|
|
|
+ try {
|
|
|
|
|
+ //通知传输的编码为GBK
|
|
|
|
|
+ request.setCharacterEncoding("UTF-8");
|
|
|
|
|
+ } catch (UnsupportedEncodingException e) {
|
|
|
|
|
+ e.printStackTrace();
|
|
|
|
|
+ }
|
|
|
|
|
+ response.setCharacterEncoding("UTF-8");
|
|
|
|
|
+ TreeMap<String, String> params = NotifyServlet.getParams(request);
|
|
|
|
|
+
|
|
|
|
|
+ String trxstatus = AnalysisMapUtils.getString("trxstatus", params);
|
|
|
|
|
+ logicMethodNew(request, response);
|
|
|
|
|
+ if (Objects.equals(trxstatus, "0000")) {
|
|
|
|
|
+ returnMethod(response, AnalysisMapUtils.setXML("SUCCESS", "OK"));
|
|
|
|
|
+ } else {
|
|
|
|
|
+ returnMethod(response, AnalysisMapUtils.setXML("error", "OK"));
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 微信订单回调接口 (配件-新)
|
|
|
|
|
+ *
|
|
|
|
|
+ * @param request
|
|
|
|
|
+ * @param response
|
|
|
|
|
+ */
|
|
|
|
|
+ private void logicMethodNew(HttpServletRequest request, HttpServletResponse response) {
|
|
|
|
|
+ try {
|
|
|
|
|
+ //通知传输的编码为GBK
|
|
|
|
|
+ request.setCharacterEncoding("UTF-8");
|
|
|
|
|
+ response.setCharacterEncoding("UTF-8");
|
|
|
|
|
+ TreeMap<String, String> params = NotifyServlet.getParams(request);
|
|
|
|
|
+ System.out.println("回调函数数据======》" + params.toString());
|
|
|
|
|
+ String appKey;
|
|
|
|
|
+
|
|
|
|
|
+ WechatMark wechatMark = new WechatMark();
|
|
|
|
|
+
|
|
|
|
|
+ Parameters parameters = new Parameters();
|
|
|
|
|
+ parameters.setAppId(AnalysisMapUtils.getString("appid", params));
|
|
|
|
|
+ parameters.setCusId(AnalysisMapUtils.getString("cusid", params));
|
|
|
|
|
+ Parameters parametersDetails = tongLianPaymentClient.getParametersDetails(parameters);
|
|
|
|
|
+ if (ObjectUtils.isNull(parametersDetails)) {
|
|
|
|
|
+ wechatMark.setRemark("未找到租户,异常支付");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if ("RSA".equals(params.get("signtype"))) {
|
|
|
|
|
+ appKey = parametersDetails.getSybRsacusprikey();
|
|
|
|
|
+ } else if ("SM2".equals(params.get("signtype"))) {
|
|
|
|
|
+ appKey = parametersDetails.getSybSmtlpubkey();
|
|
|
|
|
+ } else {
|
|
|
|
|
+ appKey = parametersDetails.getSybMdAppkey();
|
|
|
|
|
+ }
|
|
|
|
|
+ // 接受到推送通知,首先验签
|
|
|
|
|
+ boolean isSign = SybUtil.validSign(params, appKey, params.get("signtype"));
|
|
|
|
|
+ System.out.println("验签结果:" + isSign);
|
|
|
|
|
+
|
|
|
|
|
+ wechatMark.setCreateTime(new Date());
|
|
|
|
|
+ wechatMark.setType("支付");
|
|
|
|
|
+ if (isSign) {
|
|
|
|
|
+ String trxstatus = AnalysisMapUtils.getString("trxstatus", params);
|
|
|
|
|
+ if (Objects.equals(trxstatus, "0000")) {
|
|
|
|
|
+ wechatMark.setSrcBillNo(AnalysisMapUtils.getString("cusorderid", params));
|
|
|
|
|
+ wechatMark.setSerialNumber(AnalysisMapUtils.getString("trxid", params));
|
|
|
|
|
+ wechatMark.setAmount(new BigDecimal(Objects.requireNonNull(AnalysisMapUtils.getString("trxamt", params))).divide(new BigDecimal(100), MathContext.DECIMAL32).setScale(2, BigDecimal.ROUND_HALF_UP));
|
|
|
|
|
+
|
|
|
|
|
+ //支付成功业务处理
|
|
|
|
|
+ PjOrder order = new PjOrder();
|
|
|
|
|
+ order.setSrcOrdNo(AnalysisMapUtils.getString("cusorderid", params));
|
|
|
|
|
+
|
|
|
|
|
+ if (ObjectUtils.isNotNull(parametersDetails)) {
|
|
|
|
|
+ wechatMark.setTenantId(parametersDetails.getTenantId());
|
|
|
|
|
+ order.setTenantId(parametersDetails.getTenantId());
|
|
|
|
|
+ } else {
|
|
|
|
|
+ wechatMark.setTenantId("000000");
|
|
|
|
|
+ order.setTenantId("000000");
|
|
|
|
|
+ wechatMark.setRemark("未找到租户,异常支付");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ R<PjOrder> re = ipjOrderClient.getByOrder(order);
|
|
|
|
|
+ if (re.isSuccess() && ObjectUtils.isNotNull(re.getData())) {
|
|
|
|
|
+ PjOrder selectOrder = re.getData();
|
|
|
|
|
+ selectOrder.setStatus("待确认");
|
|
|
|
|
+ selectOrder.setActualPaymentStatus(2);
|
|
|
|
|
+ ipjOrderClient.updateOrder(selectOrder);
|
|
|
|
|
+ wechatMark.setCause("订单" + AnalysisMapUtils.getString("cusorderid", params) + "支付成功");
|
|
|
|
|
+ wechatMark.setStatus(1);
|
|
|
|
|
+ } else {
|
|
|
|
|
+ wechatMark.setCause(AnalysisMapUtils.getString("cusorderid", params) + "单号支付成功,系统未查到单据信息,账单结算失败!");
|
|
|
|
|
+ wechatMark.setStatus(2);
|
|
|
|
|
+ }
|
|
|
|
|
+ wechatMarkService.save(wechatMark);
|
|
|
|
|
+ } else {
|
|
|
|
|
+ //订单编号
|
|
|
|
|
+ wechatMark.setCause("订单" + AnalysisMapUtils.getString("cusorderid", params) + "支付失败!" + "原因:" + AnalysisMapUtils.getString("errmsg", params));
|
|
|
|
|
+ wechatMark.setStatus(2);
|
|
|
|
|
+ wechatMarkService.save(wechatMark);
|
|
|
|
|
+ }
|
|
|
|
|
+ } else {
|
|
|
|
|
+ wechatMark.setCause("签名验证失败");
|
|
|
|
|
+ wechatMark.setStatus(2);
|
|
|
|
|
+ wechatMarkService.save(wechatMark);
|
|
|
|
|
+ throw new RuntimeException("签名验证失败");
|
|
|
|
|
+ }
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
|
+ e.printStackTrace();
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 微信订单回调接口 (翼车配)
|
|
|
|
|
+ *
|
|
|
|
|
+ * @param request
|
|
|
|
|
+ * @param response
|
|
|
|
|
+ */
|
|
|
private void logicMethod(HttpServletRequest request, HttpServletResponse response) {
|
|
private void logicMethod(HttpServletRequest request, HttpServletResponse response) {
|
|
|
try {
|
|
try {
|
|
|
//通知传输的编码为GBK
|
|
//通知传输的编码为GBK
|