| | |
| | | import com.doumee.dao.business.model.*; |
| | | import com.doumee.dao.dto.*; |
| | | import com.doumee.dao.vo.OrderReleaseVO; |
| | | import com.doumee.dao.vo.PayResponse; |
| | | import com.doumee.service.business.AliSmsService; |
| | | import com.doumee.service.business.OrdersService; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.github.binarywang.wxpay.bean.request.BaseWxPayRequest; |
| | | import com.github.binarywang.wxpay.bean.request.WxPayUnifiedOrderRequest; |
| | | import com.github.binarywang.wxpay.exception.WxPayException; |
| | | import com.github.yulichang.wrapper.MPJLambdaWrapper; |
| | | import com.wechat.pay.java.service.partnerpayments.jsapi.model.Amount; |
| | | import com.wechat.pay.java.service.partnerpayments.jsapi.model.Payer; |
| | |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import org.springframework.util.CollectionUtils; |
| | | import org.springframework.util.StringUtils; |
| | | import org.springframework.web.context.request.RequestContextHolder; |
| | | import org.springframework.web.context.request.ServletRequestAttributes; |
| | | |
| | | import javax.annotation.Resource; |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import java.math.BigDecimal; |
| | | import java.math.RoundingMode; |
| | | import java.net.InetAddress; |
| | | import java.net.UnknownHostException; |
| | | import java.util.*; |
| | | import java.util.concurrent.TimeUnit; |
| | | import java.util.stream.Collectors; |
| | |
| | | return orderReleaseVO; |
| | | } |
| | | |
| | | private Object getWxPayResponse(Orders orders,String openid){ |
| | | Object response = null; |
| | | //调起支付 |
| | | PrepayRequest request = new PrepayRequest(); |
| | | request.setAttach("createOrder"); |
| | | request.setDescription("近快订单支付"); |
| | | request.setSpMchid(WxMiniConfig.wxProperties.getMchId()); |
| | | request.setSpAppid(WxMiniConfig.wxProperties.getAppId()); |
| | | request.setSubMchid(WxMiniConfig.wxProperties.getSubMchId()); |
| | | request.setSubAppid(WxMiniConfig.wxProperties.getSubAppId()); |
| | | private PayResponse getWxPayResponse(Orders orders,String openid){ |
| | | try { |
| | | Object response = null; |
| | | //调起支付 |
| | | WxPayUnifiedOrderRequest request = new WxPayUnifiedOrderRequest(); |
| | | request.setAttach("createOrder"); |
| | | request.setAttach("订单支付"); |
| | | request.setOutTradeNo(orders.getOutTradeNo()); |
| | | request.setTotalFee(BaseWxPayRequest.yuanToFen(orders.getPrice().toString())); |
| | | |
| | | Payer payer = new Payer(); |
| | | payer.setSubOpenid(openid); |
| | | request.setPayer(payer); |
| | | request.setOutTradeNo(orders.getOutTradeNo()); |
| | | request.setNotifyUrl(WxMiniConfig.wxProperties.getNotifyUrl());//这个回调url必须是https开头的 |
| | | Amount amount = new Amount(); |
| | | amount.setTotal(orders.getPayAccount().intValue()); |
| | | request.setAmount(amount); |
| | | // PrepayResponse res = WxMiniConfig.wxPayService.prepay(request); |
| | | // 跟之前下单示例一样,填充预下单参数 |
| | | PrepayWithRequestPaymentResponse resParam = WxMiniConfig.jsapiExtService.prepayWithRequestPayment(request,WxMiniConfig.wxProperties.getSubAppId()); |
| | | response =resParam; |
| | | return response; |
| | | |
| | | request.setTimeStart(DateUtil.DateToString(new Date(), "yyyyMMddHHmmss")); |
| | | request.setSpbillCreateIp(Constants.getIpAddr()); |
| | | //微信小程序 |
| | | request.setOpenid(openid); |
| | | response = WxMiniConfig.wxPayService.createOrder(request); |
| | | PayResponse payResponse = new PayResponse(); |
| | | payResponse.setResponse(response); |
| | | payResponse.setOrderId(orders.getId()); |
| | | payResponse.setPayType(Constants.ZERO); |
| | | |
| | | return payResponse; |
| | | } catch (WxPayException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"支付失败!"); |
| | | } |
| | | |
| | | /** |
| | |
| | | //更新缓存 |
| | | redisTemplate.opsForValue().set(Constants.RedisKeys.ORDER_CODE,0); |
| | | } |
| | | |
| | | |
| | | |
| | | } |