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