You've already forked FrameTour-BE
对接支付
This commit is contained in:
@@ -26,5 +26,6 @@ public class OrderItemEntity {
|
||||
* 商品ID,goods_type=1关联video.id,=2关联source.id
|
||||
*/
|
||||
private Long goodsId;
|
||||
private int count = 1;
|
||||
|
||||
}
|
||||
|
@@ -68,6 +68,9 @@ public class WxMpPayAdapter implements IPayAdapter {
|
||||
public WxMpPayAdapter(WxMpPayConfig config) {
|
||||
this.config = config;
|
||||
}
|
||||
public WxMpPayConfig _config() {
|
||||
return config;
|
||||
}
|
||||
@Override
|
||||
public void loadConfig(Map<String, String> _config) {
|
||||
this.config = new WxMpPayConfig();
|
||||
|
@@ -1,21 +1,42 @@
|
||||
package com.ycwl.basic.service.aio.impl;
|
||||
|
||||
import com.wechat.pay.java.service.payments.nativepay.NativePayService;
|
||||
import com.wechat.pay.java.service.payments.nativepay.model.Amount;
|
||||
import com.wechat.pay.java.service.payments.nativepay.model.PrepayRequest;
|
||||
import com.wechat.pay.java.service.payments.nativepay.model.PrepayResponse;
|
||||
import com.ycwl.basic.enums.OrderStateEnum;
|
||||
import com.ycwl.basic.exception.BaseException;
|
||||
import com.ycwl.basic.mapper.AioDeviceMapper;
|
||||
import com.ycwl.basic.mapper.OrderMapper;
|
||||
import com.ycwl.basic.model.aio.entity.AioDeviceEntity;
|
||||
import com.ycwl.basic.model.aio.entity.AioDevicePriceConfigEntity;
|
||||
import com.ycwl.basic.model.aio.req.AioDeviceCreateOrderReq;
|
||||
import com.ycwl.basic.model.aio.resp.AioDeviceCreateOrderResp;
|
||||
import com.ycwl.basic.model.pc.face.entity.FaceEntity;
|
||||
import com.ycwl.basic.model.pc.order.entity.OrderEntity;
|
||||
import com.ycwl.basic.model.pc.order.entity.OrderItemEntity;
|
||||
import com.ycwl.basic.pay.adapter.IPayAdapter;
|
||||
import com.ycwl.basic.pay.adapter.WxMpPayAdapter;
|
||||
import com.ycwl.basic.repository.FaceRepository;
|
||||
import com.ycwl.basic.service.aio.AioDeviceService;
|
||||
import com.ycwl.basic.service.pc.ScenicService;
|
||||
import com.ycwl.basic.utils.SnowFlakeUtil;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
|
||||
@Service
|
||||
public class AioDeviceServiceImpl implements AioDeviceService {
|
||||
@Autowired
|
||||
private AioDeviceMapper aioDeviceMapper;
|
||||
@Autowired
|
||||
private ScenicService scenicService;
|
||||
@Autowired
|
||||
private FaceRepository faceRepository;
|
||||
@Autowired
|
||||
private OrderMapper orderMapper;
|
||||
|
||||
@Override
|
||||
public AioDeviceCreateOrderResp createOrder(AioDeviceEntity aioDevice, AioDeviceCreateOrderReq req) {
|
||||
@@ -27,9 +48,53 @@ public class AioDeviceServiceImpl implements AioDeviceService {
|
||||
if (req.getItems() == null || req.getItems().isEmpty()) {
|
||||
throw new BaseException("请选择商品");
|
||||
}
|
||||
FaceEntity face = faceRepository.getFace(req.getFaceId());
|
||||
if (face == null) {
|
||||
throw new BaseException("请选择人脸");
|
||||
}
|
||||
int sum = req.getItems().stream().mapToInt(AioDeviceCreateOrderReq.AioDeviceOrderItem::getCount).sum();
|
||||
BigDecimal totalPrice = config.getEachPrice().multiply(new BigDecimal(sum));
|
||||
OrderEntity order = new OrderEntity();
|
||||
Long orderId = SnowFlakeUtil.getLongId();
|
||||
order.setId(orderId);
|
||||
order.setMemberId(face.getMemberId());
|
||||
order.setFaceId(face.getId());
|
||||
order.setScenicId(face.getScenicId());
|
||||
order.setType(0);
|
||||
List<OrderItemEntity> orderItems = req.getItems().stream().map(item -> {
|
||||
OrderItemEntity orderItem = new OrderItemEntity();
|
||||
orderItem.setOrderId(orderId);
|
||||
orderItem.setGoodsId(item.getGoodsId());
|
||||
orderItem.setGoodsType(4);
|
||||
if (item.getCount() == null) {
|
||||
item.setCount(1);
|
||||
}
|
||||
orderItem.setCount(item.getCount());
|
||||
return orderItem;
|
||||
}).toList();
|
||||
order.setSlashPrice(totalPrice);
|
||||
order.setPrice(totalPrice);
|
||||
order.setPayPrice(totalPrice);
|
||||
order.setStatus(OrderStateEnum.UNPAID.getState());
|
||||
orderMapper.add(order);
|
||||
int addOrderItems = orderMapper.addOrderItems(orderItems);
|
||||
// 支付
|
||||
return null;
|
||||
IPayAdapter scenicPayAdapter = scenicService.getScenicPayAdapter(aioDevice.getScenicId());
|
||||
AioDeviceCreateOrderResp resp = new AioDeviceCreateOrderResp();
|
||||
if (scenicPayAdapter instanceof WxMpPayAdapter adapter) {
|
||||
NativePayService service = new NativePayService.Builder().config(adapter.getConfig()).build();
|
||||
PrepayRequest request = new PrepayRequest();
|
||||
request.setAppid(adapter._config().getAppId());
|
||||
request.setMchid(adapter._config().getMerchantId());
|
||||
request.setDescription("打印订单");
|
||||
request.setOutTradeNo(SnowFlakeUtil.getId());
|
||||
request.setNotifyUrl("https://zhentuai.com/api/mobile/wx/pay/v1/"+aioDevice.getScenicId()+"/payNotify");
|
||||
Amount amount = new Amount();
|
||||
amount.setTotal(totalPrice.multiply(new BigDecimal(100)).intValue());
|
||||
request.setAmount(amount);
|
||||
PrepayResponse response = service.prepay(request);
|
||||
resp.setPayCode(response.getCodeUrl());
|
||||
}
|
||||
return resp;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user