package com.wanggs.exception;
/**
* Created by wanggs on 2017/7/1.
*/
import java.util.HashMap;
import java.util.Map;
/**
* 微信平臺(tái)支持
*
* <p>
* 通過(guò)<tt>Weixin</tt>產(chǎn)生一個(gè)請(qǐng)求對(duì)象,對(duì)應(yīng)生成一個(gè)<tt>HttpClient</tt>,
* 每次登陸產(chǎn)生一個(gè)<tt>OAuth</tt>用戶連接,使用<tt>OAuthToken</tt>
* 可以不用重復(fù)向微信平臺(tái)發(fā)送登陸請(qǐng)求诫给,在沒(méi)有過(guò)期時(shí)間內(nèi)民晒,可繼續(xù)請(qǐng)求。</p>
*
* @author weixin4j<weixin4j@ansitech.com>
*/
public class WeixinException {
/**
* 全局返回碼說(shuō)明
*/
private final static Map<Integer, String> returnCodeMap = new HashMap<Integer, String>();
static {
returnCodeMap.put(-1, "系統(tǒng)繁忙伐脖,此時(shí)請(qǐng)開(kāi)發(fā)者稍候再試");
returnCodeMap.put(0, "請(qǐng)求成功");
returnCodeMap.put(40001, "獲取access_token時(shí)AppSecret錯(cuò)誤旬痹,或者access_token無(wú)效搞隐。請(qǐng)開(kāi)發(fā)者認(rèn)真比對(duì)AppSecret的正確性,或查看是否正在為恰當(dāng)?shù)墓娞?hào)調(diào)用接口");
returnCodeMap.put(40002, "不合法的憑證類型");
returnCodeMap.put(40003, "不合法的OpenID译秦,請(qǐng)開(kāi)發(fā)者確認(rèn)OpenID(該用戶)是否已關(guān)注公眾號(hào)峡捡,或是否是其他公眾號(hào)的OpenID");
returnCodeMap.put(40004, "不合法的媒體文件類型");
returnCodeMap.put(40005, "不合法的文件類型");
returnCodeMap.put(40006, "不合法的文件大小");
returnCodeMap.put(40007, "不合法的媒體文件id");
returnCodeMap.put(40008, "不合法的消息類型");
returnCodeMap.put(40009, "不合法的圖片文件大小");
returnCodeMap.put(40010, "不合法的語(yǔ)音文件大小");
returnCodeMap.put(40011, "不合法的視頻文件大小");
returnCodeMap.put(40012, "不合法的縮略圖文件大小");
returnCodeMap.put(40013, "不合法的AppID,請(qǐng)開(kāi)發(fā)者檢查AppID的正確性诀浪,避免異常字符棋返,注意大小寫(xiě)");
returnCodeMap.put(40014, "不合法的access_token,請(qǐng)開(kāi)發(fā)者認(rèn)真比對(duì)access_token的有效性(如是否過(guò)期)雷猪,或查看是否正在為恰當(dāng)?shù)墓娞?hào)調(diào)用接口");
returnCodeMap.put(40015, "不合法的菜單類型");
returnCodeMap.put(40016, "不合法的按鈕個(gè)數(shù)");
returnCodeMap.put(40017, "不合法的按鈕個(gè)數(shù)");
returnCodeMap.put(40018, "不合法的按鈕名字長(zhǎng)度");
returnCodeMap.put(40019, "不合法的按鈕KEY長(zhǎng)度");
returnCodeMap.put(40020, "不合法的按鈕URL長(zhǎng)度");
returnCodeMap.put(40021, "不合法的菜單版本號(hào)");
returnCodeMap.put(40022, "不合法的子菜單級(jí)數(shù)");
returnCodeMap.put(40023, "不合法的子菜單按鈕個(gè)數(shù)");
returnCodeMap.put(40024, "不合法的子菜單按鈕類型");
returnCodeMap.put(40025, "不合法的子菜單按鈕名字長(zhǎng)度");
returnCodeMap.put(40026, "不合法的子菜單按鈕KEY長(zhǎng)度");
returnCodeMap.put(40027, "不合法的子菜單按鈕URL長(zhǎng)度");
returnCodeMap.put(40028, "不合法的自定義菜單使用用戶");
returnCodeMap.put(40029, "不合法的oauth_code");
returnCodeMap.put(40030, "不合法的refresh_token");
returnCodeMap.put(40031, "不合法的openid列表");
returnCodeMap.put(40032, "不合法的openid列表長(zhǎng)度");
returnCodeMap.put(40035, "不合法的參數(shù)");
returnCodeMap.put(40038, "不合法的請(qǐng)求格式");
returnCodeMap.put(40039, "不合法的URL長(zhǎng)度");
returnCodeMap.put(40050, "不合法的分組id");
returnCodeMap.put(40051, "分組名字不合法");
returnCodeMap.put(40117, "分組名字不合法");
returnCodeMap.put(40118, "media_id大小不合法");
returnCodeMap.put(40119, "button類型錯(cuò)誤");
returnCodeMap.put(40120, "button類型錯(cuò)誤");
returnCodeMap.put(40121, "不合法的media_id類型");
returnCodeMap.put(40132, "微信號(hào)不合法");
returnCodeMap.put(40137, "不支持的圖片格式");
returnCodeMap.put(41001, "缺少access_token參數(shù)");
returnCodeMap.put(41002, "缺少appid參數(shù)");
returnCodeMap.put(41003, "缺少refresh_token參數(shù)");
returnCodeMap.put(41004, "缺少secret參數(shù)");
returnCodeMap.put(41005, "缺少多媒體文件數(shù)據(jù)");
returnCodeMap.put(41006, "缺少media_id參數(shù)");
returnCodeMap.put(41007, "缺少子菜單數(shù)據(jù)");
returnCodeMap.put(41008, "缺少oauth code");
returnCodeMap.put(41009, "缺少openid");
returnCodeMap.put(42001, "access_token超時(shí)睛竣,請(qǐng)檢查access_token的有效期,請(qǐng)參考基礎(chǔ)支持-獲取access_token中求摇,對(duì)access_token的詳細(xì)機(jī)制說(shuō)明");
returnCodeMap.put(42002, "refresh_token超時(shí)");
returnCodeMap.put(42003, "oauth_code超時(shí)");
returnCodeMap.put(42007, "用戶修改微信密碼射沟,accesstoken和refreshtoken失效,需要重新授權(quán)");
returnCodeMap.put(43001, "需要GET請(qǐng)求");
returnCodeMap.put(43002, "需要POST請(qǐng)求");
returnCodeMap.put(43003, "需要HTTPS請(qǐng)求");
returnCodeMap.put(43004, "需要接收者關(guān)注");
returnCodeMap.put(43005, "需要好友關(guān)系");
returnCodeMap.put(44001, "多媒體文件為空");
returnCodeMap.put(44002, "POST的數(shù)據(jù)包為空");
returnCodeMap.put(44003, "圖文消息內(nèi)容為空");
returnCodeMap.put(44004, "文本消息內(nèi)容為空");
returnCodeMap.put(45001, "多媒體文件大小超過(guò)限制");
returnCodeMap.put(45002, "消息內(nèi)容超過(guò)限制");
returnCodeMap.put(45003, "標(biāo)題字段超過(guò)限制");
returnCodeMap.put(45004, "描述字段超過(guò)限制");
returnCodeMap.put(45005, "鏈接字段超過(guò)限制");
returnCodeMap.put(45006, "圖片鏈接字段超過(guò)限制");
returnCodeMap.put(45007, "語(yǔ)音播放時(shí)間超過(guò)限制");
returnCodeMap.put(45008, "圖文消息超過(guò)限制");
returnCodeMap.put(45009, "接口調(diào)用超過(guò)限制");
returnCodeMap.put(45010, "創(chuàng)建菜單個(gè)數(shù)超過(guò)限制");
returnCodeMap.put(45015, "回復(fù)時(shí)間超過(guò)限制");
returnCodeMap.put(45016, "系統(tǒng)分組与境,不允許修改");
returnCodeMap.put(45017, "分組名字過(guò)長(zhǎng)");
returnCodeMap.put(45018, "分組數(shù)量超過(guò)上限");
returnCodeMap.put(45047, "客服接口下行條數(shù)超過(guò)上限");
returnCodeMap.put(46001, "不存在媒體數(shù)據(jù)");
returnCodeMap.put(46002, "不存在的菜單版本");
returnCodeMap.put(46003, "不存在的菜單數(shù)據(jù)");
returnCodeMap.put(46004, "不存在的用戶");
returnCodeMap.put(47001, "解析JSON/XML內(nèi)容錯(cuò)誤");
returnCodeMap.put(48001, "api功能未授權(quán)验夯,請(qǐng)確認(rèn)公眾號(hào)已獲得該接口,可以在公眾平臺(tái)官網(wǎng)-開(kāi)發(fā)者中心頁(yè)中查看接口權(quán)限");
returnCodeMap.put(48004, "api接口被封禁摔刁,請(qǐng)登錄mp.weixin.qq.com查看詳情");
returnCodeMap.put(48005, "api禁止刪除被自動(dòng)回復(fù)和自定義菜單引用的素材");
returnCodeMap.put(48006, "api禁止清零調(diào)用次數(shù)挥转,因?yàn)榍辶愦螖?shù)達(dá)到上限");
returnCodeMap.put(50001, "用戶未授權(quán)該api");
returnCodeMap.put(50002, "用戶受限,可能是違規(guī)后接口被封禁");
returnCodeMap.put(61451, "參數(shù)錯(cuò)誤(invalid parameter)");
returnCodeMap.put(61452, "無(wú)效客服賬號(hào)(invalid kf_account)");
returnCodeMap.put(61453, "客服帳號(hào)已存在(kf_account exsited)");
returnCodeMap.put(61454, "客服帳號(hào)名長(zhǎng)度超過(guò)限制(僅允許10個(gè)英文字符,不包括@及@后的公眾號(hào)的微信號(hào))(invalid kf_acount length)");
returnCodeMap.put(61455, "客服帳號(hào)名包含非法字符(僅允許英文+數(shù)字)(illegal character in kf_account)");
returnCodeMap.put(61456, "客服帳號(hào)個(gè)數(shù)超過(guò)限制(10個(gè)客服賬號(hào))(kf_account count exceeded)");
returnCodeMap.put(61457, "無(wú)效頭像文件類型(invalid file type)");
returnCodeMap.put(61450, "系統(tǒng)錯(cuò)誤(system error)");
returnCodeMap.put(61500, "日期格式錯(cuò)誤");
returnCodeMap.put(65301, "不存在此menuid對(duì)應(yīng)的個(gè)性化菜單");
returnCodeMap.put(65302, "沒(méi)有相應(yīng)的用戶");
returnCodeMap.put(65303, "沒(méi)有默認(rèn)菜單绑谣,不能創(chuàng)建個(gè)性化菜單");
returnCodeMap.put(65304, "MatchRule信息為空");
returnCodeMap.put(65305, "個(gè)性化菜單數(shù)量受限");
returnCodeMap.put(65306, "不支持個(gè)性化菜單的帳號(hào)");
returnCodeMap.put(65307, "個(gè)性化菜單信息為空");
returnCodeMap.put(65308, "包含沒(méi)有響應(yīng)類型的button");
returnCodeMap.put(65309, "個(gè)性化菜單開(kāi)關(guān)處于關(guān)閉狀態(tài)");
returnCodeMap.put(65310, "填寫(xiě)了省份或城市信息党窜,國(guó)家信息不能為空");
returnCodeMap.put(65311, "填寫(xiě)了城市信息,省份信息不能為空");
returnCodeMap.put(65312, "不合法的國(guó)家信息");
returnCodeMap.put(65313, "不合法的省份信息");
returnCodeMap.put(65314, "不合法的城市信息");
returnCodeMap.put(65316, "該公眾號(hào)的菜單設(shè)置了過(guò)多的域名外跳(最多跳轉(zhuǎn)到3個(gè)域名的鏈接)");
returnCodeMap.put(65317, "不合法的URL");
returnCodeMap.put(9001001, "POST數(shù)據(jù)參數(shù)不合法");
returnCodeMap.put(9001002, "遠(yuǎn)端服務(wù)不可用");
returnCodeMap.put(9001003, "Ticket不合法");
returnCodeMap.put(9001004, "獲取搖周邊用戶信息失敗");
returnCodeMap.put(9001005, "獲取商戶信息失敗");
returnCodeMap.put(9001006, "獲取OpenID失敗");
returnCodeMap.put(9001007, "上傳文件缺失");
returnCodeMap.put(9001008, "上傳素材的文件類型不合法");
returnCodeMap.put(9001009, "上傳素材的文件尺寸不合法");
returnCodeMap.put(9001010, "上傳失敗");
returnCodeMap.put(9001020, "帳號(hào)不合法");
returnCodeMap.put(9001021, "已有設(shè)備激活率低于50%借宵,不能新增設(shè)備");
returnCodeMap.put(9001022, "設(shè)備申請(qǐng)數(shù)不合法幌衣,必須為大于0的數(shù)字");
returnCodeMap.put(9001023, "已存在審核中的設(shè)備ID申請(qǐng)");
returnCodeMap.put(9001024, "一次查詢?cè)O(shè)備ID數(shù)量不能超過(guò)50");
returnCodeMap.put(9001025, "設(shè)備ID不合法");
returnCodeMap.put(9001026, "頁(yè)面ID不合法");
returnCodeMap.put(9001027, "頁(yè)面參數(shù)不合法");
returnCodeMap.put(9001028, "一次刪除頁(yè)面ID數(shù)量不能超過(guò)10");
returnCodeMap.put(9001029, "頁(yè)面已應(yīng)用在設(shè)備中,請(qǐng)先解除應(yīng)用關(guān)系再刪除");
returnCodeMap.put(9001030, "一次查詢頁(yè)面ID數(shù)量不能超過(guò)50");
returnCodeMap.put(9001031, "時(shí)間區(qū)間不合法");
returnCodeMap.put(9001032, "保存設(shè)備與頁(yè)面的綁定關(guān)系參數(shù)錯(cuò)誤");
returnCodeMap.put(9001033, "門(mén)店ID不合法");
returnCodeMap.put(9001034, "設(shè)備備注信息過(guò)長(zhǎng)");
returnCodeMap.put(9001035, "設(shè)備申請(qǐng)參數(shù)不合法");
returnCodeMap.put(9001036, "查詢起始值begin不合法");
}
/**
* 異常代碼識(shí)別
*
* @param statusCode 異常代碼
* @return 錯(cuò)誤信息
*/
public static String getCause(int statusCode) {
if (returnCodeMap.containsKey(statusCode)) {
//根據(jù)錯(cuò)誤碼返回錯(cuò)誤代碼
return statusCode + ":" + returnCodeMap.get(statusCode);
}
return statusCode + ":操作異常";
}
}
pay
package com.wanggs.core.util;
/**
* Created by Wgs on 2017/8/6.
*/
public class WeiXinPayUrl {
/**
* 微信預(yù)支付url
*/
public static final String PRE_PAY_API = "https://api.mch.weixin.qq.com/pay/unifiedorder";
/**
* 刷卡支付url
*/
public static final String MICRO_PAY_API = "https://api.mch.weixin.qq.com/pay/micropay";
/**
* 支付查詢url
*/
public static final String PAY_QUERY_API = "https://api.mch.weixin.qq.com/pay/orderquery";
/**
* 退款url
*/
public static final String REFUND_API = "https://api.mch.weixin.qq.com/secapi/pay/refund";
/**
* 退款查詢url
*/
public static final String REFUND_QUERY_API = "https://api.mch.weixin.qq.com/pay/refundquery";
/**
* 撤銷url
*/
public static final String REVERSE_API = "https://api.mch.weixin.qq.com/secapi/pay/reverse";
/**
* 關(guān)閉訂單url
*/
public static final String CLOSE_ORDER_API = "https://api.mch.weixin.qq.com/pay/closeorder";
/**
* 下載對(duì)賬單url
*/
public static final String DOWNLOAD_BILL_API = "https://api.mch.weixin.qq.com/pay/downloadbill";
/**
* 統(tǒng)計(jì)上報(bào)url
*/
public static final String REPORT_API = "https://api.mch.weixin.qq.com/payitil/report";
private WeiXinPayUrl() {
}
}