package shop.alien.store.service;

import com.alipay.api.AlipayApiException;
import com.alipay.api.domain.AntMerchantExpandIndirectZftCreateModel;
import shop.alien.entity.result.R;
import shop.alien.entity.store.dto.AlipayZftBizRequestDto;
import shop.alien.entity.store.dto.AlipayZftMerchantCreateDto;
import shop.alien.entity.store.dto.AlipayZftMerchantSimplecreateDto;
import org.springframework.web.multipart.MultipartFile;

/**
 * 支付宝直付通二级商户入驻相关接口封装（调用支付宝开放平台 API）。
 */
public interface AlipayZftOnboardingService {

    /**
     * ant.merchant.expand.indirect.zft.consult — 进件前咨询
     */
    R<String> zftConsult(AlipayZftBizRequestDto request);

    /**
     * ant.merchant.expand.indirect.zft.create — 二级商户标准进件（结构化必填：external_id、merchant_type、name、alias_name、mcc、service）
     */
    R<String> zftCreate(AntMerchantExpandIndirectZftCreateModel request, Integer storeId, String type) throws AlipayApiException;

    /**
     * ant.merchant.expand.indirect.zft.simplecreate — 二级商户免证照进件（SDK setBizModel）
     */
    R<String> zftSimplecreate(AlipayZftMerchantSimplecreateDto request);

    /**
     * ant.merchant.expand.order.query — 商户申请单查询
     *
     * @param orderId 申请单 id（支付宝 order_id）
     */
    R<String> orderQuery(String orderId);

    /**
     * ant.merchant.expand.indirect.zft.modify — 二级商户信息修改
     */
    R<String> zftModify(AlipayZftBizRequestDto request) throws AlipayApiException;

    /**
     * ant.merchant.expand.indirect.supplement.create — 申请单补件
     */
    R<String> supplementCreate(AlipayZftBizRequestDto request);

    /**
     * ant.merchant.expand.indirect.image.upload — 图片上传
     */
    R<String> imageUpload(Integer storeId, String imageType, MultipartFile imageContent,
                          String appId, String appAuthToken, String apiVersion) throws AlipayApiException;
}
