| | |
| | | package com.yeshi.fanli.service.manger.alipay;
|
| | |
|
| | | import javax.annotation.Resource;
|
| | |
|
| | | import com.yeshi.fanli.entity.SystemEnum;
|
| | | import com.yeshi.fanli.service.inter.user.UserInfoService;
|
| | | import org.springframework.stereotype.Component;
|
| | | import org.springframework.transaction.annotation.Transactional;
|
| | |
|
| | | import com.alipay.api.response.AlipayTradeQueryResponse;
|
| | | import com.yeshi.fanli.dto.AlipayTradeWapPayDTO;
|
| | | import com.yeshi.fanli.entity.bus.user.cloud.CloudOrderMenuEnum;
|
| | | import com.yeshi.fanli.entity.bus.user.cloud.UserCloud;
|
| | | import com.yeshi.fanli.entity.bus.user.cloud.UserCloudOrder;
|
| | | import com.yeshi.fanli.entity.system.ConfigKeyEnum;
|
| | | import com.yeshi.fanli.exception.user.cloud.UserCloudException;
|
| | | import com.yeshi.fanli.log.LogHelper;
|
| | | import com.yeshi.fanli.service.inter.config.ConfigService;
|
| | | import com.yeshi.fanli.service.inter.user.cloud.UserCloudGroupService;
|
| | | import com.yeshi.fanli.service.inter.user.cloud.UserCloudManageService;
|
| | | import com.yeshi.fanli.service.inter.user.cloud.UserCloudOrderService;
|
| | | import com.yeshi.fanli.service.inter.user.cloud.UserCloudService;
|
| | | import com.yeshi.fanli.util.Constant;
|
| | | import com.yeshi.fanli.util.alipay.AlipayApi;
|
| | |
|
| | | /**
|
| | | * 云发单支付管理
|
| | | * @author Administrator
|
| | | *
|
| | | */
|
| | | @Component
|
| | | public class UserCloudAlipayManager {
|
| | |
|
| | | @Resource
|
| | | private ConfigService configService;
|
| | | |
| | | @Resource
|
| | | private UserCloudService userCloudService;
|
| | |
|
| | | @Resource
|
| | | private UserCloudOrderService userCloudOrderService;
|
| | | |
| | | @Resource
|
| | | private UserCloudGroupService userCloudGroupService;
|
| | | |
| | | @Resource
|
| | | private UserCloudManageService userCloudManageService;
|
| | |
|
| | | @Resource
|
| | | private UserInfoService userInfoService;
|
| | | |
| | | public static final String TRADE_INDEX = "yufadan-";
|
| | | |
| | | |
| | | |
| | | /**
|
| | | * 创建支付订单
|
| | | * @param uid
|
| | | * @param type
|
| | | * @return
|
| | | * @throws Exception
|
| | | * @throws UserCloudException
|
| | | */
|
| | | @Transactional(rollbackFor = Exception.class)
|
| | | public String getAlipayForm(Long uid, String type) throws Exception, UserCloudException{
|
| | | CloudOrderMenuEnum menuEnum = CloudOrderMenuEnum.getMenuEnum(type);
|
| | | if (menuEnum == null) |
| | | throw new UserCloudException(1, "套餐类型不匹配");
|
| | | |
| | | UserCloud userCloud = userCloudService.getLastByUid(uid);
|
| | | if (userCloud != null) {
|
| | | // 续费
|
| | | boolean renew = false;
|
| | | if (userCloud.getEndTime().getTime() > java.lang.System.currentTimeMillis())
|
| | | renew = true;
|
| | | // 验证套餐是否相同
|
| | | if (renew && userCloud.getRobotType() != menuEnum.getRobotType()) {
|
| | | LogHelper.cloudInfo("方法openCloud: [uid=" + uid + "]已有其他云发单套餐还未结束");
|
| | | throw new UserCloudException(1, "已有其他云发单套餐还未结束");
|
| | | }
|
| | | }
|
| | | |
| | | // 订单信息
|
| | | UserCloudOrder cloudOrder = userCloudOrderService.addCloudOrder(uid, type); |
| | | if (cloudOrder == null || cloudOrder.getId() == null)
|
| | | throw new UserCloudException(1, "创建订单信息失败");
|
| | |
|
| | | SystemEnum system=userInfoService.getUserSystem(uid);
|
| | | |
| | | AlipayTradeWapPayDTO payDTO = new AlipayTradeWapPayDTO();
|
| | | payDTO.setSubject("云发单充值");
|
| | | payDTO.setSellerId(Constant.alipayWapConfig.getSellerId());
|
| | | payDTO.setOutTradeNo(TRADE_INDEX + cloudOrder.getId());
|
| | | payDTO.setProductCode(type);
|
| | | payDTO.setTotalAmount(menuEnum.getMoney() + "");
|
| | | payDTO.setTimeoutExpress("30m");
|
| | | payDTO.setReturnUrl(configService.getValue(ConfigKeyEnum.cloudAlipayReturnLink.getKey(),system) +"?id=" +cloudOrder.getId());
|
| | | payDTO.setNotifyUrl(configService.getValue(ConfigKeyEnum.cloudAlipayNotifyLink.getKey(),system) +"?id=" +cloudOrder.getId());
|
| | | |
| | | // 获取支付form
|
| | | return AlipayApi.tradeWapPayRequest(payDTO);
|
| | | }
|
| | |
|
| | | |
| | | /**
|
| | | * 查询订单交易是否支付成功
|
| | | * @param orderId
|
| | | * @throws Exception
|
| | | */
|
| | | public void tradeQueryByOrderId(Long orderId) throws Exception {
|
| | | boolean result = false;
|
| | | AlipayTradeQueryResponse response = AlipayApi.tradeQuery(TRADE_INDEX + orderId, null, null, null);
|
| | | if(response != null && response.isSuccess()){
|
| | | // 相应成功
|
| | | if ("TRADE_SUCCESS".equals(response.getTradeStatus())) { |
| | | result = true;
|
| | | } else if ("TRADE_FINISHED".equals(response.getTradeStatus())) {
|
| | | result = true; // (交易结束,不可退款)
|
| | | } |
| | | } |
| | | |
| | | // 支付成功
|
| | | if (result) {
|
| | | userCloudOrderService.cloudPayCloudSuccess(orderId);
|
| | | }
|
| | | }
|
| | | |
| | | }
|
| | | package com.yeshi.fanli.service.manger.alipay; |
| | | |
| | | import javax.annotation.Resource; |
| | | |
| | | import com.yeshi.fanli.entity.SystemEnum; |
| | | import com.yeshi.fanli.service.inter.user.UserInfoService; |
| | | import org.springframework.stereotype.Component; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import com.alipay.api.response.AlipayTradeQueryResponse; |
| | | import com.yeshi.fanli.dto.AlipayTradeWapPayDTO; |
| | | import com.yeshi.fanli.entity.bus.user.cloud.CloudOrderMenuEnum; |
| | | import com.yeshi.fanli.entity.bus.user.cloud.UserCloud; |
| | | import com.yeshi.fanli.entity.bus.user.cloud.UserCloudOrder; |
| | | import com.yeshi.fanli.entity.system.ConfigKeyEnum; |
| | | import com.yeshi.fanli.exception.user.cloud.UserCloudException; |
| | | import com.yeshi.fanli.log.LogHelper; |
| | | import com.yeshi.fanli.service.inter.config.ConfigService; |
| | | import com.yeshi.fanli.service.inter.user.cloud.UserCloudGroupService; |
| | | import com.yeshi.fanli.service.inter.user.cloud.UserCloudManageService; |
| | | import com.yeshi.fanli.service.inter.user.cloud.UserCloudOrderService; |
| | | import com.yeshi.fanli.service.inter.user.cloud.UserCloudService; |
| | | import com.yeshi.fanli.util.Constant; |
| | | import com.yeshi.fanli.util.alipay.AlipayApi; |
| | | |
| | | /** |
| | | * 云发单支付管理 |
| | | * @author Administrator |
| | | * |
| | | */ |
| | | @Component |
| | | public class UserCloudAlipayManager { |
| | | |
| | | @Resource |
| | | private ConfigService configService; |
| | | |
| | | @Resource |
| | | private UserCloudService userCloudService; |
| | | |
| | | @Resource |
| | | private UserCloudOrderService userCloudOrderService; |
| | | |
| | | @Resource |
| | | private UserCloudGroupService userCloudGroupService; |
| | | |
| | | @Resource |
| | | private UserCloudManageService userCloudManageService; |
| | | |
| | | @Resource |
| | | private UserInfoService userInfoService; |
| | | |
| | | public static final String TRADE_INDEX = "yufadan-"; |
| | | |
| | | |
| | | |
| | | /** |
| | | * 创建支付订单 |
| | | * @param uid |
| | | * @param type |
| | | * @return |
| | | * @throws Exception |
| | | * @throws UserCloudException |
| | | */ |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public String getAlipayForm(Long uid, String type) throws Exception, UserCloudException{ |
| | | CloudOrderMenuEnum menuEnum = CloudOrderMenuEnum.getMenuEnum(type); |
| | | if (menuEnum == null) |
| | | throw new UserCloudException(1, "套餐类型不匹配"); |
| | | |
| | | UserCloud userCloud = userCloudService.getLastByUid(uid); |
| | | if (userCloud != null) { |
| | | // 续费 |
| | | boolean renew = false; |
| | | if (userCloud.getEndTime().getTime() > java.lang.System.currentTimeMillis()) |
| | | renew = true; |
| | | // 验证套餐是否相同 |
| | | if (renew && userCloud.getRobotType() != menuEnum.getRobotType()) { |
| | | LogHelper.cloudInfo("方法openCloud: [uid=" + uid + "]已有其他云发单套餐还未结束"); |
| | | throw new UserCloudException(1, "已有其他云发单套餐还未结束"); |
| | | } |
| | | } |
| | | |
| | | // 订单信息 |
| | | UserCloudOrder cloudOrder = userCloudOrderService.addCloudOrder(uid, type); |
| | | if (cloudOrder == null || cloudOrder.getId() == null) |
| | | throw new UserCloudException(1, "创建订单信息失败"); |
| | | |
| | | SystemEnum system=userInfoService.getUserSystem(uid); |
| | | |
| | | AlipayTradeWapPayDTO payDTO = new AlipayTradeWapPayDTO(); |
| | | payDTO.setSubject("云发单充值"); |
| | | payDTO.setSellerId(Constant.alipayWapConfig.getSellerId()); |
| | | payDTO.setOutTradeNo(TRADE_INDEX + cloudOrder.getId()); |
| | | payDTO.setProductCode(type); |
| | | payDTO.setTotalAmount(menuEnum.getMoney() + ""); |
| | | payDTO.setTimeoutExpress("30m"); |
| | | payDTO.setReturnUrl(configService.getValue(ConfigKeyEnum.cloudAlipayReturnLink.getKey(),system) +"?id=" +cloudOrder.getId()); |
| | | payDTO.setNotifyUrl(configService.getValue(ConfigKeyEnum.cloudAlipayNotifyLink.getKey(),system) +"?id=" +cloudOrder.getId()); |
| | | |
| | | // 获取支付form |
| | | return AlipayApi.tradeWapPayRequest(payDTO); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 查询订单交易是否支付成功 |
| | | * @param orderId |
| | | * @throws Exception |
| | | */ |
| | | public void tradeQueryByOrderId(Long orderId) throws Exception { |
| | | boolean result = false; |
| | | AlipayTradeQueryResponse response = AlipayApi.tradeQuery(TRADE_INDEX + orderId, null, null, null); |
| | | if(response != null && response.isSuccess()){ |
| | | // 相应成功 |
| | | if ("TRADE_SUCCESS".equals(response.getTradeStatus())) { |
| | | result = true; |
| | | } else if ("TRADE_FINISHED".equals(response.getTradeStatus())) { |
| | | result = true; // (交易结束,不可退款) |
| | | } |
| | | } |
| | | |
| | | // 支付成功 |
| | | if (result) { |
| | | userCloudOrderService.cloudPayCloudSuccess(orderId); |
| | | } |
| | | } |
| | | |
| | | } |