package com.iformall.service;

import com.iformall.common.ResultData;
import com.iformall.domain.po.WxAppinfo;
import com.iformall.domain.po.WxPayBill;
import com.iformall.enums.EnumPayWay;

import java.util.Map;

/**
 * @author gongbiao
 */
public interface WxPayBillService {

    /**
     * 创建支付订单
     *
     * @param record 支付订单请求
     * @param payWay
     * @return
     */
    ResultData createPayBill(WxAppinfo appInfo, WxPayBill record, EnumPayWay payWay);

    /**
     * 微信支付订单查询
     * @param appInfo  支付订单Appinfo
     * @param record   支付订单
     */
    ResultData payBillQuery(WxAppinfo appInfo, WxPayBill record);

    /**
     * 微信支付关闭订单
     * @param appInfo  支付订单Appinfo
     * @param record   支付订单
     */
    ResultData payBillClose(WxAppinfo appInfo, WxPayBill record);

    /**
     * 异步通知
     *
     * @param paramMap 异步通知参数
     * @param payWay   支付方式
     * @return
     */
    String notify(Map<String, String> paramMap, EnumPayWay payWay);

    /**
     * 支付成功处理
     *
     * @param record
     * @param transactionId
     */
    void handleBillPaySuccess(WxPayBill record, String transactionId);

    /**
     * 支付状态处理
     *
     * @param record
     */
    void handlePayBillStatusUpdate(WxPayBill record);


    WxPayBill getById(Long payBillId);

    void updatePayBillStatus(WxPayBill payBill);

    WxPayBill queryPayBill(WxPayBill payBill);

}
