支付宝接口

//支付宝配置配置在application.yaml下
配置

//支付宝控制层

@Controller
@RequestMapping(“/ali/pay”)
@Api(tags = “阿里支付模块”, value=“支付宝”)
public class AliPayController {

@Autowired
private AliPayService aliPayService;


@RequestMapping(value ="/token/create/App",method = RequestMethod.POST)
@ApiOperation(value="统一下单",notes = "统一下单")
@ResponseBody
@ApiImplicitParams({
        @ApiImplicitParam(name="parameters",value="参数",dataType ="Integer" ,required=true,paramType = "query")})
public Message createNative(@RequestParam Map<String,String> parameters) {
    return aliPayService.createApp(parameters);
}

@ResponseBody
@RequestMapping(value = "/token/status/query",method = RequestMethod.GET)
@ApiOperation(value="查询订单",notes = "查询订单")
@ApiImplicitParams({
        @ApiImplicitParam(name="out_trade_no",value="参数订单号",dataType ="Integer" ,required=true,paramType = "query")})
public Message queryStatus(@RequestParam(value = "out_trade_no", required = true)String out_trade_no) {
    return  aliPayService.queryStatus(out_trade_no);
}

/**
 * 支付宝支付回调
 * @param request
 * @return
 * @throws Exception
 */

@RequestMapping(value = "/notify/url")
public String notifyResult(HttpServletRequest request) throws Exception {
    return  aliPayService.notifyResult(request);
}

/**
 * 支付宝同步回调
 * @param request
 * @return
 * @throws Exception
 */
@RequestMapping(value = "/return/url")
public String returnResult(HttpServletRequest request, Model model) throws Exception {
    return  aliPayService.returnResult(request,model);
}

}

//支付宝业务层代码
package com.miaoyin.miaoyinapi.service.aliPay;
import com.alibaba.fastjson.JSONObject;
import com.alipay.api.AlipayClient;
import com.alipay.api.DefaultAlipayClient;
import com.alipay.api.internal.util.AlipaySignature;
import com.alipay.api.request.AlipayTradeAppPayRequest;
import com.alipay.api.request.AlipayTradeQueryRequest;
import com.alipay.api.request.AlipayTradeWapPayRequest;
import com.alipay.api.response.AlipayTradeAppPayResponse;
import com.alipay.api.response.AlipayTradeQueryResponse;
import com.alipay.api.response.AlipayTradeWapPayResponse;
import com.miaoyin.miaoyinapi.common.Constants;
import com.miaoyin.miaoyinapi.common.ErrorCodeEnum;
import com.miaoyin.miaoyinapi.dto.Message;
import com.miaoyin.miaoyinapi.dto.classPicture.ThirdClassDto;
import com.miaoyin.miaoyinapi.dto.course.CourseDto;
import com.miaoyin.miaoyinapi.dto.course.CourseTryLearnDto;
import com.miaoyin.miaoyinapi.dto.course.TbH5Number;
import com.miaoyin.miaoyinapi.dto.currency.CurrencyExchangeDto;
import com.miaoyin.miaoyinapi.dto.curriculum.CurriculumDto;
import com.miaoyin.miaoyinapi.dto.direct.DirectCourseDto;
import com.miaoyin.miaoyinapi.dto.index.UserPurchaseRecordDto;
import com.miaoyin.miaoyinapi.dto.order.OrderDto;
import com.miaoyin.miaoyinapi.dto.user.UserDto;
import com.miaoyin.miaoyinapi.dto.user.UserInviteDto;
import com.miaoyin.miaoyinapi.dto.user.UserTaskRecordDto;
import com.miaoyin.miaoyinapi.dto.user.UserVipPayDto;
import com.miaoyin.miaoyinapi.mapper.;
import com.miaoyin.miaoyinapi.service.TbH5NumberService;
import com.miaoyin.miaoyinapi.service.currency.CurrencyExchangeService;
import com.miaoyin.miaoyinapi.service.currency.PearlService;
import com.miaoyin.miaoyinapi.service.curriculum.CurriculumService;
import com.miaoyin.miaoyinapi.service.order.OrderService;
import com.miaoyin.miaoyinapi.service.userInvite.UserInviteService;
import com.miaoyin.miaoyinapi.util.
;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.ui.Model;
import org.springframework.util.ObjectUtils;

