package com.hzs.third.pay.util;

import lombok.extern.slf4j.Slf4j;

import java.util.Map;

/**
 * 微信操作工具
 */
@Slf4j
public class WeChatUtil {

    /**
     * 微信返回errorCode处理
     *
     * @param errorCode 错误编号
     * @return
     */
    public static String handErrorCode(Integer errorCode) {
        // 调用失败处理（https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/login/auth.code2Session.html）
        if (null == errorCode || 0 == errorCode) {
            // 请求成功
            return null;
        } else if (-1 == errorCode) {
            // 系统繁忙，此时请开发者稍候再试
            log.error("WeChat 请求异常 errorCode: {} ! msg: {}", errorCode, "系统繁忙，此时请开发者稍候再试");
            return "调用微信超时，请重试";
        } else if (40029 == errorCode) {
            // code 无效
            log.error("WeChat 请求异常 errorCode: {} ! msg: {}", errorCode, "code 无效");
            return "微信授权已失效，请重试";
        } else if (45011 == errorCode) {
            // 频率限制，每个用户每分钟100次
            log.error("WeChat 请求异常 errorCode: {} ! msg: {}", errorCode, "频率限制，每个用户每分钟100次");
            return "调用微信超时，请重试";
        } else if (40226 == errorCode) {
            // 高风险等级用户，小程序登录拦截
            log.error("WeChat 请求异常 errorCode: {} ! msg: {}", errorCode, "高风险等级用户，小程序登录拦截");
            return "用户账号存在风险，暂时无法访问";
        } else if (40163 == errorCode) {
            // 临时登录凭证重复使用
            log.error("WeChat 请求异常 errorCode: {} ! msg: {}", errorCode, "临时登录凭证重复使用");
            return "登录凭证重复使用";
        }
        log.error("WeChat 请求异常 errorCode: {} !", errorCode);
        return "调用微信超时，请重试";
    }


//    /**
//     * 微信返回结果error处理
//     *
//     * @param result 微信返回结果
//     * @return
//     */
//    public static String handResultError(Map<String, String> result) {
//        // 请求结果处理
//        String returnCode = result.get("return_code");
//        String returnMsg = result.get("return_msg");
//        if (!WxPayKit.codeIsOk(returnCode)) {
//            return returnMsg;
//        }
//
//        // 请求成功，业务结果处理
//        String resultCode = result.get("result_code");
//        String errCodeDes = result.get("err_code_des");
//        if (!WxPayKit.codeIsOk(resultCode)) {
//            return errCodeDes;
//        }
//        return null;
//    }


}
