package com.ycwl.basic.service.mobile;

import com.ycwl.basic.model.wx.WXPayOrderReqVO;
import com.ycwl.basic.model.wx.WxPayRespVO;
import com.ycwl.basic.model.wx.WxchatCallbackSuccessData;

import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.security.GeneralSecurityException;

public interface WxPayService {

    /**
     * 微信预支付
     */
    WxPayRespVO createOrder(WXPayOrderReqVO req) throws Exception;

    /**
     * 微信支付回调
     */
    void payNotify(HttpServletRequest xml);


    /**
     * 微信支付结果查询
     */
    WxchatCallbackSuccessData queryPay(Long orderId);

    /**
     * 订单退款
     *
     * @param orderId 订单id（订单编号）
     * @return
     * @throws Exception
     */
    Boolean refundOrder(String orderId) throws Exception;

    /**
     * 微信退款回调
     */
    boolean refundNotify(String refundResult) throws IOException, GeneralSecurityException;

    /**
     * 关闭订单
     *
     * @param orderId 订单id（订单编号）
     */
    void closeOrder(String orderId) ;
}
