package com.xinelu.applet.service.wechatpaymentinfo;

import com.xinelu.applet.vo.wechatpaymentinfo.dto.PaymentDTO;
import com.xinelu.applet.vo.wechatpaymentinfo.vo.OrderStatusInfoVO;
import com.xinelu.common.core.domain.AjaxResult;

/**
 * @Description 微信小程序和App支付业务层
 * @Author 纪寒
 * @Date 2022-10-18 15:02:27
 * @Version 1.0
 */
public interface WeChatPaymentService {

    /**
     * 微信小程序购买商品和健康咨询支付接口
     *
     * @param paymentDTO 输入参数
     * @return 支付结果
     * @throws Exception 异常信息
     */
    AjaxResult appletGoodsOrderPay(PaymentDTO paymentDTO) throws Exception;

    /**
     * 微信小程序预约服务订单支付接口
     *
     * @param paymentDTO 输入参数
     * @return 支付结果
     * @throws Exception 异常信息
     */
    AjaxResult appletAppointmentOrderPay(PaymentDTO paymentDTO) throws Exception;

    /**
     * 微信关闭订单方法
     *
     * @param orderNo   订单编号
     * @param buySource 购买来源
     * @return 状态码
     * @throws Exception 异常信息
     */
    int closeWeChatOrderInfo(String orderNo, String buySource) throws Exception;

    /**
     * 查询预约服务订单信息
     *
     * @param orderNo 订单编号
     * @param vo      返回值信息
     * @return 订单状态标识
     */
    OrderStatusInfoVO queryAppointmentOrderStatus(String orderNo, OrderStatusInfoVO vo);

    /**
     * 查询上商品订单信息
     *
     * @param orderNo   订单编号
     * @param buySource 购买来源
     * @param vo        返回值信息
     * @return 订单状态标识
     * @throws Exception 异常信息
     */
    OrderStatusInfoVO queryGoodsOrderStatus(String orderNo, OrderStatusInfoVO vo, String buySource) throws Exception;


    /**
     * 泉医助手小程序-学习培训微信支付
     *
     * @param paymentDTO 支付参数
     * @return 支付结果
     * @throws Exception 异常信息
     */
    AjaxResult appletTrainingOrderPay(PaymentDTO paymentDTO) throws Exception;
}
