package com.pz.system.service.impl; import com.github.binarywang.wxpay.bean.notify.WxPayNotifyResponse; import com.github.binarywang.wxpay.bean.notify.WxPayOrderNotifyResult; import com.github.binarywang.wxpay.bean.notify.WxPayRefundNotifyResult; import com.github.binarywang.wxpay.bean.request.WxPayRefundRequest; import com.github.binarywang.wxpay.bean.request.WxPayUnifiedOrderRequest; import com.github.binarywang.wxpay.bean.result.WxPayOrderQueryResult; import com.github.binarywang.wxpay.bean.result.WxPayRefundQueryResult; import com.github.binarywang.wxpay.bean.result.WxPayRefundResult; import com.github.binarywang.wxpay.exception.WxPayException; import com.github.binarywang.wxpay.service.WxPayService; import com.pz.system.service.IPayService; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; /** * 城市Service业务层处理 * * @author ruoyi * @date 2023-09-07 */ @RequiredArgsConstructor @Service public class PayServiceImpl implements IPayService { @Autowired private WxPayService wxService; /** * <pre> * 查询订单(详见https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_2) * 该接口提供所有微信支付订单的查询,商户可以通过查询订单接口主动查询订单状态,完成下一步的业务逻辑。 * 需要调用查询接口的情况: * ◆ 当商户后台、网络、服务器等出现异常,商户系统最终未接收到支付通知; * ◆ 调用支付接口后,返回系统错误或未知交易状态情况; * ◆ 调用被扫支付API,返回USERPAYING的状态; * ◆ 调用关单或撤销接口API之前,需确认支付状态; * 接口地址:https://api.mch.weixin.qq.com/pay/orderquery * </pre> * * @param transactionId 微信订单号 * @param outTradeNo 商户系统内部的订单号,当没提供transactionId时需要传这个。 */ @Override public WxPayOrderQueryResult queryOrder(String transactionId, String outTradeNo) throws WxPayException { return this.wxService.queryOrder(transactionId, outTradeNo); } /** * 调用统一下单接口,并组装生成支付所需参数对象. * * @param request 统一下单请求参数 * @param <T> 请使用{@link com.github.binarywang.wxpay.bean.order}包下的类 * @return 返回 {@link com.github.binarywang.wxpay.bean.order}包下的类对象 */ @Override public <T> T createOrder(WxPayUnifiedOrderRequest request) throws WxPayException { return this.wxService.createOrder(request); } /** * <pre> * 微信支付-申请退款 * 详见 https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_4 * 接口链接:https://api.mch.weixin.qq.com/secapi/pay/refund * </pre> * * @param request 请求对象 * @return 退款操作结果 */ @Override public WxPayRefundResult refund(WxPayRefundRequest request) throws WxPayException { return this.wxService.refund(request); } /** * <pre> * 微信支付-查询退款 * 应用场景: * 提交退款申请后,通过调用该接口查询退款状态。退款有一定延时,用零钱支付的退款20分钟内到账, * 银行卡支付的退款3个工作日后重新查询退款状态。 * 详见 https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_5 * 接口链接:https://api.mch.weixin.qq.com/pay/refundquery * </pre> * 以下四个参数四选一 * * @param transactionId 微信订单号 * @param outTradeNo 商户订单号 * @param outRefundNo 商户退款单号 * @param refundId 微信退款单号 * @return 退款信息 */ @Override public WxPayRefundQueryResult refundQuery(String transactionId, String outTradeNo,String outRefundNo,String refundId) throws WxPayException { return this.wxService.refundQuery(transactionId, outTradeNo, outRefundNo, refundId); } /** * 支付回调通知处理 * @param xmlData * @return * @throws WxPayException */ @Override public WxPayOrderNotifyResult parseOrderNotifyResult(String xmlData) throws WxPayException { // 参数解析 final WxPayOrderNotifyResult notifyResult = this.wxService.parseOrderNotifyResult(xmlData); // TODO 根据自己业务场景需要构造返回对象 return notifyResult; } /** * 退款回调通知处理 * @param xmlData * @return * @throws WxPayException */ @Override public WxPayRefundNotifyResult parseRefundNotifyResult(String xmlData) throws WxPayException { // 参数解析 final WxPayRefundNotifyResult result = this.wxService.parseRefundNotifyResult(xmlData); // TODO 根据自己业务场景需要构造返回对象 return result; } }