Browse Source

微信错误编码

chenyongxing 8 years ago
parent
commit
7eee848c5b

+ 1 - 0
common/common-rest-model/src/main/java/com/yihu/jw/restmodel/wx/WxContants.java

@ -43,6 +43,7 @@ public class WxContants {
        public static final String message_fail_parentMenu_is_to_much="parentMenu is to much";//子菜单数目过多
        public static final String message_fail_name_is_to_long="name is to long";
        public static final String message_fail_status_is_null="status is null";
        public static final String message_fail_WxMenu_is_no_exist="menu is no exist";//微信菜单未配置
        public static final String message_success_update="wxMenu update success";
        public static final String message_success_delete="wxMenu delete success";

+ 644 - 0
svr/svr-base/src/main/java/com/yihu/jw/wx/WechatResponse.java

@ -0,0 +1,644 @@
package com.yihu.jw.wx;
/**
 * Created by Administrator on 2017/5/27 0027.
 */
public class WechatResponse {
    /**
     * 微信返回值
     * 具体见   https://mp.weixin.qq.com/wiki
     *  -1       系统繁忙,此时请开发者稍候再试
     *  0        请求成功
     *  40001    获取access_token时AppSecret错误,或者access_token无效。请开发者认真比对AppSecret的正确性,或查看是否正在为恰当的公众号调用接口
     *  40002    不合法的凭证类型
     *  40003    不合法的OpenID,请开发者确认OpenID(该用户)是否已关注公众号,或是否是其他公众号的OpenID
     *  40004    不合法的媒体文件类型
     *  40005    不合法的文件类型
     *  40006    不合法的文件大小
     *  40007    不合法的媒体文件id
     *  40008    不合法的消息类型
     *  40009    不合法的图片文件大小
     *  40010    不合法的语音文件大小
     *  40011    不合法的视频文件大小
     *  40012    不合法的缩略图文件大小
     *  40013    不合法的AppID,请开发者检查AppID的正确性,避免异常字符,注意大小写
     *  40014    不合法的access_token,请开发者认真比对access_token的有效性(如是否过期),或查看是否正在为恰当的公众号调用接口
     *  40015    不合法的菜单类型
     *  40016    不合法的按钮个数
     *  40017    不合法的按钮个数
     *  40018    不合法的按钮名字长度
     *  40019    不合法的按钮KEY长度
     *  40020    不合法的按钮URL长度
     *  40021    不合法的菜单版本号
     *  40022    不合法的子菜单级数
     *  40023    不合法的子菜单按钮个数
     *  40024    不合法的子菜单按钮类型
     *  40025    不合法的子菜单按钮名字长度
     *  40026    不合法的子菜单按钮KEY长度
     *  40027    不合法的子菜单按钮URL长度
     *  40028    不合法的自定义菜单使用用户
     *  40029    不合法的oauth_code
     *  40030    不合法的refresh_token
     *  40031    不合法的openid列表
     *  40032    不合法的openid列表长度
     *  40033    不合法的请求字符,不能包含\  uxxxx格式的字符
     *  40035    不合法的参数
     *  40038    不合法的请求格式
     *  40039    不合法的URL长度
     *  40050    不合法的分组id
     *  40051    分组名字不合法
     *  40060    删除单篇图文时,指定的 article_idx 不合法
     *  40117    分组名字不合法
     *  40118    media_id大小不合法
     *  40119    button类型错误
     *  40120    button类型错误
     *  40121    不合法的media_id类型
     *  40132    微信号不合法
     *  40137    不支持的图片格式
     *  40155    请勿添加其他公众号的主页链接
     *  41001    缺少access_token参数
     *  41002    缺少appid参数
     *  41003    缺少refresh_token参数
     *  41004    缺少secret参数
     *  41005    缺少多媒体文件数据
     *  41006    缺少media_id参数
     *  41007    缺少子菜单数据
     *  41008    缺少oauth code
     *  41009    缺少openid
     *  42001    access_token超时,请检查access_token的有效期,请参考基础支持-获取access_token中,对access_token的详细机制说明
     *  42002    refresh_token超时
     *  42003    oauth_code超时
     *  42007    用户修改微信密码,accesstoken和refreshtoken失效,需要重新授权
     *  43001    需要GET请求
     *  43002    需要POST请求
     *  43003    需要HTTPS请求
     *  43004    需要接收者关注
     *  43005    需要好友关系
     *  43019    需要将接收者从黑名单中移除
     *  44001    多媒体文件为空
     *  44002    POST的数据包为空
     *  44003    图文消息内容为空
     *  44004    文本消息内容为空
     *  45001    多媒体文件大小超过限制
     *  45002    消息内容超过限制
     *  45003    标题字段超过限制
     *  45004    描述字段超过限制
     *  45005    链接字段超过限制
     *  45006    图片链接字段超过限制
     *  45007    语音播放时间超过限制
     *  45008    图文消息超过限制
     *  45009    接口调用超过限制
     *  45010    创建菜单个数超过限制
     *  45011    API调用太频繁,请稍候再试
     *  45015    回复时间超过限制
     *  45016    系统分组,不允许修改
     *  45017    分组名字过长
     *  45018    分组数量超过上限
     *  45047    客服接口下行条数超过上限
     *  46001    不存在媒体数据
     *  46002    不存在的菜单版本
     *  46003    不存在的菜单数据
     *  46004    不存在的用户
     *  47001    解析JSON/XML内容错误
     *  48001    api功能未授权,请确认公众号已获得该接口,可以在公众平台官网-开发者中心页中查看接口权限
     *  48002    粉丝拒收消息(粉丝在公众号选项中,关闭了“接收消息”)
     *  48004    api接口被封禁,请登录mp.weixin.qq.com查看详情
     *  48005    api禁止删除被自动回复和自定义菜单引用的素材
     *  48006    api禁止清零调用次数,因为清零次数达到上限
     *  50001    用户未授权该api
     *  50002    用户受限,可能是违规后接口被封禁
     *  61451    参数错误(invalid parameter)
     *  61452    无效客服账号(invalid kf_account)
     *  61453    客服帐号已存在(kf_account exsited)
     *  61454    客服帐号名长度超过限制(仅允许10个英文字符,不包括@及@后的公众号的微信号)(invalid   kf_acount length)
     *  61455    客服帐号名包含非法字符(仅允许英文+数字)(illegal character in     kf_account)
     *  61456    客服帐号个数超过限制(10个客服账号)(kf_account count exceeded)
     *  61457    无效头像文件类型(invalid   file type)
     *  61450    系统错误(system error)
     *  61500    日期格式错误
     *  65301    不存在此menuid对应的个性化菜单
     *  65302    没有相应的用户
     *  65303    没有默认菜单,不能创建个性化菜单
     *  65304    MatchRule信息为空
     *  65305    个性化菜单数量受限
     *  65306    不支持个性化菜单的帐号
     *  65307    个性化菜单信息为空
     *  65308    包含没有响应类型的button
     *  65309    个性化菜单开关处于关闭状态
     *  65310    填写了省份或城市信息,国家信息不能为空
     *  65311    填写了城市信息,省份信息不能为空
     *  65312    不合法的国家信息
     *  65313    不合法的省份信息
     *  65314    不合法的城市信息
     *  65316    该公众号的菜单设置了过多的域名外跳(最多跳转到3个域名的链接)
     *  65317    不合法的URL
     *  9001001    POST数据参数不合法
     *  9001002    远端服务不可用
     *  9001003    Ticket不合法
     *  9001004    获取摇周边用户信息失败
     *  9001005    获取商户信息失败
     *  9001006    获取OpenID失败
     *  9001007    上传文件缺失
     *  9001008    上传素材的文件类型不合法
     *  9001009    上传素材的文件尺寸不合法
     *  9001010    上传失败
     *  9001020    帐号不合法
     *  9001021    已有设备激活率低于50%,不能新增设备
     *  9001022    设备申请数不合法,必须为大于0的数字
     *  9001023    已存在审核中的设备ID申请
     *  9001024    一次查询设备ID数量不能超过50
     *  9001025    设备ID不合法
     *  9001026    页面ID不合法
     *  9001027    页面参数不合法
     *  9001028    一次删除页面ID数量不能超过10
     *  9001029    页面已应用在设备中,请先解除应用关系再删除
     *  9001030    一次查询页面ID数量不能超过50
     *  9001031    时间区间不合法
     *  9001032    保存设备与页面的绑定关系参数错误
     *  9001033    门店ID不合法
     *  9001034    设备备注信息过长
     *  9001035    设备申请参数不合法
     *  9001036    查询起始值begin不合法
     */
    private Integer resultCode;
    /** 返回码对应信息 ***/
    private String msg;
    public Integer getResultCode() {
        return resultCode;
    }
    public void setResultCode(Integer resultCode) {
        this.resultCode = resultCode;
    }
    public WechatResponse(Integer resultCode) {
        this.resultCode = resultCode;
    }
    public String getMsg() {
        switch (resultCode) {
        case -1:
            msg="系统繁忙,此时请开发者稍候再试";
            break;
        case 0:
            msg="请求成功";
            break;
        case 40001:
            msg="获取access_token时AppSecret错误,或者access_token无效。请开发者认真比对AppSecret的正确性,或查看是否正在为恰当的公众号调用接口";
            break;
        case 40002:
            msg="不合法的凭证类型";
            break;
        case 40003:
            msg="不合法的OpenID,请开发者确认OpenID(该用户)是否已关注公众号,或是否是其他公众号的OpenID";
            break;
        case 40004:
            msg="不合法的媒体文件类型";
            break;
        case 40005:
            msg="不合法的文件类型";
            break;
        case 40006:
            msg="不合法的文件大小";
            break;
        case 40007:
            msg="不合法的媒体文件id";
            break;
        case 40008:
            msg="不合法的消息类型";
            break;
        case 40009:
            msg="不合法的图片文件大小";
            break;
        case 40010:
            msg="不合法的语音文件大小";
            break;
        case 40011:
            msg="不合法的视频文件大小";
            break;
        case 40012:
            msg="不合法的缩略图文件大小";
            break;
        case 40013:
            msg="不合法的AppID,请开发者检查AppID的正确性,避免异常字符,注意大小写";
            break;
        case 40014:
            msg="不合法的access_token,请开发者认真比对access_token的有效性(如是否过期),或查看是否正在为恰当的公众号调用接口";
            break;
        case 40015:
            msg="不合法的菜单类型";
            break;
        case 40016:
            msg="不合法的按钮个数";
            break;
        case 40017:
            msg="不合法的按钮个数";
            break;
        case 40018:
            msg="不合法的按钮名字长度";
            break;
        case 40019:
            msg="不合法的按钮KEY长度";
            break;
        case 40020:
            msg="不合法的按钮URL长度";
            break;
        case 40021:
            msg="不合法的菜单版本号";
            break;
        case 40022:
            msg="不合法的子菜单级数";
            break;
        case 40023:
            msg="不合法的子菜单按钮个数";
            break;
        case 40024:
            msg="不合法的子菜单按钮类型";
            break;
        case 40025:
            msg="不合法的子菜单按钮名字长度";
            break;
        case 40026:
            msg="不合法的子菜单按钮KEY长度";
            break;
        case 40027:
            msg="不合法的子菜单按钮URL长度";
            break;
        case 40028:
            msg="不合法的自定义菜单使用用户";
            break;
        case 40029:
            msg="不合法的oauth_code";
            break;
        case 40030:
            msg="不合法的refresh_token";
            break;
        case 40031:
            msg="不合法的openid列表";
            break;
        case 40032:
            msg="不合法的openid列表长度";
            break;
        case 40033:
            msg="不合法的请求字符,不能包含\\uxxxx格式的字符";
            break;
        case 40035:
            msg="不合法的参数";
            break;
        case 40038:
            msg="不合法的请求格式";
            break;
        case 40039:
            msg="不合法的URL长度";
            break;
        case 40050:
            msg="不合法的分组id";
            break;
        case 40051:
            msg="分组名字不合法";
            break;
        case 40060:
            msg="删除单篇图文时,指定的 article_idx 不合法";
            break;
        case 40117:
            msg="分组名字不合法";
            break;
        case 40118:
            msg="media_id大小不合法";
            break;
        case 40119:
            msg="button类型错误";
            break;
        case 40120:
            msg="button类型错误";
            break;
        case 40121:
            msg="不合法的media_id类型";
            break;
        case 40132:
            msg="微信号不合法";
            break;
        case 40137:
            msg="不支持的图片格式";
            break;
        case 40155:
            msg="请勿添加其他公众号的主页链接";
            break;
        case 41001:
            msg="缺少access_token参数";
            break;
        case 41002:
            msg="缺少appid参数";
            break;
        case 41003:
            msg="缺少refresh_token参数";
            break;
        case 41004:
            msg="缺少secret参数";
            break;
        case 41005:
            msg="缺少多媒体文件数据";
            break;
        case 41006:
            msg="缺少media_id参数";
            break;
        case 41007:
            msg="缺少子菜单数据";
            break;
        case 41008:
            msg="缺少oauth code";
            break;
        case 41009:
            msg="缺少openid";
            break;
        case 42001:
            msg="access_token超时,请检查access_token的有效期,请参考基础支持-获取access_token中,对access_token的详细机制说明";
            break;
        case 42002:
            msg="refresh_token超时";
            break;
        case 42003:
            msg="oauth_code超时";
            break;
        case 42007:
            msg="用户修改微信密码,accesstoken和refreshtoken失效,需要重新授权";
            break;
        case 43001:
            msg="需要GET请求";
            break;
        case 43002:
            msg="需要POST请求";
            break;
        case 43003:
            msg="需要HTTPS请求";
            break;
        case 43004:
            msg="需要接收者关注";
            break;
        case 43005:
            msg="需要好友关系";
            break;
        case 43019:
            msg="需要将接收者从黑名单中移除";
            break;
        case 44001:
            msg="多媒体文件为空";
            break;
        case 44002:
            msg="POST的数据包为空";
            break;
        case 44003:
            msg="图文消息内容为空";
            break;
        case 44004:
            msg="文本消息内容为空";
            break;
        case 45001:
            msg="多媒体文件大小超过限制";
            break;
        case 45002:
            msg="消息内容超过限制";
            break;
        case 45003:
            msg="标题字段超过限制";
            break;
        case 45004:
            msg="描述字段超过限制";
            break;
        case 45005:
            msg="链接字段超过限制";
            break;
        case 45006:
            msg="图片链接字段超过限制";
            break;
        case 45007:
            msg="语音播放时间超过限制";
            break;
        case 45008:
            msg="图文消息超过限制";
            break;
        case 45009:
            msg="接口调用超过限制";
            break;
        case 45010:
            msg="创建菜单个数超过限制";
            break;
        case 45011:
            msg="API调用太频繁,请稍候再试";
            break;
        case 45015:
            msg="回复时间超过限制";
            break;
        case 45016:
            msg="系统分组,不允许修改";
            break;
        case 45017:
            msg="分组名字过长";
            break;
        case 45018:
            msg="分组数量超过上限";
            break;
        case 45047:
            msg="客服接口下行条数超过上限";
            break;
        case 46001:
            msg="不存在媒体数据";
            break;
        case 46002:
            msg="不存在的菜单版本";
            break;
        case 46003:
            msg="不存在的菜单数据";
            break;
        case 46004:
            msg="不存在的用户";
            break;
        case 47001:
            msg="解析JSON/XML内容错误";
            break;
        case 48001:
            msg="api功能未授权,请确认公众号已获得该接口,可以在公众平台官网-开发者中心页中查看接口权限";
            break;
        case 48002:
            msg="粉丝拒收消息(粉丝在公众号选项中,关闭了“接收消息”)";
            break;
        case 48004:
            msg="api接口被封禁,请登录mp.weixin.qq.com查看详情";
            break;
        case 48005:
            msg="api禁止删除被自动回复和自定义菜单引用的素材";
            break;
        case 48006:
            msg="api禁止清零调用次数,因为清零次数达到上限";
            break;
        case 50001:
            msg="用户未授权该api";
            break;
        case 50002:
            msg="用户受限,可能是违规后接口被封禁";
            break;
        case 61451:
            msg="参数错误(invalid parameter)";
            break;
        case 61452:
            msg="无效客服账号(invalid kf_account)";
            break;
        case 61453:
            msg="客服帐号已存在(kf_account exsited)";
            break;
        case 61454:
            msg="客服帐号名长度超过限制(仅允许10个英文字符,不包括@及@后的公众号的微信号)(invalid kf_acount length)";
            break;
        case 61455:
            msg="客服帐号名包含非法字符(仅允许英文+数字)(illegal character in kf_account)";
            break;
        case 61456:
            msg="客服帐号个数超过限制(10个客服账号)(kf_account count exceeded)";
            break;
        case 61457:
            msg="无效头像文件类型(invalid file type)";
            break;
        case 61450:
            msg="系统错误(system error)";
            break;
        case 61500:
            msg="日期格式错误";
            break;
        case 65301:
            msg="不存在此menuid对应的个性化菜单";
            break;
        case 65302:
            msg="没有相应的用户";
            break;
        case 65303:
            msg="没有默认菜单,不能创建个性化菜单";
            break;
        case 65304:
            msg="MatchRule信息为空";
            break;
        case 65305:
            msg="个性化菜单数量受限";
            break;
        case 65306:
            msg="不支持个性化菜单的帐号";
            break;
        case 65307:
            msg="个性化菜单信息为空";
            break;
        case 65308:
            msg="包含没有响应类型的button";
            break;
        case 65309:
            msg="个性化菜单开关处于关闭状态";
            break;
        case 65310:
            msg="填写了省份或城市信息,国家信息不能为空";
            break;
        case 65311:
            msg="填写了城市信息,省份信息不能为空";
            break;
        case 65312:
            msg="不合法的国家信息";
            break;
        case 65313:
            msg="不合法的省份信息";
            break;
        case 65314:
            msg="不合法的城市信息";
            break;
        case 65316:
            msg="该公众号的菜单设置了过多的域名外跳(最多跳转到3个域名的链接)";
            break;
        case 65317:
            msg="不合法的URL";
            break;
        case 9001001:
            msg="POST数据参数不合法";
            break;
        case 9001002:
            msg="远端服务不可用";
            break;
        case 9001003:
            msg="Ticket不合法";
            break;
        case 9001004:
            msg="获取摇周边用户信息失败";
            break;
        case 9001005:
            msg="获取商户信息失败";
            break;
        case 9001006:
            msg="获取OpenID失败";
            break;
        case 9001007:
            msg="上传文件缺失";
            break;
        case 9001008:
            msg="上传素材的文件类型不合法";
            break;
        case 9001009:
            msg="上传素材的文件尺寸不合法";
            break;
        case 9001010:
            msg="上传失败";
            break;
        case 9001020:
            msg="帐号不合法";
            break;
        case 9001021:
            msg="已有设备激活率低于50%,不能新增设备";
            break;
        case 9001022:
            msg="设备申请数不合法,必须为大于0的数字";
            break;
        case 9001023:
            msg="已存在审核中的设备ID申请";
            break;
        case 9001024:
            msg="一次查询设备ID数量不能超过50";
            break;
        case 9001025:
            msg="设备ID不合法";
            break;
        case 9001026:
            msg="页面ID不合法";
            break;
        case 9001027:
            msg="页面参数不合法";
            break;
        case 9001028:
            msg="一次删除页面ID数量不能超过10";
            break;
        case 9001029:
            msg="页面已应用在设备中,请先解除应用关系再删除";
            break;
        case 9001030:
            msg="一次查询页面ID数量不能超过50";
            break;
        case 9001031:
            msg="时间区间不合法";
            break;
        case 9001032:
            msg="保存设备与页面的绑定关系参数错误";
            break;
        case 9001033:
            msg="门店ID不合法";
            break;
        case 9001034:
            msg="设备备注信息过长";
            break;
        case 9001035:
            msg="设备申请参数不合法";
            break;
        case 9001036:
            msg="查询起始值begin不合法";
            break;
        default:
            msg = resultCode+":其他错误";
            break;
        }
        return msg;
    }
}

+ 5 - 5
svr/svr-base/src/main/java/com/yihu/jw/wx/controller/WxMenuController.java

@ -5,6 +5,7 @@ import com.yihu.jw.restmodel.common.EnvelopRestController;
import com.yihu.jw.restmodel.exception.ApiException;
import com.yihu.jw.restmodel.wx.MWxMenu;
import com.yihu.jw.restmodel.wx.WxContants;
import com.yihu.jw.wx.WechatResponse;
import com.yihu.jw.wx.model.WxMenu;
import com.yihu.jw.wx.model.WxWechat;
import com.yihu.jw.wx.service.WxMenuService;
@ -141,11 +142,10 @@ public class WxMenuController extends EnvelopRestController {
            @RequestParam(value = "wechatCode", required = true)String wechatCode){
        try{
            JSONObject result = wxMenuService.createWechatMenu(wechatCode);
            if(result != null && result.get("errcode").toString().equals("0") && result.getString("errmsg").equals("ok")){
                return Envelop.getSuccess("创建成功",result.toString() );
            }else{
                return Envelop.getSuccess("创建失败",result.toString() );
            }
            String errcode = result.get("errcode").toString();
            WechatResponse wechatResponse = new WechatResponse(Integer.valueOf(errcode));
            String msg = wechatResponse.getMsg();
            return Envelop.getSuccess("成功",msg);
        }catch (Exception e){
            return Envelop.getSuccess("创建失败",e );
        }

+ 15 - 7
svr/svr-base/src/main/java/com/yihu/jw/wx/controller/WxTemplateController.java

@ -5,6 +5,7 @@ import com.yihu.jw.restmodel.common.EnvelopRestController;
import com.yihu.jw.restmodel.exception.ApiException;
import com.yihu.jw.restmodel.wx.MWxTemplate;
import com.yihu.jw.restmodel.wx.WxContants;
import com.yihu.jw.wx.WechatResponse;
import com.yihu.jw.wx.model.Miniprogram;
import com.yihu.jw.wx.model.WxTemplate;
import com.yihu.jw.wx.service.WxTemplateService;
@ -146,13 +147,20 @@ public class WxTemplateController extends EnvelopRestController {
            @ApiParam(name="data",value="json字符串")
            @RequestParam String data
    ){
        Miniprogram miniprogram = null;
        if(StringUtils.isNotBlank(appid)&&StringUtils.isNotBlank(pagepath)){
            miniprogram = new Miniprogram();
            miniprogram.setAppid(appid);
            miniprogram.setPagepath(pagepath);
        try {
            Miniprogram miniprogram = null;
            if(StringUtils.isNotBlank(appid)&&StringUtils.isNotBlank(pagepath)){
                miniprogram = new Miniprogram();
                miniprogram.setAppid(appid);
                miniprogram.setPagepath(pagepath);
            }
            JSONObject jsonObject = wxTemplateService.sendTemplateMessage(openid, templateCode, url, data, miniprogram);
            String errcode = jsonObject.get("errcode").toString();
            WechatResponse wechatResponse = new WechatResponse(Integer.valueOf(errcode));
            String msg = wechatResponse.getMsg();
            return Envelop.getSuccess("成功",msg);
        }catch (Exception exception) {
            return Envelop.getSuccess("error", exception);
        }
        JSONObject jsonObject = wxTemplateService.sendTemplateMessage(openid, templateCode, url, data, miniprogram);
        return Envelop.getSuccess("成功",jsonObject.toString());
    }
}

+ 8 - 0
svr/svr-base/src/main/java/com/yihu/jw/wx/service/WxMenuService.java

@ -101,8 +101,16 @@ public class WxMenuService extends BaseJpaService<WxMenu, WxMenuDao> {
     * @return JSONObject
     */
    public JSONObject createWechatMenu(String wechatCode) {
        WxWechat wechat = wechatService.findByCode(wechatCode);
        if(wechat==null){
            throw new ApiException(WxContants.Wechat.message_fail_wxWechat_is_no_exist, CommonContants.common_error_params_code);
        }
        //首先根据wechatCode获取菜单,然后封装成json字符串
        List<WxMenu> menus = wxMenuDao.findByWechatCode(wechatCode);
        if(menus==null){
            throw new ApiException(WxContants.WxMenu.message_fail_WxMenu_is_no_exist, CommonContants.common_error_params_code);
        }
        String menuJsonString = getMenuToString(menus, wechatCode);
        WxAccessToken wxAccessTokenByCode = wxAccessTokenService.getWxAccessTokenByCode(wechatCode);
        String token = wxAccessTokenByCode.getAccessToken();