package com.kidgrow.oprationcenter.service.impl; import com.alipay.api.AlipayClient; import com.alipay.api.domain.AlipayTradePrecreateModel; import com.alipay.api.request.AlipayTradePrecreateRequest; import com.alipay.api.response.AlipayTradePrecreateResponse; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.kidgrow.common.utils.QRCodeUtil; import com.kidgrow.common.utils.StringUtils; import com.kidgrow.oprationcenter.alipay.AlipayProperties; import com.kidgrow.oprationcenter.model.SaasClientPay; import com.kidgrow.oprationcenter.service.AlipayService; import com.kidgrow.oprationcenter.service.ISaasClientPayService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.Date; import java.util.List; import java.util.Map; @Slf4j @Service public class AlipayServiceImpl implements AlipayService { @Resource private AlipayProperties alipayProperties; @Resource private AlipayClient alipayClient; @Autowired @Lazy private ISaasClientPayService saasClientPayService; @Override public String getCode(SaasClientPay saasClientPay) throws Exception { AlipayTradePrecreateModel model = new AlipayTradePrecreateModel(); model.setProductCode("FACE_TO_FACE_PAYMENT"); //销售产品码 model.setOutTradeNo(saasClientPay.getOutTradeNo()); //商户订单号 model.setSubject(saasClientPay.getChildName()+"的支付"); //订单标题 double l = Double.parseDouble(saasClientPay.getPayPrice().toString()) / 100; model.setTotalAmount(l+""); //订单总金额 单位为元 AlipayTradePrecreateRequest request = new AlipayTradePrecreateRequest(); request.setBizModel(model); //兼容pkcs1 编码; java.security.Security.addProvider( new org.bouncycastle.jce.provider.BouncyCastleProvider() ); request.setNotifyUrl(alipayProperties.getNotifyUrl()); request.setReturnUrl(alipayProperties.getReturnUrl()); AlipayTradePrecreateResponse alipayTradePrecreateResponse = alipayClient.execute(request); if (StringUtils.isBlank(alipayTradePrecreateResponse.getQrCode())) { return null; } String content = alipayTradePrecreateResponse.getQrCode(); String base64 = QRCodeUtil.creatRrCode(content, 200, 200, 0).replaceAll("\n", "").replaceAll("\r", ""); return base64; } @Override public String notify(Map requestMap) { log.error("eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"); log.error(requestMap.toString()); log.error("eeeeeeeeeeeeeeeewwwwwwwwwwww:"+requestMap.toString()); if(requestMap.get("trade_status").equals("TRADE_SUCCESS")){ QueryWrapper queryWrapper = new QueryWrapper(); queryWrapper.eq("out_trade_no",requestMap.get("out_trade_no")); queryWrapper.eq("pay_status",0); List list = saasClientPayService.list(queryWrapper); if(!list.isEmpty()){ SaasClientPay saasClientPay = list.get(0); saasClientPay.setPayTime(new Date()); saasClientPay.setPayStatus(2); saasClientPay.setPayMethod(1); saasClientPay.setTradeNo(requestMap.get("trade_no")); boolean b = saasClientPayService.updateById(saasClientPay); } return "success"; }else { return "fail"; } } }