From b723d7f8769dd33816013eddfb888e8fcf1210da Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Fri, 17 Dec 2021 11:46:17 +0800
Subject: [PATCH] add alipay
---
src/main/java/cc/mrbird/febs/pay/properties/AliPayProperties.java | 26 +++
src/main/java/cc/mrbird/febs/pay/configure/AliPayConfigure.java | 42 +++++
src/main/java/cc/mrbird/febs/video/entity/VideoVipOrderInfoEntity.java | 64 ++++++++
src/main/java/cc/mrbird/febs/video/vo/VideoInfoVo.java | 3
src/main/java/cc/mrbird/febs/video/service/impl/VideoMasterInfoServiceImpl.java | 12
src/main/resources/application-prod.yml | 13 +
src/main/java/cc/mrbird/febs/pay/service/IPayService.java | 16 ++
src/main/resources/application-test.yml | 13 +
src/main/resources/mapper/video/VideoVipOrderInfoMapper.xml | 5
pom.xml | 7
src/main/java/cc/mrbird/febs/pay/model/AliPayPassbackModel.java | 15 +
src/main/java/cc/mrbird/febs/common/utils/MallUtils.java | 39 ++++
src/main/java/cc/mrbird/febs/common/utils/AppContants.java | 2
src/main/java/cc/mrbird/febs/video/mapper/DataDictionaryCustomMapper.java | 1
src/main/java/cc/mrbird/febs/pay/service/impl/PayServiceImpl.java | 121 +++++++++++++++
src/main/java/cc/mrbird/febs/video/dto/VipBuyDto.java | 17 ++
src/main/resources/application-dev.yml | 13 +
src/main/resources/mapper/modules/DataDictionaryCustomMapper.xml | 4
src/main/java/cc/mrbird/febs/pay/controller/PayCallBackController.java | 58 +++++++
src/main/java/cc/mrbird/febs/video/mapper/VideoVipOrderInfoMapper.java | 7
src/main/java/cc/mrbird/febs/common/configure/WebMvcConfigure.java | 1
21 files changed, 470 insertions(+), 9 deletions(-)
diff --git a/pom.xml b/pom.xml
index 6498c71..896a51a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -23,6 +23,7 @@
<tomcat.version>9.0.31</tomcat.version>
<hutool.version>5.3.1</hutool.version>
<mapstruct.version>1.3.1.Final</mapstruct.version>
+ <ijapy.version>2.7.8</ijapy.version>
</properties>
<dependencies>
@@ -228,6 +229,12 @@
<artifactId>xml-apis</artifactId>
<version>1.4.01</version>
</dependency>
+
+ <dependency>
+ <groupId>com.github.javen205</groupId>
+ <artifactId>IJPay-AliPay</artifactId>
+ <version>${ijapy.version}</version>
+ </dependency>
</dependencies>
<build>
diff --git a/src/main/java/cc/mrbird/febs/common/configure/WebMvcConfigure.java b/src/main/java/cc/mrbird/febs/common/configure/WebMvcConfigure.java
index f650c28..cac3318 100644
--- a/src/main/java/cc/mrbird/febs/common/configure/WebMvcConfigure.java
+++ b/src/main/java/cc/mrbird/febs/common/configure/WebMvcConfigure.java
@@ -17,6 +17,7 @@
registration.excludePathPatterns("/api/video/**");
registration.excludePathPatterns("/api/member/vipCostInfo");
registration.excludePathPatterns("/api/member/appVersion");
+ registration.excludePathPatterns("/api/pay/aliCallBack");
InterceptorRegistration registration1 = registry.addInterceptor(new VideoInterceptor());
registration1.addPathPatterns("/api/video/**");
diff --git a/src/main/java/cc/mrbird/febs/common/utils/AppContants.java b/src/main/java/cc/mrbird/febs/common/utils/AppContants.java
index 91dad5c..ba9fec8 100644
--- a/src/main/java/cc/mrbird/febs/common/utils/AppContants.java
+++ b/src/main/java/cc/mrbird/febs/common/utils/AppContants.java
@@ -69,4 +69,6 @@
public static final Integer FLAG_INT_Y = 1;
public static final Integer FLAG_INT_N = 2;
+ public static final String DIC_VIP_COST = "VIP_COST";
+
}
diff --git a/src/main/java/cc/mrbird/febs/common/utils/MallUtils.java b/src/main/java/cc/mrbird/febs/common/utils/MallUtils.java
new file mode 100644
index 0000000..2f28b00
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/common/utils/MallUtils.java
@@ -0,0 +1,39 @@
+package cc.mrbird.febs.common.utils;
+
+import cn.hutool.core.util.StrUtil;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.Random;
+
+/**
+ * @author wzy
+ * @date 2021-09-22
+ **/
+public class MallUtils {
+
+ public static String getRandomNum(int length) {
+ String str = "0123456789";
+ Random random = new Random();
+ StringBuilder sb = new StringBuilder();
+ for (int i = 0; i < length; ++i) {
+ int number = random.nextInt(str.length());
+ sb.append(str.charAt(number));
+ }
+
+ return sb.toString();
+ }
+
+ public static String getOrderNum(String prefix) {
+ SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");
+ String dd=df.format(new Date());
+ if (StrUtil.isNotBlank(prefix)) {
+ return prefix+dd+getRandomNum(5);
+ }
+ return dd+getRandomNum(5);
+ }
+
+ public static String getOrderNum() {
+ return getOrderNum(null);
+ }
+}
diff --git a/src/main/java/cc/mrbird/febs/pay/configure/AliPayConfigure.java b/src/main/java/cc/mrbird/febs/pay/configure/AliPayConfigure.java
new file mode 100644
index 0000000..b9c4826
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/pay/configure/AliPayConfigure.java
@@ -0,0 +1,42 @@
+package cc.mrbird.febs.pay.configure;
+
+import cc.mrbird.febs.pay.properties.AliPayProperties;
+import com.ijpay.alipay.AliPayApiConfig;
+import com.ijpay.alipay.AliPayApiConfigKit;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * @author wzy
+ * @date 2021-09-27
+ **/
+@Slf4j
+@Configuration
+public class AliPayConfigure {
+
+ @Autowired
+ private AliPayProperties aliPayProperties;
+
+ @Bean
+ public AliPayApiConfig aliPayConfig() {
+ AliPayApiConfig aliPayApiConfig;
+ try {
+ aliPayApiConfig = AliPayApiConfigKit.getApiConfig(aliPayProperties.getAppId());
+ } catch (Exception e) {
+ aliPayApiConfig = AliPayApiConfig.builder()
+ .setAppId(aliPayProperties.getAppId())
+ .setAliPayPublicKey(aliPayProperties.getPublicKey())
+ .setCharset("UTF-8")
+ .setPrivateKey(aliPayProperties.getPrivateKey())
+ .setServiceUrl(aliPayProperties.getDomain())
+ .setSignType("RSA2")
+ // 普通公钥方式
+ .build();
+
+ }
+ AliPayApiConfigKit.setThreadLocalAliPayApiConfig(aliPayApiConfig);
+ return aliPayApiConfig;
+ }
+}
diff --git a/src/main/java/cc/mrbird/febs/pay/controller/PayCallBackController.java b/src/main/java/cc/mrbird/febs/pay/controller/PayCallBackController.java
new file mode 100644
index 0000000..c907b36
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/pay/controller/PayCallBackController.java
@@ -0,0 +1,58 @@
+package cc.mrbird.febs.pay.controller;
+
+import cc.mrbird.febs.pay.properties.AliPayProperties;
+import cc.mrbird.febs.pay.service.IPayService;
+import com.alipay.api.AlipayApiException;
+import com.alipay.api.internal.util.AlipaySignature;
+import com.ijpay.alipay.AliPayApi;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import java.util.Map;
+
+/**
+ * @author wzy
+ * @date 2021-09-27
+ **/
+@Slf4j
+@RestController
+@RequestMapping(value = "/api/pay")
+public class PayCallBackController {
+
+ @Autowired
+ private IPayService payService;
+
+ @Resource
+ private AliPayProperties aliPayProperties;
+
+ @RequestMapping("/aliCallBack")
+ public String aliPayCallBack(HttpServletRequest request){
+ log.info("进入支付宝回调");
+ Map<String, String> params = AliPayApi.toMap(request);
+
+ boolean verifyResult = false;
+ try {
+ verifyResult = AlipaySignature.verifyV1(params, aliPayProperties.getPublicKey(), "UTF-8", "RSA2");
+ } catch (AlipayApiException e) {
+ log.info("=验证失败=:{}", params);
+ return "failure";
+ }
+
+ if (verifyResult) {
+ if ("TRADE_SUCCESS".equals(params.get("trade_status")) || "TRADE_FINISHED".equals(params.get("trade_status"))) {
+ payService.aliCallback(params);
+ return "success";
+ } else {
+ log.info("支付失败:{}", params);
+ return "failure";
+ }
+ } else {
+ log.info("验证失败:{}", params);
+ return "failure";
+ }
+ }
+}
diff --git a/src/main/java/cc/mrbird/febs/pay/model/AliPayPassbackModel.java b/src/main/java/cc/mrbird/febs/pay/model/AliPayPassbackModel.java
new file mode 100644
index 0000000..b15ef73
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/pay/model/AliPayPassbackModel.java
@@ -0,0 +1,15 @@
+package cc.mrbird.febs.pay.model;
+
+import lombok.Data;
+
+/**
+ * @author wzy
+ * @date 2021-09-27
+ **/
+@Data
+public class AliPayPassbackModel {
+
+ private Long orderId;
+
+ private Long memberId;
+}
diff --git a/src/main/java/cc/mrbird/febs/pay/properties/AliPayProperties.java b/src/main/java/cc/mrbird/febs/pay/properties/AliPayProperties.java
new file mode 100644
index 0000000..0a78846
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/pay/properties/AliPayProperties.java
@@ -0,0 +1,26 @@
+package cc.mrbird.febs.pay.properties;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * @author wzy
+ * @date 2021-09-27
+ **/
+
+@Data
+@Configuration
+@ConfigurationProperties(prefix = "pay.ali")
+public class AliPayProperties {
+
+ private String appId;
+
+ private String publicKey;
+
+ private String privateKey;
+
+ private String noticeUrl;
+
+ private String domain;
+}
diff --git a/src/main/java/cc/mrbird/febs/pay/service/IPayService.java b/src/main/java/cc/mrbird/febs/pay/service/IPayService.java
new file mode 100644
index 0000000..fa2eb47
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/pay/service/IPayService.java
@@ -0,0 +1,16 @@
+package cc.mrbird.febs.pay.service;
+
+import cc.mrbird.febs.video.dto.VipBuyDto;
+
+import java.util.Map;
+
+/**
+ * @author wzy
+ * @date 2021-09-27
+ **/
+public interface IPayService {
+
+ String aliPay(VipBuyDto vipBuyDto);
+
+ void aliCallback(Map<String, String> params);
+}
diff --git a/src/main/java/cc/mrbird/febs/pay/service/impl/PayServiceImpl.java b/src/main/java/cc/mrbird/febs/pay/service/impl/PayServiceImpl.java
new file mode 100644
index 0000000..b87a934
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/pay/service/impl/PayServiceImpl.java
@@ -0,0 +1,121 @@
+package cc.mrbird.febs.pay.service.impl;
+
+import cc.mrbird.febs.common.exception.FebsException;
+import cc.mrbird.febs.common.utils.AppContants;
+import cc.mrbird.febs.common.utils.LoginUserUtil;
+import cc.mrbird.febs.common.utils.MallUtils;
+import cc.mrbird.febs.pay.model.AliPayPassbackModel;
+import cc.mrbird.febs.pay.properties.AliPayProperties;
+import cc.mrbird.febs.pay.service.IPayService;
+import cc.mrbird.febs.video.dto.VipBuyDto;
+import cc.mrbird.febs.video.entity.DataDictionaryCustom;
+import cc.mrbird.febs.video.entity.VideoMemberEntity;
+import cc.mrbird.febs.video.entity.VideoVipOrderInfoEntity;
+import cc.mrbird.febs.video.mapper.DataDictionaryCustomMapper;
+import cc.mrbird.febs.video.mapper.VideoMemberMapper;
+import cc.mrbird.febs.video.mapper.VideoVipOrderInfoMapper;
+import com.alibaba.fastjson.JSONObject;
+import com.alipay.api.AlipayApiException;
+import com.alipay.api.domain.AlipayTradeAppPayModel;
+import com.alipay.api.response.AlipayTradeAppPayResponse;
+import com.ijpay.alipay.AliPayApi;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.Map;
+
+/**
+ * @author wzy
+ * @date 2021-09-27
+ **/
+@Slf4j
+@Service
+public class PayServiceImpl implements IPayService {
+
+ @Resource
+ private AliPayProperties aliPayProperties;
+ @Resource
+ private DataDictionaryCustomMapper dataDictionaryCustomMapper;
+
+ @Resource
+ private VideoVipOrderInfoMapper videoVipOrderInfoMapper;
+
+ @Resource
+ private VideoMemberMapper videoMemberMapper;
+
+ @Value("${spring.profiles.active}")
+ private String active;
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public String aliPay(VipBuyDto vipBuyDto) {
+ VideoMemberEntity loginUser = LoginUserUtil.getLoginUser();
+
+ DataDictionaryCustom data = dataDictionaryCustomMapper.selectDataByTypeAndCode(AppContants.DIC_VIP_COST, vipBuyDto.getType());
+ if (data == null) {
+ throw new FebsException("参数错误");
+ }
+
+ VideoVipOrderInfoEntity vipOrderInfo = new VideoVipOrderInfoEntity();
+ vipOrderInfo.setOrderNo(MallUtils.getOrderNum());
+ vipOrderInfo.setPayType(VideoVipOrderInfoEntity.PAY_TYPE_ALIPAY);
+ vipOrderInfo.setStatus(VideoVipOrderInfoEntity.PAY_STATUS_WAIT);
+ vipOrderInfo.setMemberId(loginUser.getId());
+ vipOrderInfo.setGoodsType(vipBuyDto.getType());
+ vipOrderInfo.setAmount(new BigDecimal(data.getValue()));
+ videoVipOrderInfoMapper.insert(vipOrderInfo);
+
+ AlipayTradeAppPayModel model = new AlipayTradeAppPayModel();
+ model.setSubject("会员支付");
+ model.setBody(data.getDescription());
+ model.setOutTradeNo(vipOrderInfo.getOrderNo());
+ model.setTimeoutExpress("15m");
+
+ if ("dev".equals(active) || "test".equals(active)) {
+ model.setTotalAmount("0.01");
+ } else {
+ model.setTotalAmount(vipOrderInfo.getAmount().toString());
+ }
+
+ AliPayPassbackModel passbackModel = new AliPayPassbackModel();
+ passbackModel.setOrderId(vipOrderInfo.getId());
+ passbackModel.setMemberId(vipOrderInfo.getMemberId());
+ model.setPassbackParams(JSONObject.toJSONString(passbackModel));
+
+ model.setProductCode("QUICK_MSECURITY_PAY");
+ AlipayTradeAppPayResponse resp = null;
+ try {
+ resp = AliPayApi.appPayToResponse(model, aliPayProperties.getNoticeUrl());
+ } catch (AlipayApiException e) {
+ log.error("支付宝支付异常", e);
+ throw new FebsException("支付宝支付异常");
+ }
+ return resp.getBody();
+ }
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public void aliCallback(Map<String, String> params) {
+ String modelStr = params.get("passback_params");
+
+ AliPayPassbackModel passback = JSONObject.parseObject(modelStr, AliPayPassbackModel.class);
+
+ VideoVipOrderInfoEntity orderInfo = videoVipOrderInfoMapper.selectById(passback.getOrderId());
+ if (orderInfo.getPayType() != 1) {
+ return;
+ }
+
+ VideoMemberEntity member = videoMemberMapper.selectById(orderInfo.getMemberId());
+
+ orderInfo.setStatus(VideoVipOrderInfoEntity.PAY_STATUS_PAY);
+ orderInfo.setPayTime(new Date());
+ orderInfo.setPayTraderNo(params.get("trade_no"));
+ videoVipOrderInfoMapper.updateById(orderInfo);
+ }
+}
diff --git a/src/main/java/cc/mrbird/febs/video/dto/VipBuyDto.java b/src/main/java/cc/mrbird/febs/video/dto/VipBuyDto.java
new file mode 100644
index 0000000..5f5dd3b
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/video/dto/VipBuyDto.java
@@ -0,0 +1,17 @@
+package cc.mrbird.febs.video.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @author wzy
+ * @date 2021-12-17
+ **/
+@Data
+@ApiModel(value = "VipBuyDto", description = "会员购买")
+public class VipBuyDto {
+
+ @ApiModelProperty(value = "购买会员类型 MONTH/PERIOD/YEAR", example = "YEAR")
+ private String type;
+}
diff --git a/src/main/java/cc/mrbird/febs/video/entity/VideoVipOrderInfoEntity.java b/src/main/java/cc/mrbird/febs/video/entity/VideoVipOrderInfoEntity.java
new file mode 100644
index 0000000..70806c7
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/video/entity/VideoVipOrderInfoEntity.java
@@ -0,0 +1,64 @@
+package cc.mrbird.febs.video.entity;
+
+import cc.mrbird.febs.common.entity.BaseEntity;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * @author wzy
+ * @date 2021-12-17
+ **/
+@Data
+@TableName("video_vip_order_info")
+public class VideoVipOrderInfoEntity extends BaseEntity {
+
+ public static final Integer PAY_TYPE_ALIPAY = 1;
+ public static final Integer PAY_TYPE_USDT = 2;
+
+ public static final Integer PAY_STATUS_WAIT = 1;
+ public static final Integer PAY_STATUS_PAY = 2;
+ public static final Integer PAY_STATUS_CANCEL = 2;
+
+ /**
+ * 订单编号
+ */
+ private String orderNo;
+
+ /**
+ * 支付交易编号
+ */
+ private String payTraderNo;
+
+ /**
+ * 类型;1/支付宝 2/USDT
+ */
+ private Integer payType;
+
+ /**
+ * 用户ID
+ */
+ private Long memberId;
+
+ /**
+ * 金额
+ */
+ private BigDecimal amount;
+
+ /**
+ * 商品类型;MONTH/PERIOD/YEAR
+ */
+ private String goodsType;
+
+ /**
+ * 状态;1/代支付 2/已支付 3/已取消
+ */
+ private Integer status;
+
+ /**
+ * 支付时间
+ */
+ private Date payTime;
+}
diff --git a/src/main/java/cc/mrbird/febs/video/mapper/DataDictionaryCustomMapper.java b/src/main/java/cc/mrbird/febs/video/mapper/DataDictionaryCustomMapper.java
index 0f3280e..a432d69 100644
--- a/src/main/java/cc/mrbird/febs/video/mapper/DataDictionaryCustomMapper.java
+++ b/src/main/java/cc/mrbird/febs/video/mapper/DataDictionaryCustomMapper.java
@@ -11,4 +11,5 @@
List<ApiVipCostVo> selectApiVipCostByType(@Param("type") String type);
+ DataDictionaryCustom selectDataByTypeAndCode(@Param("type") String type, @Param("code") String code);
}
diff --git a/src/main/java/cc/mrbird/febs/video/mapper/VideoVipOrderInfoMapper.java b/src/main/java/cc/mrbird/febs/video/mapper/VideoVipOrderInfoMapper.java
new file mode 100644
index 0000000..8896899
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/video/mapper/VideoVipOrderInfoMapper.java
@@ -0,0 +1,7 @@
+package cc.mrbird.febs.video.mapper;
+
+import cc.mrbird.febs.video.entity.VideoVipOrderInfoEntity;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+public interface VideoVipOrderInfoMapper extends BaseMapper<VideoVipOrderInfoEntity> {
+}
diff --git a/src/main/java/cc/mrbird/febs/video/service/impl/VideoMasterInfoServiceImpl.java b/src/main/java/cc/mrbird/febs/video/service/impl/VideoMasterInfoServiceImpl.java
index bf845cd..ae25c29 100644
--- a/src/main/java/cc/mrbird/febs/video/service/impl/VideoMasterInfoServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/video/service/impl/VideoMasterInfoServiceImpl.java
@@ -169,13 +169,13 @@
videoInfoVo.setCollectCnt(data.getCollectCnt());
videoInfoVo.setStarCnt(data.getStarCnt());
- VideoMemberEntity loginUser = LoginUserUtil.getLoginUser();
- if (loginUser == null) {
- videoInfoVo.setNotLogin(AppContants.FLAG_INT_N);
- return videoInfoVo;
- }
-
if (AppContants.FLAG_INT_N.equals(videoInfoEntity.getIsFree())) {
+ VideoMemberEntity loginUser = LoginUserUtil.getLoginUser();
+ if (loginUser == null) {
+ videoInfoVo.setNotLogin(AppContants.FLAG_INT_N);
+ return videoInfoVo;
+ }
+
VideoMemberEntity member = this.videoMemberMapper.selectById(loginUser.getId());
if (AppContants.FLAG_INT_N.equals(member.getIsVip())) {
videoInfoVo.setNotVip(AppContants.FLAG_INT_N);
diff --git a/src/main/java/cc/mrbird/febs/video/vo/VideoInfoVo.java b/src/main/java/cc/mrbird/febs/video/vo/VideoInfoVo.java
index abc1f92..baf9087 100644
--- a/src/main/java/cc/mrbird/febs/video/vo/VideoInfoVo.java
+++ b/src/main/java/cc/mrbird/febs/video/vo/VideoInfoVo.java
@@ -32,6 +32,9 @@
@ApiModelProperty(value = "当前播放视频时长")
private String timeLength;
+ @ApiModelProperty(value = "是否免费 1/免费 2/会员")
+ private Integer isFree;
+
@ApiModelProperty(value = "当前播放itemid")
private Long itemId;
diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml
index 879b66b..b312062 100644
--- a/src/main/resources/application-dev.yml
+++ b/src/main/resources/application-dev.yml
@@ -51,4 +51,15 @@
system:
images:
path: /home/javaweb/webresource/video/
- url: http://120.27.238.55:8000/video/
\ No newline at end of file
+ url: http://120.27.238.55:8000/video/
+
+pay:
+ ali:
+ appId: 2016120704000539
+ # 支付宝公钥
+ publicKey: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAobfti31eIy4U59JUrL+eMosuY97jk444eFyMeoxkG1ljJ3GytPV7YlLL6TVgvON6eR0eFvWKK4MoTEW0TkpxgmuurkpTSXDB0bNiuYJQyiju4Bikt83dQo64YKYDSwBNA9hFPHFM1mhWpJM/3mYjbbLT9AoL8q+n1fBxFtcAMmxXBqZiECT8qzuTV3VfTufXsNhY9LJXcDkAr98GZDEbH+Zhr5die2Rzpvj9o8aSs6J0IU+PJpU+SPZEjpITAPtLauKEV2MFGUaxnli1PgJexW8OW9smCDZPhIce6vYYwn0wQKtnFla0zWPe2r85egggE0y9SJs5zQX5F3OlJzLS/wIDAQAB
+ # 支付宝私钥
+ privateKey: MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCht+2LfV4jLhTn0lSsv54yiy5j3uOTjjh4XIx6jGQbWWMncbK09XtiUsvpNWC843p5HR4W9YorgyhMRbROSnGCa66uSlNJcMHRs2K5glDKKO7gGKS3zd1CjrhgpgNLAE0D2EU8cUzWaFakkz/eZiNtstP0Cgvyr6fV8HEW1wAybFcGpmIQJPyrO5NXdV9O59ew2Fj0sldwOQCv3wZkMRsf5mGvl2J7ZHOm+P2jxpKzonQhT48mlT5I9kSOkhMA+0tq4oRXYwUZRrGeWLU+Al7Fbw5b2yYINk+Ehx7q9hjCfTBAq2cWVrTNY97avzl6CCATTL1ImznNBfkXc6UnMtL/AgMBAAECggEAXLwJBr0sV0YcjNcK4Ui8YcV4I6Lzo3ChpzuC/t80pI48kqjbTnOafkZ2UdPfFlHnsD3nPEkvI0aBvEMYYvDDaINxVtaeLfXv3t1cFn7I7zRLzsuy4Qe3AmyvBBUOvFp+z16cTU23Pxfz30nlDRZK6KPscPu14EOkHcVUREGkBkU6Gqft38Vd21ClRmh76oWsYCGzJkx547blVMAWJw+fGgHerrdwaSOlvD8Tj20dnCU7ifvUNQiWsdn6wOdUz24o4oB8kSBmZbOYCviljvqeHo2SZlIuneiXwz9TanOvlIaGkVeHnJvNd3S6FRXTmcTZQpW9RtDBZF0o1Oh+W44Q6QKBgQDbVwsD3GdFFlYWUMvtTGUcHqtzrvWDln6Lh0vtEmQIA28aDBre2URRYm+AhqfsjiAz1WwVVVeBjbSk7ZJv0kWWvJiA8/2XyZhHdDidWvhndQJD5HLK9IqPNDd6WA9cW/SQs2ehtqUVM55IzsYZK2Tbnb9UYuIHTHiMExL/jOGq0wKBgQC8v2rPC02+qVJyx82Gq6CD57EuirKTA1ZUFQIBRbfccqMoYaJogREUjlUNN5mZAuQ6yLqOHi79v6G/7NegP4WavIRJ/W9jqjLXP1AJ/jeo9IGu96HCsV2+M/5DRD/zrZakQMJPZYrgZOqjtL1qLcKdpuXumT0VAyy41yoU0jvDpQKBgQCvyABR5c71dUMkuzfTQ0g80u+A1JR6Ep/z3kghBH4aVfYyH8VhFypDNuo5TLFDSVvRbpciObTZZOGC08ppx1Bxz09A+Ukg3jUl/qRop0EwWHuqQWkl8fkhby2O5Qfacu97D+xbk26VoTqXCu+DuF0qDDALxvtx8f0h9R9iolswdQKBgE5+sLWwNsHe+vnfHBswjw2sMmRvq/o1vhYzsmTDEMauKipmCDu7yVWqJ7bac5dNu4qy5dqqtNI0etktbzMml7KVSdLXghaJtqELpIazYYRzQud39p7YUmsChnCFFq+JdoeSovyP9ySA84/nX4qjwzb7LM6AjgWKD3RDjy2fjNk9AoGBANEJdXJhwon+cMfPT9XfCVee0Cr//91WzfGYnVpevRuYp/q29rcZ0mZiXPfvge0vogZEFHIzsQfjtW84W4H81aSbFj9lncIzRl4O8yFGsr1Y9wkewmQqylM+A/I4eu9UcpK/hJX5G07EnCuZCabj12CGnA3uA9Icgg28jbg2BCR6
+ # 回调地址
+ noticeUrl: http://120.27.238.55:8801/api/pay/aliCallBack
+ domain: https://openapi.alipay.com/gateway.do
\ No newline at end of file
diff --git a/src/main/resources/application-prod.yml b/src/main/resources/application-prod.yml
index 04d0df9..fbd6ee6 100644
--- a/src/main/resources/application-prod.yml
+++ b/src/main/resources/application-prod.yml
@@ -46,4 +46,15 @@
# 连接池最大阻塞等待时间(使用负值表示没有限制)
max-wait: 10000
# 连接超时时间(毫秒)
- timeout: 5000
\ No newline at end of file
+ timeout: 5000
+
+pay:
+ ali:
+ appId: 2016120704000539
+ # 支付宝公钥
+ publicKey: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAobfti31eIy4U59JUrL+eMosuY97jk444eFyMeoxkG1ljJ3GytPV7YlLL6TVgvON6eR0eFvWKK4MoTEW0TkpxgmuurkpTSXDB0bNiuYJQyiju4Bikt83dQo64YKYDSwBNA9hFPHFM1mhWpJM/3mYjbbLT9AoL8q+n1fBxFtcAMmxXBqZiECT8qzuTV3VfTufXsNhY9LJXcDkAr98GZDEbH+Zhr5die2Rzpvj9o8aSs6J0IU+PJpU+SPZEjpITAPtLauKEV2MFGUaxnli1PgJexW8OW9smCDZPhIce6vYYwn0wQKtnFla0zWPe2r85egggE0y9SJs5zQX5F3OlJzLS/wIDAQAB
+ # 支付宝私钥
+ privateKey: MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCht+2LfV4jLhTn0lSsv54yiy5j3uOTjjh4XIx6jGQbWWMncbK09XtiUsvpNWC843p5HR4W9YorgyhMRbROSnGCa66uSlNJcMHRs2K5glDKKO7gGKS3zd1CjrhgpgNLAE0D2EU8cUzWaFakkz/eZiNtstP0Cgvyr6fV8HEW1wAybFcGpmIQJPyrO5NXdV9O59ew2Fj0sldwOQCv3wZkMRsf5mGvl2J7ZHOm+P2jxpKzonQhT48mlT5I9kSOkhMA+0tq4oRXYwUZRrGeWLU+Al7Fbw5b2yYINk+Ehx7q9hjCfTBAq2cWVrTNY97avzl6CCATTL1ImznNBfkXc6UnMtL/AgMBAAECggEAXLwJBr0sV0YcjNcK4Ui8YcV4I6Lzo3ChpzuC/t80pI48kqjbTnOafkZ2UdPfFlHnsD3nPEkvI0aBvEMYYvDDaINxVtaeLfXv3t1cFn7I7zRLzsuy4Qe3AmyvBBUOvFp+z16cTU23Pxfz30nlDRZK6KPscPu14EOkHcVUREGkBkU6Gqft38Vd21ClRmh76oWsYCGzJkx547blVMAWJw+fGgHerrdwaSOlvD8Tj20dnCU7ifvUNQiWsdn6wOdUz24o4oB8kSBmZbOYCviljvqeHo2SZlIuneiXwz9TanOvlIaGkVeHnJvNd3S6FRXTmcTZQpW9RtDBZF0o1Oh+W44Q6QKBgQDbVwsD3GdFFlYWUMvtTGUcHqtzrvWDln6Lh0vtEmQIA28aDBre2URRYm+AhqfsjiAz1WwVVVeBjbSk7ZJv0kWWvJiA8/2XyZhHdDidWvhndQJD5HLK9IqPNDd6WA9cW/SQs2ehtqUVM55IzsYZK2Tbnb9UYuIHTHiMExL/jOGq0wKBgQC8v2rPC02+qVJyx82Gq6CD57EuirKTA1ZUFQIBRbfccqMoYaJogREUjlUNN5mZAuQ6yLqOHi79v6G/7NegP4WavIRJ/W9jqjLXP1AJ/jeo9IGu96HCsV2+M/5DRD/zrZakQMJPZYrgZOqjtL1qLcKdpuXumT0VAyy41yoU0jvDpQKBgQCvyABR5c71dUMkuzfTQ0g80u+A1JR6Ep/z3kghBH4aVfYyH8VhFypDNuo5TLFDSVvRbpciObTZZOGC08ppx1Bxz09A+Ukg3jUl/qRop0EwWHuqQWkl8fkhby2O5Qfacu97D+xbk26VoTqXCu+DuF0qDDALxvtx8f0h9R9iolswdQKBgE5+sLWwNsHe+vnfHBswjw2sMmRvq/o1vhYzsmTDEMauKipmCDu7yVWqJ7bac5dNu4qy5dqqtNI0etktbzMml7KVSdLXghaJtqELpIazYYRzQud39p7YUmsChnCFFq+JdoeSovyP9ySA84/nX4qjwzb7LM6AjgWKD3RDjy2fjNk9AoGBANEJdXJhwon+cMfPT9XfCVee0Cr//91WzfGYnVpevRuYp/q29rcZ0mZiXPfvge0vogZEFHIzsQfjtW84W4H81aSbFj9lncIzRl4O8yFGsr1Y9wkewmQqylM+A/I4eu9UcpK/hJX5G07EnCuZCabj12CGnA3uA9Icgg28jbg2BCR6
+ # 回调地址
+ noticeUrl: http://120.27.238.55:8801/api/pay/aliCallBack
+ domain: https://openapi.alipay.com/gateway.do
\ No newline at end of file
diff --git a/src/main/resources/application-test.yml b/src/main/resources/application-test.yml
index 56b6daa..5bd8702 100644
--- a/src/main/resources/application-test.yml
+++ b/src/main/resources/application-test.yml
@@ -51,4 +51,15 @@
system:
images:
path: /home/javaweb/webresource/video/
- url: http://120.27.238.55:8000/video/
\ No newline at end of file
+ url: http://120.27.238.55:8000/video/
+
+pay:
+ ali:
+ appId: 2016120704000539
+ # 支付宝公钥
+ publicKey: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAobfti31eIy4U59JUrL+eMosuY97jk444eFyMeoxkG1ljJ3GytPV7YlLL6TVgvON6eR0eFvWKK4MoTEW0TkpxgmuurkpTSXDB0bNiuYJQyiju4Bikt83dQo64YKYDSwBNA9hFPHFM1mhWpJM/3mYjbbLT9AoL8q+n1fBxFtcAMmxXBqZiECT8qzuTV3VfTufXsNhY9LJXcDkAr98GZDEbH+Zhr5die2Rzpvj9o8aSs6J0IU+PJpU+SPZEjpITAPtLauKEV2MFGUaxnli1PgJexW8OW9smCDZPhIce6vYYwn0wQKtnFla0zWPe2r85egggE0y9SJs5zQX5F3OlJzLS/wIDAQAB
+ # 支付宝私钥
+ privateKey: MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCht+2LfV4jLhTn0lSsv54yiy5j3uOTjjh4XIx6jGQbWWMncbK09XtiUsvpNWC843p5HR4W9YorgyhMRbROSnGCa66uSlNJcMHRs2K5glDKKO7gGKS3zd1CjrhgpgNLAE0D2EU8cUzWaFakkz/eZiNtstP0Cgvyr6fV8HEW1wAybFcGpmIQJPyrO5NXdV9O59ew2Fj0sldwOQCv3wZkMRsf5mGvl2J7ZHOm+P2jxpKzonQhT48mlT5I9kSOkhMA+0tq4oRXYwUZRrGeWLU+Al7Fbw5b2yYINk+Ehx7q9hjCfTBAq2cWVrTNY97avzl6CCATTL1ImznNBfkXc6UnMtL/AgMBAAECggEAXLwJBr0sV0YcjNcK4Ui8YcV4I6Lzo3ChpzuC/t80pI48kqjbTnOafkZ2UdPfFlHnsD3nPEkvI0aBvEMYYvDDaINxVtaeLfXv3t1cFn7I7zRLzsuy4Qe3AmyvBBUOvFp+z16cTU23Pxfz30nlDRZK6KPscPu14EOkHcVUREGkBkU6Gqft38Vd21ClRmh76oWsYCGzJkx547blVMAWJw+fGgHerrdwaSOlvD8Tj20dnCU7ifvUNQiWsdn6wOdUz24o4oB8kSBmZbOYCviljvqeHo2SZlIuneiXwz9TanOvlIaGkVeHnJvNd3S6FRXTmcTZQpW9RtDBZF0o1Oh+W44Q6QKBgQDbVwsD3GdFFlYWUMvtTGUcHqtzrvWDln6Lh0vtEmQIA28aDBre2URRYm+AhqfsjiAz1WwVVVeBjbSk7ZJv0kWWvJiA8/2XyZhHdDidWvhndQJD5HLK9IqPNDd6WA9cW/SQs2ehtqUVM55IzsYZK2Tbnb9UYuIHTHiMExL/jOGq0wKBgQC8v2rPC02+qVJyx82Gq6CD57EuirKTA1ZUFQIBRbfccqMoYaJogREUjlUNN5mZAuQ6yLqOHi79v6G/7NegP4WavIRJ/W9jqjLXP1AJ/jeo9IGu96HCsV2+M/5DRD/zrZakQMJPZYrgZOqjtL1qLcKdpuXumT0VAyy41yoU0jvDpQKBgQCvyABR5c71dUMkuzfTQ0g80u+A1JR6Ep/z3kghBH4aVfYyH8VhFypDNuo5TLFDSVvRbpciObTZZOGC08ppx1Bxz09A+Ukg3jUl/qRop0EwWHuqQWkl8fkhby2O5Qfacu97D+xbk26VoTqXCu+DuF0qDDALxvtx8f0h9R9iolswdQKBgE5+sLWwNsHe+vnfHBswjw2sMmRvq/o1vhYzsmTDEMauKipmCDu7yVWqJ7bac5dNu4qy5dqqtNI0etktbzMml7KVSdLXghaJtqELpIazYYRzQud39p7YUmsChnCFFq+JdoeSovyP9ySA84/nX4qjwzb7LM6AjgWKD3RDjy2fjNk9AoGBANEJdXJhwon+cMfPT9XfCVee0Cr//91WzfGYnVpevRuYp/q29rcZ0mZiXPfvge0vogZEFHIzsQfjtW84W4H81aSbFj9lncIzRl4O8yFGsr1Y9wkewmQqylM+A/I4eu9UcpK/hJX5G07EnCuZCabj12CGnA3uA9Icgg28jbg2BCR6
+ # 回调地址
+ noticeUrl: http://120.27.238.55:8801/api/pay/aliCallBack
+ domain: https://openapi.alipay.com/gateway.do
\ No newline at end of file
diff --git a/src/main/resources/mapper/modules/DataDictionaryCustomMapper.xml b/src/main/resources/mapper/modules/DataDictionaryCustomMapper.xml
index dfc1568..8a5a123 100644
--- a/src/main/resources/mapper/modules/DataDictionaryCustomMapper.xml
+++ b/src/main/resources/mapper/modules/DataDictionaryCustomMapper.xml
@@ -11,4 +11,8 @@
where a.type = #{type}
</select>
+ <select id="selectDataByTypeAndCode" resultType="cc.mrbird.febs.video.entity.DataDictionaryCustom">
+ select * from data_dictionary_custom
+ where type=#{type} and code=#{code}
+ </select>
</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/video/VideoVipOrderInfoMapper.xml b/src/main/resources/mapper/video/VideoVipOrderInfoMapper.xml
new file mode 100644
index 0000000..1f17403
--- /dev/null
+++ b/src/main/resources/mapper/video/VideoVipOrderInfoMapper.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="cc.mrbird.febs.video.mapper.VideoVipOrderInfoMapper">
+
+</mapper>
\ No newline at end of file
--
Gitblit v1.9.1