package com.czg.service.order.service;

import com.czg.order.dto.OrderInfoRefundDTO;
import com.czg.resp.CzgResult;
import com.czg.service.order.dto.OrderPayParamDTO;
import lombok.NonNull;

import java.util.Map;

/**
 * @author ww
 */
public interface OrderPayService {

    /**
     * 挂账
     */
    CzgResult<Object> creditPayOrder(OrderPayParamDTO payParam);

    /**
     * 现金支付
     */
    CzgResult<Object> cashPayOrder(OrderPayParamDTO payParam);

    /**
     * 余额支付
     */
    CzgResult<Object> vipPayOrder(OrderPayParamDTO payParam);

    /**
     * h5支付
     */
    CzgResult<Map<String, Object>> h5PayOrder(String clintIp, OrderPayParamDTO payParam);

    /**
     * js支付
     */
    CzgResult<Map<String, Object>> jsPayOrder(String clintIp, OrderPayParamDTO payParam);

    /**
     * 空订单支付
     */
    CzgResult<Map<String, Object>> js2PayOrder(@NonNull String clintIp, OrderPayParamDTO payParam);

    /**
     * 小程序支付
     */
    CzgResult<Map<String, Object>> ltPayOrder(String clintIp, OrderPayParamDTO payParam);

    /**
     * PC扫码支付
     */
    CzgResult<Map<String, Object>> scanPayOrder(String clintIp, OrderPayParamDTO payParam);

    /**
     * 聚合反扫
     */
    CzgResult<Map<String, Object>> microPayOrder(OrderPayParamDTO payParam);
    //-----------------------------------------------------------------订单+会员 一起支付-----------------------------------------------------------

    /**
     * 充值并付款
     */
    CzgResult<Map<String, Object>> rechargePayOrder(String clintIp, OrderPayParamDTO payParam);


    //-----------------------------------------------------------------退款-----------------------------------------------------------------

    //订单退款
    CzgResult<Object> refundOrderBefore(OrderInfoRefundDTO param);


}
