package com.njzscloud.supervisory.wxPay.service;

import com.github.binarywang.wxpay.bean.request.WxPayUnifiedOrderRequest;
import com.github.binarywang.wxpay.bean.result.WxPayOrderQueryResult;
import com.github.binarywang.wxpay.exception.WxPayException;

/**
 * 微信支付服务接口
 */
public interface WeChatPayService {

    /**
     * JSAPI支付下单
     *
     * @param request 下单请求参数
     * @return 支付参数
     */
    Object createJsapiOrder(WxPayUnifiedOrderRequest request) throws WxPayException;

    /**
     * 查询订单状态
     *
     * @param outTradeNo 商户订单号
     * @return 订单查询结果
     * @throws WxPayException 微信支付异常
     */
    WxPayOrderQueryResult queryOrder(String outTradeNo) throws WxPayException;

    /**
     * 关闭订单
     *
     * @param outTradeNo 商户订单号
     * @throws WxPayException 微信支付异常
     */
    void closeOrder(String outTradeNo) throws WxPayException;

    /**
     * 申请退款
     *
     * @param outTradeNo  商户订单号
     * @param outRefundNo 商户退款单号
     * @param totalFee    订单总金额（分）
     * @param refundFee   退款金额（分）
     * @param notifyUrl   退款回调地址
     * @return 退款结果
     * @throws WxPayException 微信支付异常
     */
    String refund(String outTradeNo, String outRefundNo, int totalFee, int refundFee, String notifyUrl) throws WxPayException;

}
