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
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
最新版波猫商店自动发卡售卡系统源码 适用于各种电商、优惠卷、论坛邀请码、充值卡、激活码、注册码、腾讯爱奇艺积分CDK等,支持手动和全自动发货,还有类似1688的分层批发模式。 功能特色: 开发语言:JAVA 开发框架:Spring boot 前端UI layui layui 开发的白天 - 黑夜 - 炫丽暗黑模板 基于Layui开发的炫丽后台界面 集成了后台多种主题模式 炫丽暗黑界面支持自定义背景图片 炫丽的前台卡片式商品展示 支持无限层级的批发模式 集成了微信订单消息通知以及邮件系统 支持自定义网站标题、关键字、logo、等 支持移动端支付宝唤醒APP支付 集成了大量支付接口【微信官方扫码、支付宝当面付、v免签、payjs、虎皮椒V3、YunGouOS、值联码支付、码支付、USDT、等...】 支持首页公告弹窗展示 集成了强大的优惠券系统 集成了自定义的商品购买备注字段
资源推荐
资源详情
资源评论
收起资源包目录
最新版波猫商店自动发卡售卡系统源码.rar (1167个子文件)
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
共 1167 条
- 1
- 2
- 3
- 4
- 5
- 6
- 12
资源评论
小正太浩二
- 粉丝: 183
- 资源: 5909
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- MyBatis 动态 SQL:灵活而强大的查询构建器.pdf
- com.accordion.prettyo.apk
- 毕业设计:基于SSM的mysql-ssm软件bug管理系统(源码 + 数据库 + 说明文档)
- MTSQL8.0.35windows(64bit)-mysql-installer-community-8.0.35.0
- 人工智能引领音乐创作新时代之Suno AI
- Public-bicycle-usage-forecast-master.zip
- 通道处理过程模拟:从理论到实践.pdf
- 数据库第七次作业E-R图第一题
- 大厂面试真题Java语法基础面试专题及答案
- IMG20240428211124.jpg
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功