| | |
| | | import com.alipay.api.DefaultAlipayClient; |
| | | import com.alipay.api.request.AlipayTradeRefundRequest; |
| | | import com.alipay.api.response.AlipayTradeRefundResponse; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.ruoyi.common.core.constant.SecurityConstants; |
| | | import com.ruoyi.common.core.domain.R; |
| | | import com.ruoyi.common.core.utils.StringUtils; |
| | | import com.ruoyi.order.domain.pojo.Paylog; |
| | | import com.ruoyi.order.domain.Paylog; |
| | | import com.ruoyi.order.mapper.PaylogMapper; |
| | | import com.ruoyi.order.service.IPaylogService; |
| | | import com.ruoyi.order.util.SinataUtil; |
| | |
| | | import com.ruoyi.order.util.tencent.common.XMLParser; |
| | | import com.ruoyi.order.util.tencent.protocol.AppPayReqData; |
| | | import com.ruoyi.order.util.tencent.protocol.UnifiedorderReqData; |
| | | |
| | | import com.ruoyi.system.api.domain.dto.BondDTO; |
| | | import com.ruoyi.system.api.domain.dto.RefundDTO; |
| | | import com.ruoyi.system.api.feignClient.OrderClient; |
| | | import java.io.IOException; |
| | | import java.io.PrintWriter; |
| | | import java.math.BigDecimal; |
| | |
| | | import java.util.Iterator; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.Objects; |
| | | import java.util.Optional; |
| | | import java.util.Set; |
| | | import java.util.function.Function; |
| | |
| | | import javax.annotation.Resource; |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import javax.servlet.http.HttpServletResponse; |
| | | |
| | | import com.ruoyi.system.api.feignClient.OrderClient; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | /** |
| | |
| | | |
| | | @Resource |
| | | private IPaylogService iPaylogService; |
| | | |
| | | @Resource |
| | | private OrderClient orderClient; |
| | | |
| | | @Override |
| | | public R<Map<String, Object>> getPayInfo(Integer uid, Integer type, String subject, String body, String orderNO,String openId, HttpServletRequest request) { |
| | |
| | | params.put(name, valueStr); |
| | | } |
| | | |
| | | Paylog paylog = getPayLog_alipay(request); |
| | | Paylog paylog1= getPayLog_alipay(request); |
| | | |
| | | // 验证成功 |
| | | if ("TRADE_FINISHED".equals(paylog.getTradeStatus())) { |
| | | if ("TRADE_FINISHED".equals(paylog1.getTradeStatus())) { |
| | | System.out.println("AlipayController.notifyUrl__验证成功:success"); |
| | | // 支付失败 |
| | | } else if ("TRADE_SUCCESS".equals(paylog.getTradeStatus())) { |
| | | } else if ("TRADE_SUCCESS".equals(paylog1.getTradeStatus())) { |
| | | // 支付成功 |
| | | try { |
| | | if(judgeContainsStr(paylog.getOutTradeNo())){ |
| | | LambdaQueryWrapper<Paylog> wrapper = Wrappers.lambdaQuery(); |
| | | wrapper.eq(Paylog::getOutTradeNo,paylog1.getOutTradeNo()); |
| | | Paylog one = iPaylogService.getOne(wrapper); |
| | | if(SinataUtil.isEmpty(one)) { |
| | | iPaylogService.save(paylog1); |
| | | if (paylog1.getOutTradeNo().contains("BO")) { |
| | | BondDTO bondVO=new BondDTO(); |
| | | bondVO.setOrderNO(paylog1.getOutTradeNo()); |
| | | orderClient.UpdateBond(bondVO, SecurityConstants.INNER); |
| | | |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | // ——请根据您的业务逻辑来编写程序(以上代码仅作参考)—— |
| | | log.debug("AlipayController.notifyUrl__回调处理:success"); |
| | | out.println("success"); // 请不要修改或删除 |
| | |
| | | |
| | | ///////////////////////////// 这里程序处理支付回调逻辑 |
| | | ///////////////////////////// //////////////////// |
| | | Paylog paylog = new Paylog(); |
| | | paylog.setOutTradeNo(out_trade_no); |
| | | paylog.setPayType(2); |
| | | paylog.setBuyerId(buyer_id); |
| | | paylog.setTradeNo(trade_no); |
| | | paylog.setPayMoney(Double.parseDouble(total_fee) / 100); |
| | | paylog.setState(1); |
| | | System.out.println("支付完成时间" + time_end); |
| | | paylog.setAddTime(LocalDateTime.now()); |
| | | iPaylogService.save(paylog); |
| | | if (judgeContainsStr(paylog.getOutTradeNo())) { |
| | | |
| | | LambdaQueryWrapper<Paylog> wrapper = Wrappers.lambdaQuery(); |
| | | wrapper.eq(Paylog::getOutTradeNo,out_trade_no); |
| | | Paylog one = iPaylogService.getOne(wrapper); |
| | | if(SinataUtil.isEmpty(one)) { |
| | | Paylog paylog = new Paylog(); |
| | | paylog.setOutTradeNo(out_trade_no); |
| | | paylog.setPayType(2); |
| | | paylog.setBuyerId(buyer_id); |
| | | paylog.setTradeNo(trade_no); |
| | | paylog.setPayMoney(Double.parseDouble(total_fee) / 100); |
| | | paylog.setState(1); |
| | | System.out.println("支付完成时间" + time_end); |
| | | paylog.setAddTime(LocalDateTime.now()); |
| | | iPaylogService.save(paylog); |
| | | if (paylog.getOutTradeNo().contains("BO")) { |
| | | BondDTO bondVO=new BondDTO(); |
| | | bondVO.setOrderNO(paylog.getOutTradeNo()); |
| | | orderClient.UpdateBond(bondVO, SecurityConstants.INNER); |
| | | |
| | | } |
| | | |
| | | |
| | | log.debug("WxpayController.notify__回调处理成功:SUCCESS"); |
| | |
| | | paylog.setState(1); |
| | | paylog.setAddTime(LocalDateTime.now()); |
| | | paylog.setTradeStatus(trade_status.toString()); |
| | | iPaylogService.save(paylog); |
| | | return paylog; |
| | | } |
| | | |
| | |
| | | iPaylogService.updateBatchById(updList); |
| | | } |
| | | return map; |
| | | } |
| | | |
| | | public static void main(String[] args) { |
| | | Map<String, Object> map = new HashMap<>(); |
| | | map.put("1", true); |
| | | map.put("2", false); |
| | | map.put("3", true); |
| | | map.put("4", false); |
| | | map.put("5", true); |
| | | List<String> collect = map.entrySet().stream().map(entry -> { |
| | | if (!(boolean) entry.getValue()) { |
| | | return entry.getKey(); |
| | | } |
| | | return null; |
| | | }).filter(Objects::nonNull).collect(Collectors.toList()); |
| | | System.out.println(collect); |
| | | } |
| | | |
| | | private Boolean handleRefund(Paylog paylog, BigDecimal amount, |