package com.community.huiju.service;

import com.community.commom.session.UserElement;

import java.util.List;
import java.util.Map;

public interface WxPayServiceI {
	/**
	 * 微信支付统一下单
	 * @return
	 * @param outTradeNo
	 * @param type 订单类型  car 车缴费 , bill 物业缴费
	 * @param userElement
	 */
	Map<String, String> wxUnifiedOrder(String outTradeNo, String type, UserElement userElement) throws Exception;
	
	/**
	 * 支付成功的回调 物业缴费
	 * @return
	 * @param resultMap
	 */
	String wxBillNotify(Map<String, String> resultMap) throws Exception;
	
	/**
	 * 订单查询
	 * @return
	 */
	Map<String, String> wxOrderQuery(String outTradeNo) throws Exception;
	
	/**
	 * 准备支付
	 * @param idArray 账单的id
	 * @param userElement
	 * @param type 订单类型  car 车缴费 , bill 物业缴费
	 * @param extensionMonth 延期月份，也就是延期几个月！
	 *                        	只有在 车缴费的时候才有效
	 * @throws Exception
	 */
	String wxStartPay(List<Integer> idArray, String type,  Integer extensionMonth, UserElement userElement) throws Exception;
	
	/**
	 * 取消支付
	 * @param outTradeNo 订单号
	 * @param type  订单类型  car 车缴费 , bill 物业缴费
	 * @param userElement
	 */
	void wxCancelPay(String outTradeNo, String type, UserElement userElement) throws Exception;

	/**
	 * 支付成功的回调 车缴费
	 * @param resultMap
	 * @return
	 */
	String wxCarNotify(Map<String, String> resultMap);

	/**
	 * 根据订单类型获取 金额 和 回调地址
	 * @param type
	 * @param orderNo
	 * @param notifyType wx 微信, ali 支付宝
	 * @return
	 * @throws Exception
	 */
	Map<String,Object> getOrderPriceAndNotifyUrl(String type, String orderNo, String notifyType) throws Exception;
}
