微信封裝

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() {
    }
}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末壤玫,一起剝皮案震驚了整個(gè)濱河市豁护,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌欲间,老刑警劉巖楚里,帶你破解...
    沈念sama閱讀 221,576評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異括改,居然都是意外死亡腻豌,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,515評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)嘱能,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)吝梅,“玉大人,你說(shuō)我怎么就攤上這事惹骂∷招” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,017評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵对粪,是天一觀的道長(zhǎng)右冻。 經(jīng)常有香客問(wèn)我,道長(zhǎng)著拭,這世上最難降的妖魔是什么纱扭? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,626評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮儡遮,結(jié)果婚禮上乳蛾,老公的妹妹穿的比我還像新娘。我一直安慰自己鄙币,他們只是感情好肃叶,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,625評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著十嘿,像睡著了一般因惭。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上绩衷,一...
    開(kāi)封第一講書(shū)人閱讀 52,255評(píng)論 1 308
  • 那天蹦魔,我揣著相機(jī)與錄音激率,去河邊找鬼。 笑死版姑,一個(gè)胖子當(dāng)著我的面吹牛柱搜,可吹牛的內(nèi)容都是我干的迟郎。 我是一名探鬼主播剥险,決...
    沈念sama閱讀 40,825評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼宪肖!你這毒婦竟也來(lái)了表制?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,729評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤控乾,失蹤者是張志新(化名)和其女友劉穎么介,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體蜕衡,經(jīng)...
    沈念sama閱讀 46,271評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡壤短,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,363評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了慨仿。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片久脯。...
    茶點(diǎn)故事閱讀 40,498評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖镰吆,靈堂內(nèi)的尸體忽然破棺而出帘撰,到底是詐尸還是另有隱情,我是刑警寧澤万皿,帶...
    沈念sama閱讀 36,183評(píng)論 5 350
  • 正文 年R本政府宣布摧找,位于F島的核電站,受9級(jí)特大地震影響牢硅,放射性物質(zhì)發(fā)生泄漏蹬耘。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,867評(píng)論 3 333
  • 文/蒙蒙 一减余、第九天 我趴在偏房一處隱蔽的房頂上張望综苔。 院中可真熱鬧,春花似錦佳励、人聲如沸休里。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,338評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)妙黍。三九已至,卻和暖如春瞧剖,著一層夾襖步出監(jiān)牢的瞬間拭嫁,已是汗流浹背可免。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,458評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留做粤,地道東北人浇借。 一個(gè)月前我還...
    沈念sama閱讀 48,906評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像怕品,于是被迫代替她去往敵國(guó)和親妇垢。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,507評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容