package cn.novalon.gym.manage.member.service;

import reactor.core.publisher.Mono;

import java.util.Map;

/**
 * 微信API服务接口
 * 
 * @author 付嘉
 * @date 2026-05-01
 */
public interface WechatApiService {

    /**
     * 小程序- 通过code获取session_key/openid
     * 
     * @param code 小程序登录的code
     * @return Mono<Map<String, String>> session_keyopenidunionid
     */
    Mono<Map<String, String>> jsCode2Session(String code);

    /**
     * 获取手机号- 通过code获取手机号
     * 
     * @param code 小程序登录的code
     * @return Mono<String> ܺ手机号
     */
    Mono<String> getPhoneNumber(String code);

    /**
     * 获取Access Token
     * 
     * @param appType 应用类型miniapp-小程序mp
     * @return Mono<String> access_token
     */
    Mono<String> getAccessToken(String appType);

    /**
     * 验证签名
     * 
     * @param signature 微信签名
     * @param timestamp 创建时间
     * @param nonce 随机字符串
     * @return boolean 签名是否有效
     */
    boolean checkSignature(String signature, String timestamp, String nonce);
}
