package com.zanxiang.game.module.sdk.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.zanxiang.game.module.mybatis.entity.PayApplication;
import com.zanxiang.game.module.sdk.pojo.dto.PayApplicationDTO;
import com.zanxiang.game.module.sdk.pojo.param.MiniAppPayParam;
import com.zanxiang.module.util.pojo.ResultVO;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

import java.io.IOException;
import java.util.Map;

/**
 * 支付商城小程序
 *
 * @author xufeng
 * @date 2022-06-20 15:16
 */
public interface IPayApplicationService extends IService<PayApplication> {

    /**
     * 支付盒子应用禁用
     *
     * @param orderId : 订单id
     * @param appId   : 应用id
     * @return : 返回结果
     */
    Boolean payApplicationBan(String orderId, String appId);

    /**
     * 获得支付应用程序
     *
     * @param appId 应用程序id
     * @return {@link PayApplicationDTO}
     */
    PayApplicationDTO getPayApplicationByAppId(String appId);

    /**
     * 被支付盒子支付应用程序id
     *
     * @param payBoxId 盒子支付id
     * @return {@link PayApplicationDTO}
     */
    PayApplicationDTO getPayApplicationByPayBoxId(Long payBoxId);

    /**
     * 小应用程序商店支付
     * 迷你应用程序支付
     *
     * @param payParam 支付参数
     * @param request  请求
     * @return {@link ResultVO}<{@link Map}>
     */
    ResultVO<Map> appletStorePay(MiniAppPayParam payParam, HttpServletRequest request);

    /**
     * applet通知
     *
     * @param request  请求
     * @param response 响应
     * @return {@link String}
     * @throws IOException ioexception
     */
    String appletStoreNotify(HttpServletRequest request, HttpServletResponse response) throws IOException;

    /**
     * 小应用程序商店取消
     *
     * @param param 参数
     */
    void appletStoreCancel(String param);
}
