Commit 58088c9c authored by cy's avatar cy

支付

parent 485518ed
......@@ -59,5 +59,40 @@ public class Md5Util {
}
return sb.toString();
}
private static String byteArrayToHexString(byte b[]) {
StringBuffer resultSb = new StringBuffer();
for (int i = 0; i < b.length; i++)
resultSb.append(byteToHexString(b[i]));
return resultSb.toString();
}
private static String byteToHexString(byte b) {
int n = b;
if (n < 0)
n += 256;
int d1 = n / 16;
int d2 = n % 16;
return hexDigits[d1] + hexDigits[d2];
}
public static String MD5Encode(String origin, String charsetname) {
String resultString = null;
try {
resultString = new String(origin);
MessageDigest md = MessageDigest.getInstance("MD5");
if (charsetname == null || "".equals(charsetname))
resultString = byteArrayToHexString(md.digest(resultString
.getBytes()));
else
resultString = byteArrayToHexString(md.digest(resultString
.getBytes(charsetname)));
} catch (Exception exception) {
}
return resultString;
}
private static final String hexDigits[] = { "0", "1", "2", "3", "4", "5",
"6", "7", "8", "9", "a", "b", "c", "d", "e", "f" };
}
......@@ -47,8 +47,6 @@
<orderEntry type="library" name="Maven: org.springframework:spring-expression:5.1.7.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-undertow:2.1.5.RELEASE" level="project" />
<orderEntry type="library" name="Maven: io.undertow:undertow-core:2.0.20.Final" level="project" />
<orderEntry type="library" name="Maven: org.jboss.xnio:xnio-api:3.3.8.Final" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: org.jboss.xnio:xnio-nio:3.3.8.Final" level="project" />
<orderEntry type="library" name="Maven: io.undertow:undertow-servlet:2.0.20.Final" level="project" />
<orderEntry type="library" name="Maven: org.jboss.spec.javax.annotation:jboss-annotations-api_1.2_spec:1.0.2.Final" level="project" />
<orderEntry type="library" name="Maven: io.undertow:undertow-websockets-jsr:2.0.20.Final" level="project" />
......@@ -78,6 +76,8 @@
<orderEntry type="library" name="Maven: org.springframework:spring-jcl:5.1.7.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-test:5.1.7.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.xmlunit:xmlunit-core:2.6.2" level="project" />
<orderEntry type="library" name="Maven: javax.xml.bind:jaxb-api:2.3.1" level="project" />
<orderEntry type="library" name="Maven: javax.activation:javax.activation-api:1.2.0" level="project" />
<orderEntry type="library" name="Maven: org.mybatis.spring.boot:mybatis-spring-boot-starter:2.1.2" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-jdbc:2.1.5.RELEASE" level="project" />
<orderEntry type="library" name="Maven: com.zaxxer:HikariCP:3.2.0" level="project" />
......
......@@ -19,4 +19,6 @@ public interface PayRecordMapper extends BaseMapper<PayRecord> {
int count(Map<String,Object> map);
List<PayRecord> getById(@Param("userId") Integer userId);
}
......@@ -9,6 +9,7 @@
<result column="card_id" property="cardId"/>
<result column="money" property="money"/>
<result column="result" property="result"/>
<result column="trade_no" property="tradeNo"/>
<result column="pay_limit" property="payLimit"/>
<result column="create_time" property="createTime"/>
<result column="update_time" property="updateTime"/>
......@@ -24,11 +25,11 @@
</sql>
<sql id="cols_exclude_id">
user_id,type, card_id,money,result,pay_limit, create_time,update_time
user_id,type, card_id,trade_no,money,result,pay_limit, create_time,update_time
</sql>
<sql id="vals">
#{userId},#{type},#{cardId},#{money},#{result},#{payLimit},now(),now()
#{userId},#{type},#{cardId},#{tradeNo},#{money},#{result},#{payLimit},now(),now()
</sql>
<sql id="updateCondition">
......@@ -100,4 +101,5 @@
</where>
</select>
</mapper>
......@@ -51,8 +51,6 @@
<orderEntry type="library" name="Maven: org.springframework:spring-expression:5.1.7.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-undertow:2.1.5.RELEASE" level="project" />
<orderEntry type="library" name="Maven: io.undertow:undertow-core:2.0.20.Final" level="project" />
<orderEntry type="library" name="Maven: org.jboss.xnio:xnio-api:3.3.8.Final" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: org.jboss.xnio:xnio-nio:3.3.8.Final" level="project" />
<orderEntry type="library" name="Maven: io.undertow:undertow-servlet:2.0.20.Final" level="project" />
<orderEntry type="library" name="Maven: org.jboss.spec.javax.annotation:jboss-annotations-api_1.2_spec:1.0.2.Final" level="project" />
<orderEntry type="library" name="Maven: io.undertow:undertow-websockets-jsr:2.0.20.Final" level="project" />
......@@ -82,6 +80,8 @@
<orderEntry type="library" name="Maven: org.springframework:spring-jcl:5.1.7.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-test:5.1.7.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.xmlunit:xmlunit-core:2.6.2" level="project" />
<orderEntry type="library" name="Maven: javax.xml.bind:jaxb-api:2.3.1" level="project" />
<orderEntry type="library" name="Maven: javax.activation:javax.activation-api:1.2.0" level="project" />
<orderEntry type="library" name="Maven: org.mybatis.spring.boot:mybatis-spring-boot-starter:2.1.2" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-jdbc:2.1.5.RELEASE" level="project" />
<orderEntry type="library" name="Maven: com.zaxxer:HikariCP:3.2.0" level="project" />
......
......@@ -42,6 +42,12 @@ public class PayRecord implements Serializable {
@ApiModelProperty(value = "充值用户id",name = "userId")
private Integer userId;
/**
* 支付交易号
*/
@ApiModelProperty(value = "支付交易号",name = "tradeNo")
private String tradeNo;
/**
* 充值所花金额
*/
......
......@@ -41,4 +41,10 @@ public class AddLimitVo implements Serializable {
*/
@ApiModelProperty(value = "充值卡密码", name = "password")
private String password;
/**
* 支付交易号
*/
@ApiModelProperty(value = "支付交易号", name = "tradeNo")
private String tradeNo;
}
......@@ -46,6 +46,11 @@ public class PayRecordShowVo implements Serializable {
*/
@ApiModelProperty(value = "充值时间",name = "payTime")
private Date payTime;
/**
* 支付交易号
*/
@ApiModelProperty(value = "支付交易号",name = "tradeNo")
private String tradeNo;
}
......@@ -49,8 +49,6 @@
<orderEntry type="library" name="Maven: org.springframework:spring-expression:5.1.7.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-undertow:2.1.5.RELEASE" level="project" />
<orderEntry type="library" name="Maven: io.undertow:undertow-core:2.0.20.Final" level="project" />
<orderEntry type="library" name="Maven: org.jboss.xnio:xnio-api:3.3.8.Final" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: org.jboss.xnio:xnio-nio:3.3.8.Final" level="project" />
<orderEntry type="library" name="Maven: io.undertow:undertow-servlet:2.0.20.Final" level="project" />
<orderEntry type="library" name="Maven: org.jboss.spec.javax.annotation:jboss-annotations-api_1.2_spec:1.0.2.Final" level="project" />
<orderEntry type="library" name="Maven: io.undertow:undertow-websockets-jsr:2.0.20.Final" level="project" />
......@@ -80,6 +78,8 @@
<orderEntry type="library" name="Maven: org.springframework:spring-jcl:5.1.7.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-test:5.1.7.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.xmlunit:xmlunit-core:2.6.2" level="project" />
<orderEntry type="library" name="Maven: javax.xml.bind:jaxb-api:2.3.1" level="project" />
<orderEntry type="library" name="Maven: javax.activation:javax.activation-api:1.2.0" level="project" />
<orderEntry type="library" name="Maven: org.mybatis.spring.boot:mybatis-spring-boot-starter:2.1.2" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-jdbc:2.1.5.RELEASE" level="project" />
<orderEntry type="library" name="Maven: com.zaxxer:HikariCP:3.2.0" level="project" />
......
......@@ -24,4 +24,12 @@ public interface AliPayService {
* @return 查询结果
*/
R<String> query(PayQueryDto payQueryDto);
/***
* 支付宝回调
* @param response
* @param request
* @return
*/
R<String> aliPayCallBack(HttpServletResponse response, HttpServletRequest request);
}
package cn.wisenergy.service.app;
import cn.wisenergy.common.utils.R;
import cn.wisenergy.model.dto.PayPageDto;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* @author chnegyan
*/
public interface TestWxPayService {
/**
* 测试-微信支付
* @Param
* @return
*/
R<String> wxPay(PayPageDto payPageDto, HttpServletResponse response);
/***
*测试-支付成功回调
* @param request
* @param response
* @return
*/
R<String> wxPayCallBack(HttpServletRequest request, HttpServletResponse response);
}
package cn.wisenergy.service.app.impl;
import cn.wisenergy.common.utils.Md5Util;
import cn.wisenergy.common.utils.R;
import cn.wisenergy.mapper.PayRecordMapper;
import cn.wisenergy.mapper.PriceMapper;
import cn.wisenergy.model.app.PayRecord;
import cn.wisenergy.model.dto.PayPageDto;
import cn.wisenergy.model.vo.AddLimitVo;
import cn.wisenergy.service.app.TestWxPayService;
import cn.wisenergy.service.app.UserLimitService;
import cn.wisenergy.service.util.MapToXmlUtils;
import cn.wisenergy.service.wxpay.WxCommon;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import io.swagger.models.auth.In;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.RandomStringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
import java.text.DecimalFormat;
import java.util.*;
/**
* @author chengyan
*/
@Service
@Slf4j
public class TestWxPayServiceImpl implements TestWxPayService {
public static String basePath = "https://api.mch.weixin.qq.com/pay/unifiedorder";
@Autowired
private UserLimitService userLimitService;
@Autowired
private PayRecordMapper payRecordMapper;
/***
* 支付
* @param payPageDto
* @param response
* @return
*/
@Override
public R<String> wxPay(PayPageDto payPageDto, HttpServletResponse response) {
if(null==payPageDto || null==payPageDto.getTotal()){
return R.error("入参不能为空");
}
ServletOutputStream sos = null;
String tradeNo = "21" + System.currentTimeMillis();
//生成预支付订单,充值结果设为失败(result=1)
PayRecord payRecord = new PayRecord();
payRecord.setMoney(payPageDto.getTotal());
payRecord.setResult(1);
payRecord.setTradeNo(tradeNo);
payRecord.setType(payPageDto.getPayType());
payRecord.setUserId(payPageDto.getUserId());
payRecordMapper.add(payRecord);
try {
String orderInfo = createOrderInfo(payPageDto,tradeNo);//生成【统一下单API】所需参数的接口
System.out.println(orderInfo);
String code_url = unifiedOrder(orderInfo);//调用统一下单接口
sos = response.getOutputStream();
//QRCodeUtil.encode(code_url, sos);//调用生成二维码的方法
System.out.println("code_url:"+code_url);
return R.ok("0",code_url);
} catch (Exception e) {
e.printStackTrace();
return R.error("获取code_url失败");
}
}
/***
* 生成统一下单格式的订单,生成一个XML格式的字符串
* @return
* @throws UnsupportedEncodingException
*/
public String createOrderInfo(PayPageDto payPageDto,String tradeNo) throws UnsupportedEncodingException {
String nonce_str = RandomStringUtils.randomAlphanumeric(16);
SortedMap<String,String> parameters = new TreeMap<String,String>();
parameters.put("appid", WxCommon.APP_ID);
parameters.put("mch_id", WxCommon.MCHID);
parameters.put("body", "充值");
parameters.put("out_trade_no", tradeNo);
parameters.put("nonce_str", nonce_str);
DecimalFormat df = new DecimalFormat("#");
parameters.put("total_fee", df.format((payPageDto.getTotal())*100));
parameters.put("notify_url",WxCommon.NOTIFY_URL);
parameters.put("trade_type","NATIVE");
String characterEncoding = "UTF-8";
String sign = createSign(characterEncoding,parameters);
parameters.put("sign", sign);//签名
//将订单对象转为xml格式
String s = null;
try {
return MapToXmlUtils.mapToXml(parameters);//maptoXml方法是微信sdk自带的方法
} catch (Exception e) {
e.printStackTrace();
}
return new String(s.getBytes("UTF-8"));
}
/***
* 统一下单
* @param info
* @return
* @throws Exception
*/
public String unifiedOrder(String info) throws Exception {
HttpURLConnection conn = (HttpURLConnection) new URL(basePath).openConnection();
//加入数据
conn.setRequestMethod("POST");
conn.setDoOutput(true);
BufferedOutputStream buffOutStr = new BufferedOutputStream(conn.getOutputStream());
buffOutStr.write(info.getBytes("UTF-8"));
buffOutStr.flush();
buffOutStr.close();
//获取输入流
BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));
String line = null;
StringBuffer sb = new StringBuffer();
while ((line = reader.readLine()) != null) {
sb.append(line);
}
Map<String, String> map = MapToXmlUtils.xmlToMap(sb.toString());
//返回的部分字段
String return_msg = map.get("return_msg");//返回信息
String return_code = map.get("return_code");//状态码
String result_code = map.get("result_code");//业务结果
String code_url = map.get("code_url");
//根据微信文档return_code 和result_code都为SUCCESS的时候才会返回code_url
if (null != map && "SUCCESS".equals(return_code) && "SUCCESS".equals(result_code)) {
return code_url;
} else {
System.out.println(return_msg);
return null;
}
}
/***
* 生成签名
* @param characterEncoding
* @param parameters
* @return
*/
public static String createSign(String characterEncoding, SortedMap<String,String> parameters){
StringBuffer sb = new StringBuffer();
Set es = parameters.entrySet();//所有参与传参的参数按照accsii排序(升序)
Iterator it = es.iterator();
while(it.hasNext()) {
Map.Entry entry = (Map.Entry)it.next();
String k = (String)entry.getKey();
Object v = entry.getValue();
if(null != v && !"".equals(v)
&& !"sign".equals(k) && !"key".equals(k)) {
sb.append(k + "=" + v + "&");
}
}
sb.append("key=" + WxCommon.PRIVATE_KEY);
String sign = Md5Util.MD5Encode(sb.toString(), characterEncoding).toUpperCase();
System.out.println("签名:"+sign);
return sign;
}
/***
* 支付成功回调
* @param request
* @param response
* @return
*/
@Override
public R<String> wxPayCallBack(HttpServletRequest request, HttpServletResponse response) {
System.out.println("回调成功");
try {
InputStream inStream = request.getInputStream();
ByteArrayOutputStream outSteam = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len = 0;
while ((len = inStream.read(buffer)) != -1) {
outSteam.write(buffer, 0, len);
}
outSteam.close();
inStream.close();
String result = new String(outSteam.toByteArray(), "utf-8");// 获取微信调用我们notify_url的返回信息
Map<String, String> map = MapToXmlUtils.xmlToMap(result);
if (map.get("result_code").equalsIgnoreCase("SUCCESS")) {
//返回成功后修改订单充值结果为0,保存查询次数
QueryWrapper<PayRecord> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("trade_no",map.get("out_trade_no"));
PayRecord payRecord = payRecordMapper.selectOne(queryWrapper);
AddLimitVo addLimitVo = new AddLimitVo();
addLimitVo.setTradeNo(map.get("out_trade_no"));
addLimitVo.setPayMoney(payRecord.getMoney());
addLimitVo.setPayType(2);
addLimitVo.setUserId(payRecord.getUserId());
R<Boolean> booleanR = userLimitService.addLimit(addLimitVo);
if (booleanR.getCode()==1) {
return R.error("用户查询次数添加失败");
}
return R.ok(0,"充值成功");
}
return R.ok(1,"充值失败");
} catch (Exception e) {
return R.ok(1,"充值失败");
}
}
}
......@@ -56,7 +56,6 @@ public class VolunteerServiceImpl extends ServiceImpl<VolunteerMapper, Volunteer
StringUtils.isBlank(fileUrl)) {
throw new BaseException("操作错误");
}
//判断文件类型=
boolean valid = this.validContentType(file.getOriginalFilename());
if (!valid) {
......
package cn.wisenergy.service.common;
import cn.wisenergy.common.utils.R;
import cn.wisenergy.common.utils.StringUtil;
import cn.wisenergy.mapper.*;
import cn.wisenergy.model.app.*;
import cn.wisenergy.model.enums.CardStatus;
......@@ -11,7 +12,9 @@ import cn.wisenergy.model.vo.UserInfoVo;
import cn.wisenergy.service.app.UserLimitService;
import cn.wisenergy.service.app.UserVolunteerService;
import cn.wisenergy.service.app.VolunteerService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
......@@ -161,7 +164,16 @@ public class VolunteerManager {
payRecord.setResult(0);
payRecord.setType(addLimitVo.getPayType());
payRecord.setUserId(addLimitVo.getUserId());
int pay = payRecordMapper.add(payRecord);
payRecord.setTradeNo(addLimitVo.getTradeNo());
QueryWrapper<PayRecord> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("trade_no",payRecord.getTradeNo());
PayRecord byTradeNo = payRecordMapper.selectOne(queryWrapper);
int pay =0;
if(null!=byTradeNo){
pay = payRecordMapper.updateById(payRecord);
}else{
pay = payRecordMapper.add(payRecord);
}
if (pay == 0) {
return false;
}
......
package cn.wisenergy.service.util;
import com.itextpdf.text.DocumentException;
import org.apache.poi.util.DocumentHelper;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import javax.management.Attribute;
import javax.swing.text.Document;
import javax.swing.text.Element;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.io.StringWriter;
import java.util.*;
public class MapToXmlUtils {
/**
* map 对象转换成 xml 字符串
**//*
public static String mapToXml(Map map) throws Exception{
if (null == map) return null;
System.out.println("转换前的Map对象数据:" + map.toString());
StringBuffer sb = new StringBuffer();
*//** 添加xml 的公共头信息 *//*
sb.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
mapToXmlHelp(map, sb);
System.out.println("将map转成xml后的数据:" + sb.toString());
return sb.toString();
}
*//**
* 转换帮助方法
**//*
private static void mapToXmlHelp(Map map, StringBuffer str) throws Exception{
Set set = map.keySet();
*//** 遍历key *//*
for (Iterator it = set.iterator(); it.hasNext();) {
String key = (String) it.next();
Object value = map.get(key);
if (null == value)
value = "";
*//** 如果对象是集合 *//*
if (value.getClass().getName().equals("java.util.ArrayList")) {
ArrayList list = (ArrayList) map.get(key);
str.append("<" + key + ">");
for (int i = 0; i < list.size(); i++) {
HashMap hm = (HashMap) list.get(i);
mapToXmlHelp(hm, str);
}
str.append("</" + key + ">");
*//** 如果该集合对象的长度只有1,那么默认重复添加集合下节点 *//*
if (null !=list && !list.isEmpty() && list.size() <= 1) {
str.append("<" + key + ">");
for (int i = 0; i < list.size(); i++) {
HashMap hm = (HashMap) list.get(i);
mapToXmlHelp(hm, str);
}
str.append("</" + key + ">");
}
*//** 对象非集合时 *//*
} else {
if (value instanceof HashMap) {
str.append("<" + key + ">");
mapToXmlHelp((HashMap) value, str);
str.append("</" + key + ">");
} else {
str.append("<" + key + ">" + value + "</" + key + ">");
}
}
}
}*/
/**
* XML格式字符串转换为Map
*
* @param strXML XML字符串
* @return XML数据转换后的Map
* @throws Exception
*/
public static Map<String, String> xmlToMap(String strXML) throws Exception {
try {
Map<String, String> data = new HashMap<String, String>();
DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
InputStream stream = new ByteArrayInputStream(strXML.getBytes("UTF-8"));
org.w3c.dom.Document doc = documentBuilder.parse(stream);
doc.getDocumentElement().normalize();
NodeList nodeList = doc.getDocumentElement().getChildNodes();
for (int idx = 0; idx < nodeList.getLength(); ++idx) {
Node node = nodeList.item(idx);
if (node.getNodeType() == Node.ELEMENT_NODE) {
org.w3c.dom.Element element = (org.w3c.dom.Element) node;
data.put(element.getNodeName(), element.getTextContent());
}
}
try {
stream.close();
} catch (Exception ex) {
// do nothing
}
return data;
} catch (Exception ex) {
throw ex;
}
}
/**
* 将Map转换为XML格式的字符串
*
* @param data Map类型数据
* @return XML格式的字符串
* @throws Exception
*/
public static String mapToXml(Map<String, String> data) throws Exception {
DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder documentBuilder= documentBuilderFactory.newDocumentBuilder();
org.w3c.dom.Document document = documentBuilder.newDocument();
org.w3c.dom.Element root = document.createElement("xml");
document.appendChild(root);
for (String key: data.keySet()) {
String value = data.get(key);
if (value == null) {
value = "";
}
value = value.trim();
org.w3c.dom.Element filed = document.createElement(key);
filed.appendChild(document.createTextNode(value));
root.appendChild(filed);
}
TransformerFactory tf = TransformerFactory.newInstance();
Transformer transformer = tf.newTransformer();
DOMSource source = new DOMSource(document);
transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
StringWriter writer = new StringWriter();
StreamResult result = new StreamResult(writer);
transformer.transform(source, result);
String output = writer.getBuffer().toString(); //.replaceAll("\n|\r", "");
try {
writer.close();
}
catch (Exception ex) {
}
return output;
}
}
......@@ -49,8 +49,6 @@
<orderEntry type="library" name="Maven: org.springframework:spring-expression:5.1.7.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-undertow:2.1.5.RELEASE" level="project" />
<orderEntry type="library" name="Maven: io.undertow:undertow-core:2.0.20.Final" level="project" />
<orderEntry type="library" name="Maven: org.jboss.xnio:xnio-api:3.3.8.Final" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: org.jboss.xnio:xnio-nio:3.3.8.Final" level="project" />
<orderEntry type="library" name="Maven: io.undertow:undertow-servlet:2.0.20.Final" level="project" />
<orderEntry type="library" name="Maven: org.jboss.spec.javax.annotation:jboss-annotations-api_1.2_spec:1.0.2.Final" level="project" />
<orderEntry type="library" name="Maven: io.undertow:undertow-websockets-jsr:2.0.20.Final" level="project" />
......@@ -116,10 +114,8 @@
<orderEntry type="library" name="Maven: io.netty:netty-resolver:4.1.36.Final" level="project" />
<orderEntry type="library" name="Maven: io.projectreactor:reactor-core:3.2.9.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.reactivestreams:reactive-streams:1.0.2" level="project" />
<orderEntry type="library" name="Maven: org.bouncycastle:bcprov-jdk15on:1.54" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-swagger2:2.9.2" level="project" />
<orderEntry type="library" name="Maven: io.swagger:swagger-models:1.5.20" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.9.0" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-spi:2.9.2" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-core:2.9.2" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-schema:2.9.2" level="project" />
......@@ -131,8 +127,6 @@
<orderEntry type="library" name="Maven: org.mapstruct:mapstruct:1.2.0.Final" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-swagger-ui:2.9.2" level="project" />
<orderEntry type="library" name="Maven: io.jsonwebtoken:jjwt:0.9.1" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.9.8" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.9.8" level="project" />
<orderEntry type="library" name="Maven: joda-time:joda-time:2.10.2" level="project" />
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-core:1.4.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-lang:1.4.0" level="project" />
......@@ -153,6 +147,28 @@
<orderEntry type="library" name="Maven: ch.qos.logback:logback-core:1.2.3" level="project" />
<orderEntry type="library" name="Maven: ch.qos.logback:logback-classic:1.2.3" level="project" />
<orderEntry type="library" name="Maven: org.jetbrains:annotations:20.1.0" level="project" />
<orderEntry type="library" name="Maven: com.aliyun:aliyun-java-sdk-core:4.5.3" level="project" />
<orderEntry type="library" name="Maven: com.google.code.gson:gson:2.8.5" level="project" />
<orderEntry type="library" name="Maven: commons-logging:commons-logging:1.2" level="project" />
<orderEntry type="library" name="Maven: javax.xml.bind:jaxb-api:2.3.1" level="project" />
<orderEntry type="library" name="Maven: javax.activation:javax.activation-api:1.2.0" level="project" />
<orderEntry type="library" name="Maven: org.jacoco:org.jacoco.agent:runtime:0.8.5" level="project" />
<orderEntry type="library" name="Maven: org.ini4j:ini4j:0.5.4" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.26" level="project" />
<orderEntry type="library" name="Maven: io.opentracing:opentracing-api:0.33.0" level="project" />
<orderEntry type="library" name="Maven: io.opentracing:opentracing-util:0.33.0" level="project" />
<orderEntry type="library" name="Maven: io.opentracing:opentracing-noop:0.33.0" level="project" />
<orderEntry type="library" name="Maven: com.alipay.sdk:alipay-sdk-java:4.11.33.ALL" level="project" />
<orderEntry type="library" name="Maven: org.bouncycastle:bcprov-jdk15on:1.62" level="project" />
<orderEntry type="library" name="Maven: com.squareup.okhttp3:okhttp:3.6.0" level="project" />
<orderEntry type="library" name="Maven: com.squareup.okio:okio:1.11.0" level="project" />
<orderEntry type="library" name="Maven: com.github.wechatpay-apiv3:wechatpay-apache-httpclient:0.2.1" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: org.apache.httpcomponents:httpmime:4.5.8" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.9.8" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.9.0" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.9.8" level="project" />
<orderEntry type="library" name="Maven: com.itextpdf:itextpdf:5.5.13" level="project" />
<orderEntry type="library" name="Maven: com.itextpdf:itext-asian:5.2.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.commons:commons-lang3:3.8.1" level="project" />
<orderEntry type="library" name="Maven: commons-lang:commons-lang:2.6" level="project" />
<orderEntry type="library" name="Maven: commons-pool:commons-pool:1.6" level="project" />
......@@ -178,7 +194,6 @@
<orderEntry type="library" name="Maven: stax:stax-api:1.0.1" level="project" />
<orderEntry type="library" name="Maven: cglib:cglib:3.1" level="project" />
<orderEntry type="library" name="Maven: org.ow2.asm:asm:4.2" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.26" level="project" />
<orderEntry type="library" name="Maven: org.ehcache:ehcache:3.6.3" level="project" />
</component>
</module>
\ No newline at end of file
......@@ -4,12 +4,12 @@ import cn.wisenergy.common.utils.R;
import cn.wisenergy.model.dto.PayPageDto;
import cn.wisenergy.model.dto.PayQueryDto;
import cn.wisenergy.service.app.AliPayService;
import cn.wisenergy.service.app.TestWxPayService;
import cn.wisenergy.service.app.WxPayService;
import cn.wisenergy.service.common.Common;
import com.alipay.api.AlipayApiException;
import com.alipay.api.AlipayClient;
import com.alipay.api.DefaultAlipayClient;
import com.alipay.api.request.AlipayTradePagePayRequest;
import com.alipay.api.request.AlipayTradeQueryRequest;
import com.alipay.api.response.AlipayTradeQueryResponse;
import io.swagger.annotations.Api;
......@@ -18,10 +18,7 @@ import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import javax.crypto.IllegalBlockSizeException;
import javax.servlet.http.HttpServletRequest;
......@@ -47,17 +44,23 @@ public class PayController {
@Autowired
private WxPayService wxPayService;
@Autowired
private TestWxPayService testWxPayService;
@Autowired
private AliPayService aliPayService;
@ApiOperation(value = "PC支付宝-支付接口", notes = "PC支付宝-支付接口", httpMethod = "POST")
@ApiImplicitParam(name = "payPageDto", value = "参数", dataType = "PayPageDto")
@PostMapping("/page")
public R<String> doPost(@RequestBody PayPageDto payPageDto, HttpServletRequest request, HttpServletResponse httpResponse) {
//public R<String> doPost(@RequestBody PayPageDto payPageDto, HttpServletRequest request, HttpServletResponse httpResponse) {
public R<String> doPost(Integer userId,Integer payType,Integer total_amount, HttpServletRequest request, HttpServletResponse httpResponse) {
PayPageDto payPageDto = new PayPageDto();
payPageDto.setTotal(total_amount);
payPageDto.setUserId(userId);
payPageDto.setPayType(payType);
return aliPayService.doPost(payPageDto,request,httpResponse);
}
@ApiOperation(value = "PC支付宝-交易查询", notes = "PC支付宝-交易查询", httpMethod = "POST")
......@@ -75,11 +78,21 @@ public class PayController {
return R.ok(response.getBody());
}
/**
* 支付宝回调函数
* 支付成功后服务器会调用此方法
*/
@ApiOperation(value = "支付回调", notes = "支付回调", httpMethod = "POST")
@RequestMapping(value = "/aliPayCallBack.do")
public R<String> aliPayCallBack(HttpServletResponse response, HttpServletRequest request) {
return aliPayService.aliPayCallBack(response,request);
}
@ApiOperation(value = "微行支付-统一下单", notes = "微行支付-统一下单", httpMethod = "POST")
@ApiOperation(value = "微行支付-统一下单测试", notes = "微行支付-统一下单", httpMethod = "POST")
@ApiImplicitParam(name = "payPageDto", value = "支付入参", dataType = "PayPageDto")
@PostMapping("/wxPay")
public R<String> wxPay(@RequestBody PayPageDto payPageDto) throws AlipayApiException, UnsupportedEncodingException, InvalidKeySpecException, NoSuchAlgorithmException, InvalidKeyException, SignatureException {
@PostMapping("/wxPayTest")
public R<String> wxPayTest(@RequestBody PayPageDto payPageDto) throws AlipayApiException, UnsupportedEncodingException, InvalidKeySpecException, NoSuchAlgorithmException, InvalidKeyException, SignatureException {
return wxPayService.wxPay(payPageDto);
}
......@@ -101,4 +114,23 @@ public class PayController {
public R<String> wx_Pay(@RequestBody PayPageDto payPageDto) throws AlipayApiException, IOException, InvalidKeySpecException, NoSuchAlgorithmException, InvalidKeyException, SignatureException, IllegalBlockSizeException {
return wxPayService.wx_Pay(payPageDto);
}
@ApiOperation(value = "微行支付-统一下单", notes = "微行支付-统一下单", httpMethod = "POST")
@ApiImplicitParam(name = "payPageDto", value = "支付入参", dataType = "PayPageDto")
@PostMapping("/wxPay")
public R<String> wxPay(@RequestBody PayPageDto payPageDto,HttpServletResponse response){
return testWxPayService.wxPay(payPageDto, response);
}
/**
* 微信回调函数
* 支付成功后微信服务器会调用此方法
*/
@ApiOperation(value = "微信回调函数", notes = "微信回调函数", httpMethod = "POST")
@RequestMapping(value = "/wxPayCallBack.do")
public R<String> wxPayCallBack(HttpServletRequest request, HttpServletResponse response) {
return testWxPayService.wxPayCallBack(request,response);
}
}
......@@ -4,6 +4,7 @@ spring:
druid:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://192.168.110.165:3306/volunteer?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&serverTimezone=GMT%2B8
#url: jdbc:mysql://localhost:3306/volunteer?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&serverTimezone=GMT%2B8
username: root
password: adm4HYservice$
initial-size: 10
......
......@@ -7,9 +7,9 @@ spring:
type: com.alibaba.druid.pool.DruidDataSource
druid:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/dydb?useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8
url: jdbc:mysql://localhost:3306/volunteer?useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8
username: root
password: root
password: adm4HYservice$
initial-size: 10
max-active: 100
min-idle: 10
......
......@@ -51,8 +51,6 @@
<orderEntry type="library" name="Maven: org.springframework:spring-expression:5.1.7.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-undertow:2.1.5.RELEASE" level="project" />
<orderEntry type="library" name="Maven: io.undertow:undertow-core:2.0.20.Final" level="project" />
<orderEntry type="library" name="Maven: org.jboss.xnio:xnio-api:3.3.8.Final" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: org.jboss.xnio:xnio-nio:3.3.8.Final" level="project" />
<orderEntry type="library" name="Maven: io.undertow:undertow-servlet:2.0.20.Final" level="project" />
<orderEntry type="library" name="Maven: org.jboss.spec.javax.annotation:jboss-annotations-api_1.2_spec:1.0.2.Final" level="project" />
<orderEntry type="library" name="Maven: io.undertow:undertow-websockets-jsr:2.0.20.Final" level="project" />
......@@ -118,10 +116,8 @@
<orderEntry type="library" name="Maven: io.netty:netty-resolver:4.1.36.Final" level="project" />
<orderEntry type="library" name="Maven: io.projectreactor:reactor-core:3.2.9.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.reactivestreams:reactive-streams:1.0.2" level="project" />
<orderEntry type="library" name="Maven: org.bouncycastle:bcprov-jdk15on:1.54" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-swagger2:2.9.2" level="project" />
<orderEntry type="library" name="Maven: io.swagger:swagger-models:1.5.20" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.9.0" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-spi:2.9.2" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-core:2.9.2" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-schema:2.9.2" level="project" />
......@@ -133,8 +129,6 @@
<orderEntry type="library" name="Maven: org.mapstruct:mapstruct:1.2.0.Final" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-swagger-ui:2.9.2" level="project" />
<orderEntry type="library" name="Maven: io.jsonwebtoken:jjwt:0.9.1" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.9.8" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.9.8" level="project" />
<orderEntry type="library" name="Maven: joda-time:joda-time:2.10.2" level="project" />
<orderEntry type="library" name="Maven: cn.hutool:hutool-all:4.6.7" level="project" />
<orderEntry type="library" name="Maven: io.swagger:swagger-annotations:1.5.23" level="project" />
......@@ -142,6 +136,27 @@
<orderEntry type="library" name="Maven: ch.qos.logback:logback-core:1.2.3" level="project" />
<orderEntry type="library" name="Maven: ch.qos.logback:logback-classic:1.2.3" level="project" />
<orderEntry type="library" name="Maven: org.jetbrains:annotations:20.1.0" level="project" />
<orderEntry type="library" name="Maven: com.aliyun:aliyun-java-sdk-core:4.5.3" level="project" />
<orderEntry type="library" name="Maven: com.google.code.gson:gson:2.8.5" level="project" />
<orderEntry type="library" name="Maven: commons-logging:commons-logging:1.2" level="project" />
<orderEntry type="library" name="Maven: javax.xml.bind:jaxb-api:2.3.1" level="project" />
<orderEntry type="library" name="Maven: javax.activation:javax.activation-api:1.2.0" level="project" />
<orderEntry type="library" name="Maven: org.jacoco:org.jacoco.agent:runtime:0.8.5" level="project" />
<orderEntry type="library" name="Maven: org.ini4j:ini4j:0.5.4" level="project" />
<orderEntry type="library" name="Maven: io.opentracing:opentracing-api:0.33.0" level="project" />
<orderEntry type="library" name="Maven: io.opentracing:opentracing-util:0.33.0" level="project" />
<orderEntry type="library" name="Maven: io.opentracing:opentracing-noop:0.33.0" level="project" />
<orderEntry type="library" name="Maven: com.alipay.sdk:alipay-sdk-java:4.11.33.ALL" level="project" />
<orderEntry type="library" name="Maven: org.bouncycastle:bcprov-jdk15on:1.62" level="project" />
<orderEntry type="library" name="Maven: com.squareup.okhttp3:okhttp:3.6.0" level="project" />
<orderEntry type="library" name="Maven: com.squareup.okio:okio:1.11.0" level="project" />
<orderEntry type="library" name="Maven: com.github.wechatpay-apiv3:wechatpay-apache-httpclient:0.2.1" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: org.apache.httpcomponents:httpmime:4.5.8" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.9.8" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.9.0" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.9.8" level="project" />
<orderEntry type="library" name="Maven: com.itextpdf:itextpdf:5.5.13" level="project" />
<orderEntry type="library" name="Maven: com.itextpdf:itext-asian:5.2.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-spring:1.4.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-core:1.4.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-lang:1.4.0" level="project" />
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment