package com.jsowell.pile.service;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.jsowell.pile.dto.WeixinPayDTO;
import com.jsowell.wxpay.response.WechatPayNotifyParameter;
import com.jsowell.wxpay.response.WechatPayRefundRequest;
import com.jsowell.wxpay.response.WechatPayRefundResponse;

import javax.servlet.http.HttpServletRequest;
import java.util.Map;

public interface WechatPayService {
	/**
	 * 获取微信支付参数
	 * @param dto
	 * @return
	 * @throws Exception
	 */
	Map<String, Object> weixinPayV3(WeixinPayDTO dto) throws Exception;

	/**
	 * 获取微信支付回调信息
	 * @param request
	 * @param body
	 * @return
	 * @throws Exception
	 */
	Map<String, Object> wechatPayCallbackInfo(HttpServletRequest request, WechatPayNotifyParameter body) throws Exception;

	/**
	 * 微信退款接口
	 * ApplyForARefund
	 */
	WechatPayRefundResponse ApplyForWechatPayRefundV3(WechatPayRefundRequest request) throws JsonProcessingException;

	/**
	 * 获取微信退款回调信息
	 * @param request
	 * @param body
	 * @return
	 */
	Map<String, Object> wechatPayRefundCallbackInfo(HttpServletRequest request, WechatPayNotifyParameter body) throws Exception;
}
