package com.cdzy.payment.service; import com.alibaba.fastjson2.JSONObject; import com.cdzy.payment.model.dto.*; import com.mybatisflex.core.paginate.Page; import com.wechat.pay.java.service.payments.model.Transaction; import com.wechat.pay.java.service.refund.model.Refund; import javax.servlet.http.HttpServletRequest; import java.util.List; /** * 微信支付服务类(JSAPI支付),小程序 * * @author dingchao * @date 2025/4/25 * @modified by: */ public interface WxPayService { /** * 关闭订单 * * @param outTradeNo 商户(骑行)订单号 * @return */ boolean closeOrder(String outTradeNo); /** * JSAPI支付下单 * * @param orderId 订单id * @return 下单成功返回wx支付请求参数,否则返回null */ JSONObject prepay(String orderId); /** * 通过支付订单号查询支付订单 * * @param outTradeNo 支付订单号 * @return 支付订单信息 */ Transaction queryOrderByOutTradeNo(String outTradeNo); /** * 通过商户(骑行)订单号查询支付订单 * * @param orderId 商户(骑行)订单号 * @return 支付订单信息 */ Transaction queryOrderByOrderId(String orderId); /** * 通过订单号查询支付订单状态 * * @param orderId 商户(骑行)订单号 * @return 支付订单信息 */ HandleNotifyResult queryOrderStatusByOrderId(String orderId); /** * 处理支付回调 * * @param request 回调请求 * @return 支付订单信息 */ HandleNotifyResult handlePayNotify(HttpServletRequest request); /** * 退款申请 * * @param outTradeNo 商户(骑行)订单号 * @param reason 退款原因 * @return 退款信息id */ String refundApply(String outTradeNo, String reason); /** * 审核退款申请 * * @param processDto 退款审核信息 * @operator 操作人id * @return 退款信息id */ Boolean refundReview(ReqRefundProcessDto processDto, String operator); /** * 调用微信退款接口 * * @param refundDto 退款请求 * @param operator 操作人id * @return 退款信息id */ HandleNotifyResult refund(ReqRefundDto refundDto, String operator); /** * 通过商户退款单号查询退款信息 * * @param outRefundNo 商户退款订单号 * @return 退款信息 */ Refund queryRefundByOutNo(String outRefundNo); /** * 通过商户退款单号查询退款信息状态 * * @param outRefundNo 商户退款订单号 * @return 退款信息 */ HandleNotifyResult queryRefundStatusByOutNo(String outRefundNo); /** * 处理支退款回调 * * @param request 回调请求 * @return 退款订单信息 */ HandleNotifyResult handleRefundNotify(HttpServletRequest request); /** * 获取退款列表 * * @param refundDto 查询条件 * @return 退款列表 */ Page queryRefundList(ReqRefundQueryDto refundDto); /** * 退款订单详情 * * @param refundId 退款id * @return 退款详情 */ ResOrderInfoDto queryRefundOrderById(String refundId); /** * 退款申请订单详情 * * @param orderId 订单id * @return 退款申请详情 */ ResRefundOrderInfo queryRefundApplyOrderById(String orderId); }