package com.bomaos.reception.controller;
import cn.hutool.crypto.SecureUtil;
import com.alibaba.fastjson.JSON;
import com.alipay.easysdk.factory.Factory;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.bomaos.carmi.entity.Cards;
import com.bomaos.carmi.service.CardsService;
import com.bomaos.common.core.pays.epusdt.entity.EpusdtNotify;
import com.bomaos.common.core.pays.epusdt.sendPay;
import com.bomaos.common.core.pays.mqpay.mqPay;
import com.bomaos.common.core.pays.payjs.SignUtil;
import com.bomaos.common.core.pays.paypal.PaypalSend;
import com.bomaos.common.core.pays.xunhupay.PayUtils;
import com.bomaos.common.core.pays.epay.EpayUtil;
import com.bomaos.common.core.utils.DateUtil;
import com.bomaos.common.core.utils.FormCheckUtil;
import com.bomaos.common.core.utils.RequestParamsUtil;
import com.bomaos.common.core.utils.StringUtil;
import com.bomaos.common.core.web.JsonResult;
import com.bomaos.common.system.service.EmailService;
import com.bomaos.orders.entity.Orders;
import com.bomaos.orders.service.OrdersService;
import com.bomaos.products.entity.Products;
import com.bomaos.products.service.ProductsService;
import com.bomaos.reception.dto.NotifyDTO;
import com.bomaos.reception.entity.XunhuNotIfy;
import com.bomaos.reception.util.SynchronizedByKeyService;
import com.bomaos.settings.entity.Pays;
import com.bomaos.settings.entity.ShopSettings;
import com.bomaos.settings.service.PaysService;
import com.bomaos.settings.service.ShopSettingsService;
import com.bomaos.website.entity.Website;
import com.bomaos.website.service.WebsiteService;
import com.github.wxpay.sdk.WXPayUtil;
import com.google.common.collect.Maps;
import com.paypal.api.payments.Payment;
import com.paypal.api.payments.Transaction;
import com.paypal.base.rest.PayPalRESTException;
import com.zjiecode.wxpusher.client.WxPusher;
import com.zjiecode.wxpusher.client.bean.Message;
import lombok.SneakyThrows;
import org.apache.commons.codec.Charsets;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.math.RoundingMode;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.atomic.AtomicReference;
@Controller
@Transactional
public class NotifyController {
@Autowired
private PaysService paysService;
@Autowired
private OrdersService ordersService;
@Autowired
private ProductsService productsService;
@Autowired
private CardsService cardsService;
@Autowired
private EmailService emailService;
@Autowired
private WebsiteService websiteService;
@Autowired
private ShopSettingsService shopSettingsService;
@Autowired
private SynchronizedByKeyService synchronizedByKeyService;
/**
* 返回成功xml
*/
private final String WxpayresXml = "<xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[OK]]></return_msg></xml>";
private final String WxpayH5resXml = "<xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[OK]]></return_msg></xml>";
private final String resFailXml = "<xml><return_code><![CDATA[FAIL]]></return_code><return_msg><![CDATA[报文为空]]></return_msg></xml>";
@RequestMapping("/mqpay/notifyUrl")
@ResponseBody
public String notifyUrl(HttpServletRequest request) {
Map<String, String> params = RequestParamsUtil.getParameterMap(request);
String param = params.get("param");
String price = params.get("price");
String money = params.get("reallyPrice");
String sign = params.get("sign");
String payId = params.get("payId");
String type = params.get("type");
String key = null;
Orders orders = ordersService.getOne(new QueryWrapper<Orders>().eq("member", payId));
if (Integer.parseInt(type) == 1) { // wxpay
Pays wxPays = paysService.getOne(new QueryWrapper<Pays>().eq("driver", "mqpay_wxpay"));
/**
* 防止破解
*/
if (!orders.getPayType().equals(wxPays.getDriver())) {
return "不要搞我啦!!";
}
Map mapTypes = JSON.parseObject(wxPays.getConfig());
key = mapTypes.get("key").toString();
} else if (Integer.parseInt(type) == 2) { // alipay
Pays aliPays = paysService.getOne(new QueryWrapper<Pays>().eq("driver", "mqpay_alipay"));
/**
* 防止破解
*/
if (!orders.getPayType().equals(aliPays.getDriver())) {
return "不要搞我啦!!";
}
Map mapTypes = JSON.parseObject(aliPays.getConfig());
key = mapTypes.get("key").toString();
}
String mysign = mqPay.md5(payId + param + type + price + money + key);
if (mysign.equals(sign)) {
String date = new SimpleDateFormat("yyyyMMdd").format(new Date());
String seconds = new SimpleDateFormat("HHmmss").format(new Date());
String number = StringUtil.getRandomNumber(6);
String payNo = date + seconds + number;
AtomicReference<String> notifyText = new AtomicReference<>();
synchronizedByKeyService.exec(payId, () -> {
String returnBig1 = returnBig(money, price, payId, payNo, param, "success", "fiald");
notifyText.set(returnBig1);
});
return notifyText.get();
} else {
return "fiald";
}
}
@RequestMapping("/mqpay/returnUrl")
public void returnUrl(HttpServletRequest request, HttpServletResponse response) throws IOException {
/**
*验证通知 处理自己的业务
*/
Map<String, String> params = RequestParamsUtil.getParameterMap(request);
String param = params.get("param");
String price = params.get("price");
String reallyPrice = params.get("reallyPrice");
String sign = params.get("sign");
String payId = params.get("payId");
String type = params.get("type");
String key = null;
if (Integer.parseInt(type) == 1) { // wxpay
Pays wxPays = paysService.getOne(new QueryWrapper<Pays>().eq("driver", "mqpay_wxpay"));
Map mapTypes = JSON.parseObject(wxPays.getConfig());
key = mapTypes.get("key").toString();
} else if (Integer.parseInt(type) == 2) { // alipay
Pays aliPays = paysService.getOne(new QueryWrapper<Pays>().eq("driver", "mqpay_alipay"));
Map mapTypes = JSON.parseObject(aliPays.getConfig());
key = mapTypes.get("key").toString();
}
String mysign = mqPay.md5(payId + param + type + price + reallyPrice + key);
if (mysign.equals(sign)) {
String url = "/pay/state/" + payId;
response.sendRedirect(url);
}
}
@RequestMapping("/epay/notifyUrl")
@ResponseBody
public String zlianpNotify(HttpServletRequest request) {
Map<String, String> parameterMap = RequestParamsUtil.getParameterMap(request);
String pid = parameterMap.get("pid");
String type = parameterMap.get("type");
String
没有合适的资源?快使用搜索试试~ 我知道了~
2023最新分层批发模式波猫 自动发卡售卡系统平台java源码
共1166个文件
js:377个
java:205个
gif:156个
需积分: 0 1 下载量 116 浏览量
2023-08-04
22:45:03
上传
评论
收藏 6.11MB ZIP 举报
温馨提示
功能特色: 开发语言:JAVA 开发框架:Spring boot 前端UI layui layui 开发的白天 – 黑夜 – 炫丽暗黑模板 基于Layui开发的炫丽后台界面 集成了后台多种主题模式 炫丽暗黑界面支持自定义背景图片 炫丽的前台卡片式商品展示 支持无限层级的批发模式 集成了微信订单消息通知以及邮件系统 支持自定义网站标题、关键字、logo、等 支持首页公告弹窗展示 集成了强大的优惠券系统
资源推荐
资源详情
资源评论
收起资源包目录
2023最新分层批发模式波猫 自动发卡售卡系统平台java源码 (1166个子文件)
mvnw.cmd 5KB
admin.css 118KB
layui.css 95KB
layui.css 95KB
main.css 62KB
notice.css 61KB
notice.css 61KB
skin.min.css 54KB
skin.min.css 54KB
main.css 28KB
skin.mobile.min.css 21KB
skin.mobile.min.css 21KB
layer.css 19KB
swiper-bundle.css 18KB
swiper-bundle.min.css 18KB
content.min.css 17KB
content.inline.min.css 17KB
content.inline.min.css 17KB
content.min.css 17KB
pay.css 15KB
product.css 15KB
layer.css 14KB
main.min.css 14KB
index.css 14KB
introJs.css 12KB
dropdown.css 11KB
dropdown.css 11KB
layui.mobile.css 10KB
layui.mobile.css 10KB
main.css 7KB
laydate.css 7KB
laydate.css 7KB
metroStyle.css 7KB
steps.css 7KB
zTreeStyle.css 6KB
swiper.min.css 5KB
Cropper.css 5KB
article.css 5KB
search.css 5KB
pagination.min.css 5KB
cascader.css 4KB
workplace.css 4KB
main.min.css 3KB
city-picker.css 3KB
login.css 3KB
order.css 3KB
tagsInput.css 3KB
article-content.css 2KB
main.css 2KB
main.css 2KB
Split.css 2KB
footer.css 2KB
effect-cube.min.css 1KB
main.min.css 1KB
content.min.css 1KB
navigation.min.css 1KB
code.css 1KB
code.css 1KB
content.min.css 1KB
main.min.css 1004B
content.min.css 985B
content.min.css 964B
banner.css 804B
content.mobile.min.css 551B
content.mobile.min.css 551B
effect-flip.min.css 549B
lazy.min.css 523B
scrollbar.min.css 511B
virtual.min.css 349B
effect-fade.min.css 325B
zoom.min.css 286B
effect-cards.min.css 168B
effect-creative.min.css 154B
grid.min.css 117B
a11y.min.css 104B
free-mode.min.css 84B
effect-coverflow.min.css 0B
parallax.min.css 0B
hash-navigation.min.css 0B
controller.min.css 0B
history.min.css 0B
mousewheel.min.css 0B
thumbs.min.css 0B
manipulation.min.css 0B
autoplay.min.css 0B
keyboard.min.css 0B
.DS_Store 10KB
.DS_Store 8KB
.DS_Store 8KB
.DS_Store 8KB
.DS_Store 8KB
.DS_Store 8KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
共 1166 条
- 1
- 2
- 3
- 4
- 5
- 6
- 12
资源评论
持续航行
- 粉丝: 5
- 资源: 84
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- cyuyan语言的基础学习
- 录屏软件亲测可用哦,非常好用
- 前端分析-2023071100789
- STM32无源蜂鸣器播放音乐《千与千寻》
- 前端分析-2023071100789
- 计算机网络基础知识与核心技术详析
- 模电课设(GKS-18光控声光循环灯说明书).doc
- HCIA笔记一些网络历史,TCP/IP,osi七层模型等等
- 语音助手多任务音频文本共享模型(AT-AT)用于提升端到端口语理解系统性能及零样本预测能力
- 【锂电池剩余寿命预测】CNN卷积神经网络锂电池剩余寿命预测,马里兰大学锂电池数据集(Pytorch完整源码和数据)
- 康熙字典mysql数据库表
- 同时语音翻译领域中大规模语言模型的应用与突破-CLASI系统研究
- 华为认证HCIA笔记(第一二天)
- 【锂电池剩余寿命预测】GRU门控循环单元锂电池剩余寿命预测,马里兰大学锂电池数据集(Pytorch完整源码和数据)
- 【锂电池剩余寿命预测】LSTM长短期记忆神经网络锂电池剩余寿命预测,马里兰大学锂电池数据集(Pytorch完整源码和数据)
- 西南交通大学数电实验考试资料
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功