import javax.servlet.http.HttpServletRequest;
import java.io.UnsupportedEncodingException;
import java.math.BigDecimal;
import java.util.*;

import static org.apache.commons.lang.StringUtils.isNotEmpty;

@Service
@Transactional
public class AliPayService {

@Value("${zhifubao.appid}")
private String appid;
@Value("${zhifubao.publicKey}")
private String publicKey;
@Value("${zhifubao.privateKey}")
private String privateKey;
@Value("${zhifubao.notifyurl}")
private String notifyurl;
@Value("${zhifubao.returnurl}")
private String returnurl;

@Autowired
private OrderMapper orderMapper;

@Autowired
private CourseMapper courseMapper;

@Autowired
private UserMapper userMapper;
@Autowired
private UserInviteService userInviteService;
@Autowired
private CurriculumService curriculumService;
@Autowired
private UserPurchaseRecordMapper userPurchaseRecordMapper;
@Autowired
private CourseTryLearnMapper courseTryLearnMapper;

@Autowired
private DirectCourseMapper directCourseMapper;

@Autowired
private CurrencyExchangeService currencyExchangeService;

@Autowired
private UserTaskRecordMapper userTaskRecordMapper;

@Autowired
private PearlService pearlService;

@Autowired
private ClassMapper classMapper;

@Autowired
private UserVipPayMapper  userVipPayMapper;

@Autowired
private TbH5NumberMapper h5NumberMapper;
@Autowired
private TbH5NumberService tbH5NumberService;
@Autowired
private OrderService orderService;

private static final Logger logger = LoggerFactory.getLogger(AliPayService.class);



public Message createApp(Map<String,String> parameters) {
    logger.info("调用统一下单接口");
    if (ObjectUtils.isEmpty(parameters)) {
        return Message.error(ErrorCodeEnum.SYSTEM_EMPTY_PARAM);
    }
    try {
        //支付宝请求
        AlipayClient alipayClient = new DefaultAlipayClient(
                "https://openapi.alipay.com/gateway.do",
                appid,
                privateKey,
                "json",
                "UTF-8",
                publicKey,
                "RSA2");
        AlipayTradeWapPayRequest request = new AlipayTradeWapPayRequest();
        request.setNotifyUrl(notifyurl);
   
        //设置请求参数
        JSONObject bizContent = new JSONObject();

        //商户网站唯一订单号。由商家自定义,64个字符以内
        bizContent.put("out_trade_no", parameters.get("out_trade_no"));
        //销售产品码,商家和支付宝签约的产品码
        bizContent.put("product_code", "QUICK_WAP_WAY");
        //订单标题
        bizContent.put("subject", parameters.get("subject"));
        //订单总金额,单位为元
        bizContent.put("total_amount", parameters.get("total_amount"));

        request.setBizContent(bizContent.toString());
        AlipayTradeWapPayResponse response = alipayClient.pageExecute(request);
        Map<String, String> result = new HashMap<>();
        if(response.isSuccess()){
            result.put("form",response.getBody());
            return Message.success("下单成功待支付",result);
        }
        return Message.error(ErrorCodeEnum.ZHIFUBAO_ADD_ORDER_ERROR);
    } catch (Exception e) {
        e.printStackTrace();
    }
    return Message.error(ErrorCodeEnum.ZHIFUBAO_ADD_ORDER_ERROR);
}

/**
 * 查询支付状态
 * @param out_trade_no
 * @return
 */
public Message queryStatus(String out_trade_no) {
    try {
        //支付宝请求
        AlipayClient alipayClient = new DefaultAlipayClient(
                "https://openapi.alipay.com/gateway.do",
                "app_id",
                privateKey,
                "json",
                "UTF-8",
                publicKey,
                "RSA2");
        AlipayTradeQueryRequest  request = new AlipayTradeQueryRequest ();
        //设置请求参数
        JSONObject bizContent = new JSONObject();
        //商户网站唯一订单号。由商家自定义,64个字符以内
        bizContent.put("out_trade_no", out_trade_no);

        request.setBizContent(bizContent.toString());
        AlipayTradeQueryResponse response = alipayClient.execute(request);
        Map<String, String> result = new HashMap<>();
        if (StringUtils.isNotEmpty(response.getTradeStatus())&&response.getTradeStatus().equals("TRADE_SUCCESS")){
            return Message.success("订单已支付");
        }else {
            return Message.success("订单待支付");
        }
    } catch (Exception e) {
        e.printStackTrace();

    }
     return Message.success("异常");
}

/**
 * 支付回调
 * @param request
 * @return
 */
public String notifyResult(HttpServletRequest request) throws Exception {
    try {
        logger.info("回调支付宝开始");
        Map<String, String> params = new LinkedHashMap<String, String>();
        //这里拿到支付宝通知数据
        Map<String, String[]> requestParams = request.getParameterMap();
        //返回支付结果
        Map<String, String> resultMap = new HashMap<>();
        for (Iterator<String> iter = requestParams.keySet().iterator(); iter.hasNext();) {
            String name = (String) iter.next();
            String[] values = (String[]) requestParams.get(name);
            String valueStr = "";
            for (int i = 0; i < values.length; i++) {
                valueStr = (i == values.length - 1) ? valueStr + values[i] : valueStr + values[i] + ",";
            }
            params.put(name, valueStr);
        }
        logger.info("参数组装结束");
        String tradeStatus = params.get("trade_status");
        String appId= params.get("app_id");

// boolean signVerified = AlipaySignature.rsaCheckV1(params, publicKey,“UTF-8”, “RSA2”);
// logger.info(“signVerified====” + signVerified);
// //验签
// if (signVerified && (tradeStatus.equals(“TRADE_FINISHED”)|| tradeStatus.equals(“TRADE_SUCCESS”))){
if (true){
//订单金额
String totalAmount = params.get(“total_amount”);
//支付宝交易号
String trade_no = params.get(“trade_no”);
//商户订单号
String out_trade_no = params.get(“out_trade_no”);
if(isNotEmpty(out_trade_no)){
//判断是不是分组支付
if (out_trade_no.contains(“group_”)){
try {
orderService.notifyDirectCourseGroup(out_trade_no, trade_no);
resultMap.put(“info”,“success”);
}catch (Exception e){
resultMap.put(“info”,e.getMessage());
}
return resultMap.get(“info”);
}

                //根据订单号查询当前订单
                HashMap hashMap = new HashMap();
                hashMap.put("outTradeNo",out_trade_no);
                List<OrderDto> orderDtos = orderMapper.selectList(hashMap);
                if(orderDtos.size()==1){
                    OrderDto orderDto = orderDtos.get(0);
                    if(orderDto.getPrice().compareTo(new BigDecimal(totalAmount))==0){
                        if(orderDto.getOrderStatus()==1){
                            resultMap.put("info","已有订单,请勿支付");
                            return resultMap.get("info");
                        }else{
                            //验证通过,更新订单状态并新增交易记录
                            orderDto.setOrderStatus(1);
                            orderDto.setPayTime(new Date());
                            orderDto.setTransactionId(trade_no);
                            orderDto.setUpdateTime(new Date());

                            if(orderDto.getCourseType()==1&&orderDto.getCourseId()!=null){
                                HashMap hashMap1 = new HashMap();
                                hashMap1.put("userId",orderDto.getUserId());
                                hashMap1.put("courseId",orderDto.getCourseId());
                                List<CourseTryLearnDto> courseTryLearnDtos = courseTryLearnMapper.selectList(hashMap1);
                                if(courseTryLearnDtos.size()>0){
                                    orderDto.setCourseTime(courseTryLearnDtos.get(0).getCreateTime());
                                }
                            }

                            int i = orderMapper.updateById(orderDto);
                            if(i>0&&orderDto.getCurriculumId()!=null&&orderDto.getCourseType()==0){

                                CurriculumDto curriculumDto = curriculumService.getCurriculumById(orderDto.getCurriculumId());
                                if((orderDto.getUserId()==164&&curriculumDto.getId()==6)||(orderDto.getUserId()==30&&curriculumDto.getId()==6)){

                                }else{
                                    //查询购买记录表
                                    Integer day = curriculumDto.getDay();
                                    //新增记录表
                                    UserPurchaseRecordDto userPurchaseRecordDto = new UserPurchaseRecordDto();
                                    userPurchaseRecordDto.setTransactionId(trade_no);
                                    userPurchaseRecordDto.setUserId(orderDto.getUserId());
                                    Date dateAfter = MyDateUtil.getDateAfters(new Date(), 1);
                                    userPurchaseRecordDto.setStartTime(new Date());
                                    Date dateAfters = MyDateUtil.getDateAfters(dateAfter, day);
                                    userPurchaseRecordDto.setEndTime(dateAfters);
                                    userPurchaseRecordDto.setCreateTime(new Date());
                                    userPurchaseRecordDto.setUpdateTime(new Date());
                                    userPurchaseRecordDto.setTotalDays(day);
                                    userPurchaseRecordDto.setVersion(0);
                                    userPurchaseRecordDto.setCurriculumId(curriculumDto.getId());
                                    userPurchaseRecordDto.setCashWithdrawStatus(1);
                                    userPurchaseRecordMapper.insert(userPurchaseRecordDto);
                                    //查询下单人是否为被邀请人,
                                    UserInviteDto inviteByUserId = userInviteService.getInviteByUserId(orderDto.getUserId());
                                    Integer coin=0;
                                    if(inviteByUserId!=null&&inviteByUserId.getIsGive()==0){
                                        //有邀请记录
                                        UserDto user = inviteByUserId.getUser();
                                        user.setCoin(user.getCoin()+inviteByUserId.getUserCoin());
                                        userMapper.updateById(user);
                                        coin=coin+inviteByUserId.getUseredCoin();
                                        //更新妙音币状态
                                        inviteByUserId.setIsGive(1);
                                        userInviteService.update(inviteByUserId);
                                    }
                                    //更新用户会员时长以及新增购买记录表
                                    UserDto userDto = new UserDto();
                                    userDto.setId(orderDto.getUserId());
                                    UserDto user = userMapper.selectByParam(userDto);
                                    if (curriculumDto.getIsNeedTest().equals(1)){
                                        Integer pearl = pearlService.deductOrderPearl(orderDto.getId(),orderDto.getUserId());
                                        user.setPearl(user.getPearl()-pearl);
                                    }
                                    user.setExpireTime(dateAfters);
                                    user.setCoin(user.getCoin()+coin);
                                    userMapper.updateById(user);
                                    //笃局表增加参与人数
                                    curriculumService.updateCurriculumParam(curriculumDto.getId(),curriculumDto.getCount());
                                }
                                resultMap.put("info","支付成功");
                                return resultMap.get("info");
                            }else if(i>0&&orderDto.getCourseType()==1&&orderDto.getCourseId()!=null) {
                                CourseDto courseDto = courseMapper.selectById(orderDto.getCourseId());
                                logger.info("更新课程表参与人数开始");
                                //更新课程表参与人数
                                HashMap courseMap = new HashMap();
                                courseMap.put("id",courseDto.getId());
                                courseMap.put("buyCount",courseDto.getBuyCount()==0?1:courseDto.getBuyCount()+1);
                                courseMapper.updateByParam(courseMap);
                                //更新课程表参与人数
                                logger.info("更新课程表参与人数结束");
                                if (courseDto.getIsNeedPearl().equals(1)){
                                    Integer pearl = pearlService.deductOrderPearl(orderDto.getId(),orderDto.getUserId());
                                    UserDto userDto = new UserDto();
                                    userDto.setId(orderDto.getUserId());
                                    UserDto user = userMapper.selectByParam(userDto);
                                    user.setPearl(user.getPearl()-pearl);
                                    userMapper.updateById(user);
                                }
                                //redisTemplate.delete("courseOrder:"+orderDto.getUserId()+"-"+orderDto.getCourseId());
                                resultMap.get("info");
                                resultMap.put("info","支付成功");
                                return resultMap.get("info");
                            }else if(i>0&&orderDto.getCourseType()==2&&orderDto.getCourseId()!=null) {
                                HashMap itemParam = new HashMap();
                                itemParam.put("isDelete",0);
                                itemParam.put("classType",1);
                                itemParam.put("id",orderDto.getCourseId());
                                ThirdClassDto oneThirdClassDto = classMapper.getOneThirdClassDto(itemParam);
                                if (oneThirdClassDto.getIsNeedPearl().equals(1)){
                                    Integer pearl = pearlService.deductOrderPearl(orderDto.getId(),orderDto.getUserId());
                                    UserDto userDto = new UserDto();
                                    userDto.setId(orderDto.getUserId());
                                    UserDto user = userMapper.selectByParam(userDto);
                                    user.setPearl(user.getPearl()-pearl);
                                    userMapper.updateById(user);
                                }
                                resultMap.put("info","支付成功");
                                return resultMap.get("info");
                            }else if(i>0&&orderDto.getCourseType()==3&&orderDto.getCourseId()!=null) {
                                if(orderDto.getCurriculumId()!=null){
                                    CurriculumDto curriculumDto = curriculumService.getCurriculumById(orderDto.getCurriculumId());
                                        //查询购买记录表
                                        Integer day = curriculumDto.getDay();
                                        //新增记录表
                                        UserPurchaseRecordDto userPurchaseRecordDto = new UserPurchaseRecordDto();
                                        userPurchaseRecordDto.setTransactionId(trade_no);
                                        userPurchaseRecordDto.setUserId(orderDto.getUserId());
                                        Date dateAfter = MyDateUtil.getDateAfters(new Date(), 1);
                                        userPurchaseRecordDto.setStartTime(new Date());
                                        Date dateAfters = MyDateUtil.getDateAfters(dateAfter, day);
                                        userPurchaseRecordDto.setEndTime(dateAfters);
                                        userPurchaseRecordDto.setCreateTime(new Date());
                                        userPurchaseRecordDto.setUpdateTime(new Date());
                                        userPurchaseRecordDto.setTotalDays(day);
                                        userPurchaseRecordDto.setVersion(0);
                                        userPurchaseRecordDto.setCurriculumId(curriculumDto.getId());
                                        userPurchaseRecordDto.setCashWithdrawStatus(1);
                                        userPurchaseRecordMapper.insert(userPurchaseRecordDto);
                                        //查询下单人是否为被邀请人,
                                        UserInviteDto inviteByUserId = userInviteService.getInviteByUserId(orderDto.getUserId());
                                        Integer coin=0;
                                        if(inviteByUserId!=null&&inviteByUserId.getIsGive()==0){
                                            //有邀请记录
                                            UserDto user = inviteByUserId.getUser();
                                            user.setCoin(user.getCoin()+inviteByUserId.getUserCoin());
                                            userMapper.updateById(user);
                                            coin=coin+inviteByUserId.getUseredCoin();
                                            //更新妙音币状态
                                            inviteByUserId.setIsGive(1);
                                            userInviteService.update(inviteByUserId);
                                        }
                                        //更新用户会员时长以及新增购买记录表
                                        UserDto userDto = new UserDto();
                                        userDto.setId(orderDto.getUserId());
                                        UserDto user = userMapper.selectByParam(userDto);
                                        user.setExpireTime(dateAfters);
                                        user.setCoin(user.getCoin()+coin);
                                        Integer pearl = pearlService.deductOrderPearl(orderDto.getId(),orderDto.getUserId());
                                        user.setPearl(user.getPearl()-pearl);
                                        userMapper.updateById(user);
                                        //笃局表增加参与人数
                                        curriculumService.updateCurriculumParam(curriculumDto.getId(),curriculumDto.getCount());
                                }
                                resultMap.put("info","支付成功");
                                return resultMap.get("info");
                            }else if(i>0&&orderDto.getCourseType()==4&&orderDto.getCourseId()!=null) {
                                DirectCourseDto directCourseDto = directCourseMapper.selectById(orderDto.getCourseId());
                                logger.info("更新直播课程表参与人数开始");
                                //更新课程表参与人数
                                HashMap directCourseMap = new HashMap();
                                directCourseMap.put("id",directCourseDto.getId());
                                directCourseMap.put("count",directCourseDto.getCount()==0?1:directCourseDto.getCount()+1);
                                directCourseMapper.updateByParam(directCourseMap);
                                logger.info("id: "+ directCourseDto.getId());
                                logger.info("count: "+ directCourseDto.getCount());
                                //更新课程表参与人数
                                logger.info("更新直播课程表参与人数结束");

// //直播课程赠送课程
if (!ObjectUtils.isEmpty(directCourseDto.getBindGiveDirectId())){
OrderDto dto = new OrderDto();
dto.setOrderStatus(1);
dto.setPrice(BigDecimal.ZERO);
dto.setPayTime(new Date());
dto.setCreateTime(new Date());
dto.setUpdateTime(new Date());
dto.setCourseTime(new Date());
dto.setCourseType(4);
dto.setBuyType(0);
dto.setCourseId(directCourseDto.getBindGiveDirectId());
dto.setUserId(orderDto.getUserId());
dto.setServiceEndTime(orderDto.getServiceEndTime());
dto.setServiceStartTime(orderDto.getServiceStartTime());
dto.setOutTradeNo(orderDto.getOutTradeNo());
dto.setTransactionId(“00000”);
orderMapper.insertZeroDirectOrder(dto);
}
UserDto userDto = new UserDto();
userDto.setId(orderDto.getUserId());
UserDto user = userMapper.selectByParam(userDto);
if (directCourseDto.getIsNeedPearl().equals(1)){
Integer pearl = pearlService.deductOrderPearl(orderDto.getId(),orderDto.getUserId());
user.setPearl(user.getPearl()-pearl);
userMapper.updateById(user);
}
if (!ObjectUtils.isEmpty(user.getPhone())&&!ObjectUtils.isEmpty(directCourseDto.getCourseStartTime())){
AliyunSendSms.sendDirectSignUpMessage(“SMS_227749250”,
user.getPhone(),
directCourseDto.getDirectName(),
MyDateUtil.date2dateStr(directCourseDto.getCourseStartTime(),MyDateUtil.STANDARD_DATE_FORMAT));
}
//修改数据
//修改用户支付的金额
tbH5NumberService.updateUserPayTotal(userDto, totalAmount);

                                resultMap.put("info","支付成功");
                                return resultMap.get("info");
                            }else if (i>0&&orderDto.getCourseType()==5&&orderDto.getCourseId()!=null){
                                    //充值珍珠记录
                                CurrencyExchangeDto currencyExchangeDto =
                                        currencyExchangeService.getOneCurrencyExchangeDto(orderDto.getCourseId(),0);
                                    UserTaskRecordDto pearlRecordDto = new UserTaskRecordDto();
                                    pearlRecordDto.setUserId(orderDto.getUserId());
                                    pearlRecordDto.setIsComplete(1);
                                    pearlRecordDto.setCreateTime(new Date());
                                    pearlRecordDto.setUpdateTime(new Date());
                                    pearlRecordDto.setRecordType(0);
                                    pearlRecordDto.setCurrencyType(1);
                                    pearlRecordDto.setTaskType(2);
                                    pearlRecordDto.setTitle(Constants.RECHARGE_PEARL);
                                    pearlRecordDto.setOrderId(orderDto.getId());
                                    pearlRecordDto.setCount(currencyExchangeDto.getPearl());
                                    UserDto userDto = new UserDto();
                                    userDto.setId(orderDto.getUserId());
                                    UserDto user = userMapper.selectByParam(userDto);
                                    user.setUpdateTime(new Date());
                                    if (orderDto.getCourseId().equals(0)){
                                        user.setPearl(user.getPearl() + orderDto.getPrice().intValue());
                                    }else {
                                        user.setPearl(user.getPearl() + currencyExchangeDto.getPearl());
                                    }
                                    userTaskRecordMapper.insert(pearlRecordDto);
                                    //判断是否为会员
                                if(user.getVipExpireTime()!=null&&MyDateUtil.dateCompare(user.getVipExpireTime(),new Date())>0){
                                    UserTaskRecordDto pearlRecordDto1 = new UserTaskRecordDto();
                                    pearlRecordDto1.setUserId(orderDto.getUserId());
                                    pearlRecordDto1.setIsComplete(1);
                                    pearlRecordDto1.setCreateTime(new Date());
                                    pearlRecordDto1.setUpdateTime(new Date());
                                    pearlRecordDto1.setRecordType(0);
                                    pearlRecordDto1.setCurrencyType(1);
                                    pearlRecordDto1.setTaskType(2);
                                    pearlRecordDto1.setTitle(Constants.RECHARGE_PEARL_GIVE);
                                    pearlRecordDto1.setOrderId(orderDto.getId());
                                    if(currencyExchangeDto!=null){
                                        pearlRecordDto1.setCount(currencyExchangeDto.getVipGiveNum());
                                        userTaskRecordMapper.insert(pearlRecordDto1);
                                        user.setPearl(user.getPearl()+pearlRecordDto1.getCount());
                                    }

                                }

                                    userMapper.updateById(user);
                                resultMap.put("info","支付成功");
                                return resultMap.get("info");
                                }else if(i>0&&orderDto.getCourseType()==6&&orderDto.getCourseId()!=null){
                                    UserDto userDto = new UserDto();
                                    userDto.setId(orderDto.getUserId());
                                    UserDto user = userMapper.selectByParam(userDto);
                                    user.setUpdateTime(new Date());
                                    UserVipPayDto userVipPayDto = userVipPayMapper.selectById(orderDto.getCourseId());
                                    if(user.getVipExpireTime()!=null){
                                        Date dateAfters = MyDateUtil.getDateAfters(user.getVipExpireTime(), userVipPayDto.getDayNum()+1);
                                        user.setVipExpireTime(dateAfters);
                                    }else{
                                        Date dateAfters = MyDateUtil.getDateAfters(new Date(), userVipPayDto.getDayNum()+1);
                                        user.setVipExpireTime(dateAfters);
                                    }
                                userMapper.updateById(user);
                                resultMap.put("info","支付成功");
                                return resultMap.get("info");
                            }else{
                                resultMap.put("info","支付失败");
                                return resultMap.get("info");
                            }
                        }
                    }else{
                        resultMap.put("info","支付失败");
                        return resultMap.get("info");
                    }
                }else{
                    resultMap.put("info","支付失败");
                    return resultMap.get("info");
                }
            }else {
                resultMap.put("info","订单多条,请重试");
                return resultMap.get("info");
            }
        }else {
            resultMap.put("info","验签失败");
            return resultMap.get("info");
        }

    } catch (Exception e) {
        e.printStackTrace();
        HashMap<String,String> resultMap = new HashMap<>();
        resultMap.put("info","支付失败");
        return resultMap.get("info");
    }

}

public String returnResult(HttpServletRequest request,Model model) throws Exception {
    //获取支付宝GET过来反馈信息
    Map<String,String> params = new HashMap<String,String>();
    //获取返回的结果
    Map<String,String> resultMap = new HashMap<String,String>();
    Map<String,String[]> requestParams = request.getParameterMap();
    for (Iterator<String> iter = requestParams.keySet().iterator(); iter.hasNext();) {
        String name = (String) iter.next();
        String[] values = (String[]) requestParams.get(name);
        String valueStr = "";
        for (int i = 0; i < values.length; i++) {
            valueStr = (i == values.length - 1) ? valueStr + values[i]
                    : valueStr + values[i] + ",";
        }
        //乱码解决,这段代码在出现乱码时使用
        valueStr = new String(valueStr.getBytes("ISO-8859-1"), "utf-8");
        params.put(name, valueStr);
    }
    //调用SDK验证签名
    boolean signVerified = AlipaySignature.rsaCheckV1(params, publicKey,"UTF-8", "RSA2");

    // TODO 验签成功后,按照支付结果通知中的描述,对支付结果中的业务内容进行二次校验,校验成功后在response中返回success并继续商户自身业务处理,校验失败返回failure
    if(signVerified) {
        //商户订单号
        String out_trade_no = new String(request.getParameter("out_trade_no").getBytes("ISO-8859-1"),"UTF-8");
        //支付宝交易号
        String trade_no = new String(request.getParameter("trade_no").getBytes("ISO-8859-1"),"UTF-8");
        //付款金额
        String amount = new String(request.getParameter("total_amount").getBytes("ISO-8859-1"),"UTF-8");

        resultMap.put("info","trade_no:"+trade_no+"<br/>out_trade_no:"+out_trade_no+"<br/>amount:"+amount);
    }else {// TODO 验签失败则记录异常日志,并在response中返回failure.
        resultMap.put("info", "验签失败");
    }

    return resultMap.get("info");
}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值