微信付款码

This commit is contained in:
zt
2025-01-18 09:57:09 +08:00
parent c26669d0da
commit 454c8c4f4b
27 changed files with 1129 additions and 0 deletions

View File

@ -1,5 +1,6 @@
package cn.iocoder.yudao.module.pay.api.order;
import cn.iocoder.yudao.module.pay.api.order.dto.PayCodesUnifiedDto;
import cn.iocoder.yudao.module.pay.api.order.dto.PayOrderCreateReqDTO;
import cn.iocoder.yudao.module.pay.api.order.dto.PayOrderRespDTO;
@ -37,4 +38,9 @@ public interface PayOrderApi {
*/
void updatePayOrderPrice(Long id, Integer payPrice);
/**
* 付款码支付
*
*/
boolean codePay(PayCodesUnifiedDto dto);
}

View File

@ -0,0 +1,20 @@
package cn.iocoder.yudao.module.pay.api.order.dto;
import lombok.Data;
@Data
public class PayCodesUnifiedDto {
private String subject;
private String body;
private String outTradeNo;
private Integer price;
private String userIp;
private String authCode;
}

View File

@ -1,13 +1,27 @@
package cn.iocoder.yudao.module.pay.api.order;
import cn.hutool.core.bean.BeanUtil;
import cn.iocoder.yudao.framework.pay.core.client.PayClient;
import cn.iocoder.yudao.framework.pay.core.client.dto.divide.PayDivideRespDto;
import cn.iocoder.yudao.framework.pay.core.client.dto.order.PayCodeUnifiedDto;
import cn.iocoder.yudao.framework.pay.core.client.dto.order.PayOrderUnifiedReqDTO;
import cn.iocoder.yudao.framework.pay.core.enums.order.PayOrderStatusRespEnum;
import cn.iocoder.yudao.module.pay.api.order.dto.PayCodesUnifiedDto;
import cn.iocoder.yudao.module.pay.api.order.dto.PayOrderCreateReqDTO;
import cn.iocoder.yudao.module.pay.api.order.dto.PayOrderRespDTO;
import cn.iocoder.yudao.module.pay.convert.order.PayOrderConvert;
import cn.iocoder.yudao.module.pay.dal.dataobject.order.PayOrderDO;
import cn.iocoder.yudao.module.pay.service.channel.PayChannelService;
import cn.iocoder.yudao.module.pay.service.order.PayOrderService;
import com.github.binarywang.wxpay.bean.request.WxPayMicropayRequest;
import com.github.binarywang.wxpay.bean.result.WxPayMicropayResult;
import jdk.internal.org.objectweb.asm.Handle;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.time.LocalDateTime;
import java.util.HashMap;
import java.util.Map;
/**
* 支付单 API 实现类
@ -20,6 +34,9 @@ public class PayOrderApiImpl implements PayOrderApi {
@Resource
private PayOrderService payOrderService;
@Resource
private PayChannelService channelService;
@Override
public Long createOrder(PayOrderCreateReqDTO reqDTO) {
return payOrderService.createOrder(reqDTO);
@ -36,4 +53,31 @@ public class PayOrderApiImpl implements PayOrderApi {
payOrderService.updatePayOrderPrice(id, payPrice);
}
@Override
public boolean codePay(PayCodesUnifiedDto dto) {
PayCodeUnifiedDto payCodeUnifiedDto = new PayCodeUnifiedDto();
BeanUtil.copyProperties(dto, payCodeUnifiedDto);
PayClient payClient = channelService.getPayClient(42L);
payClient.unifiedCode(payCodeUnifiedDto);
PayOrderUnifiedReqDTO payOrderUnifiedReqDTO = new PayOrderUnifiedReqDTO();
payOrderUnifiedReqDTO.setOutTradeNo(dto.getOutTradeNo());
payOrderUnifiedReqDTO.setSubject(dto.getSubject());
payOrderUnifiedReqDTO.setBody(dto.getBody());
payOrderUnifiedReqDTO.setPrice(dto.getPrice());
payOrderUnifiedReqDTO.setUserIp(dto.getUserIp());
payOrderUnifiedReqDTO.setNotifyUrl("https://yclhit.com:8896/admin-api/pay/notify/order/xx");
payOrderUnifiedReqDTO.setExpireTime(LocalDateTime.now().plusMinutes(1));
Map<String, String> channelExtras = new HashMap<>();
channelExtras.put("authCode", dto.getAuthCode());
payOrderUnifiedReqDTO.setChannelExtras(channelExtras);
try {
cn.iocoder.yudao.framework.pay.core.client.dto.order.PayOrderRespDTO payOrderRespDTO = payClient.unifiedOrder(payOrderUnifiedReqDTO);
return PayOrderStatusRespEnum.isSuccess(payOrderRespDTO.getStatus());
}catch (Exception e){
System.out.println(e.getMessage());
return false;
}
}
}

View File

@ -4,6 +4,7 @@ import cn.iocoder.yudao.framework.pay.core.client.dto.divide.PayDivideBackRespDt
import cn.iocoder.yudao.framework.pay.core.client.dto.divide.PayDivideBackUnifiedDto;
import cn.iocoder.yudao.framework.pay.core.client.dto.divide.PayDivideRespDto;
import cn.iocoder.yudao.framework.pay.core.client.dto.divide.PayDivideUnifiedDto;
import cn.iocoder.yudao.framework.pay.core.client.dto.order.PayCodeUnifiedDto;
import cn.iocoder.yudao.framework.pay.core.client.dto.order.PayOrderRespDTO;
import cn.iocoder.yudao.framework.pay.core.client.dto.order.PayOrderUnifiedReqDTO;
import cn.iocoder.yudao.framework.pay.core.client.dto.refund.PayRefundRespDTO;
@ -136,4 +137,12 @@ public interface PayClient {
*/
PayDivideBackRespDto unifiedDivideback(PayDivideBackUnifiedDto reqDTO);
/**
* 发起分账
*
* @param reqDTO 分账参数
* @return 分账
*/
PayDivideRespDto unifiedCode(PayCodeUnifiedDto reqDTO);
}

View File

@ -0,0 +1,18 @@
package cn.iocoder.yudao.framework.pay.core.client.dto.order;
import lombok.Data;
@Data
public class PayCodeUnifiedDto {
private String body;
private String outTradeNo;
private Integer totalFee;
private String spbillCreateIp;
private String authCode;
}

View File

@ -8,6 +8,7 @@ import cn.iocoder.yudao.framework.pay.core.client.dto.divide.PayDivideBackRespDt
import cn.iocoder.yudao.framework.pay.core.client.dto.divide.PayDivideBackUnifiedDto;
import cn.iocoder.yudao.framework.pay.core.client.dto.divide.PayDivideRespDto;
import cn.iocoder.yudao.framework.pay.core.client.dto.divide.PayDivideUnifiedDto;
import cn.iocoder.yudao.framework.pay.core.client.dto.order.PayCodeUnifiedDto;
import cn.iocoder.yudao.framework.pay.core.client.dto.order.PayOrderRespDTO;
import cn.iocoder.yudao.framework.pay.core.client.dto.order.PayOrderUnifiedReqDTO;
import cn.iocoder.yudao.framework.pay.core.client.dto.refund.PayRefundRespDTO;
@ -334,6 +335,11 @@ public abstract class AbstractPayClient<Config extends PayClientConfig> implemen
return resp;
}
@Override
public PayDivideRespDto unifiedCode(PayCodeUnifiedDto reqDTO) {
return null;
}
protected abstract PayDivideBackRespDto doUnifiedDivideback(PayDivideBackUnifiedDto reqDTO)
throws Throwable;