OkHttp3使用證書發(fā)起請(qǐng)求

OkHttp3使用證書發(fā)起請(qǐng)求

最近在對(duì)接微信支付功能梗顺,微信所有接口都采用okHttp3請(qǐng)求车摄,但是申請(qǐng)退款接口需要證書才能調(diào)用仑鸥,那如何使用證書發(fā)起請(qǐng)求以及證書如何獲取眼俊,先看一下微信開發(fā)文檔

  1. 在微信支付接口中粟关,涉及資金回滾的接口會(huì)使用到API證書,包括退款澎灸、撤銷接口遮晚。商家在申請(qǐng)微信支付成功后县遣,收到的相應(yīng)郵件后,可以按照指引下載API證書萧求,也可以按照以下路徑下載:微信商戶平臺(tái)(pay.weixin.qq.com)-->賬戶中心-->賬戶設(shè)置-->API安全 饭聚。證書文件說明如下:
證書附件 描述 使用場景 備注
pkcs12格式(apiclient_cert.p12、 包含了私鑰信息的證書文件,為p12(pfx)格式箕速,由微信支付簽發(fā)給您用來標(biāo)識(shí)和界定您的身份 撤銷盐茎、退款申請(qǐng)API中調(diào)用 windows上可以直接雙擊導(dǎo)入系統(tǒng),導(dǎo)入過程中會(huì)提示輸入證書密碼字柠,證書密碼默認(rèn)為您的商戶ID(如:10010000)
  • 以下兩個(gè)證書在PHP環(huán)境中使用:
證書附件 描述 使用場景 備注
證書pem格式(apiclient_cert.pem) 從apiclient_cert.p12中導(dǎo)出證書部分的文件窑业,為pem格式,請(qǐng)妥善保管不要泄漏和被他人復(fù)制 PHP等不能直接使用p12文件鲤氢,而需要使用pem,為了方便您使用卷玉,已為您直接提供 您也可以使用openssl命令來自己導(dǎo)出:openssl pkcs12 -clcerts -nokeys -in apiclient_cert.p12 -out apiclient_cert.pem)
證書密鑰pem格式(apiclient_key.pem) 從apiclient_key.pem中導(dǎo)出密鑰部分的文件相种,為pem格式,請(qǐng)妥善保管不要泄漏和被他人復(fù)制 PHP等不能直接使用p12文件寝并,而需要使用pem,為了方便您使用蒂破,已為您直接提供 您也可以使用openssl命令來自己導(dǎo)出:openssl pkcs12 -nocerts -in apiclient_cert.p12 -out apiclient_key.pem
  1. 使用API證書

    • apiclient_cert.p12是商戶證書文件别渔,除PHP外的開發(fā)均使用此證書文件。
    • 商戶如果使用.NET環(huán)境開發(fā)喇伯,請(qǐng)確認(rèn)Framework版本大于2.0稻据,必須在操作系統(tǒng)上雙擊安裝證書apiclient_cert.p12后才能被正常調(diào)用买喧。
    • API證書調(diào)用或安裝需要使用到密碼,該密碼的值為微信商戶號(hào)(mch_id)
  2. API證書安全

    • 證書文件不能放在web服務(wù)器虛擬目錄今缚,應(yīng)放在有訪問權(quán)限控制的目錄中低淡,防止被他人下載蔗蹋;
    • 建議將證書文件名改為復(fù)雜且不容易猜測的文件名;
    • 商戶服務(wù)器要做好病毒和木馬防護(hù)工作猪杭,不被非法侵入者竊取證書文件胁孙。
  3. 商戶回調(diào)API安全

    • 在普通的網(wǎng)絡(luò)環(huán)境下,HTTP請(qǐng)求存在DNS劫持稠鼻、運(yùn)營商插入廣告、數(shù)據(jù)被竊取熙暴,正常數(shù)據(jù)被修改等安全風(fēng)險(xiǎn)慌盯。商戶回調(diào)接口使用HTTPS協(xié)議可以保證數(shù)據(jù)傳輸?shù)陌踩匝窃怼K晕⑿胖Ц督ㄗh商戶提供給微信支付的各種回調(diào)采用HTTPS協(xié)議。

以上就是微信對(duì)于API證書的說明狞谱,從微信商戶平臺(tái)上可以下載對(duì)應(yīng)的證書禁漓,每個(gè)商戶id都會(huì)對(duì)應(yīng)一個(gè)證書,發(fā)起請(qǐng)求的時(shí)候需要使用對(duì)應(yīng)的證書才可以

  • 我們把證書文件 ***.p12文件發(fā)在 resource/assets 目錄下伶跷,創(chuàng)建帶證書的OkHttpClient方法如下:
SSLContext sslContext = getSSLContextByAppKey(appKey);
if (sslContext == null) {
    restLogger.info("獲取證書失敗");
    return null;
}
OkHttpClient client = new OkHttpClient().newBuilder().sslSocketFactory(sslContext.getSocketFactory()).build();
  • 獲取SSLContext的方法如下:
private SSLContext getSSLContextByAppKey(String mchId) {
    // 設(shè)置證書路徑
    String certPath = String.format("assets/%s.p12", mchId);
    // 設(shè)置證書密碼
    String certPass = mchId;
    // 獲取證書
    return getSSLContext(certPath, certPass);
}
private SSLContext getSSLContext(String certPath, String certPass) {
    try {
        KeyStore clientStore = KeyStore.getInstance("PKCS12");
        // 讀取resource下的文件 支持jar方式啟動(dòng)
        Resource resource = new ClassPathResource(certPath);
        InputStream inputStream = resource.getInputStream();
        char[] passArray = certPass.toCharArray();
        clientStore.load(inputStream, passArray);
        KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
        kmf.init(clientStore, passArray);
        KeyManager[] kms = kmf.getKeyManagers();
        SSLContext sslContext = SSLContext.getInstance("TLSv1");
        sslContext.init(kms, null, new SecureRandom());
        return sslContext;
    } catch (Exception e) {
        restLogger.info("設(shè)置證書出錯(cuò)");
    }
    return null;
}
  • 按上述方式獲取到的OkHttpClient就就能帶著證書發(fā)起https請(qǐng)求了
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市食寡,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌涕滋,老刑警劉巖色罚,帶你破解...
    沈念sama閱讀 211,884評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件拆檬,死亡現(xiàn)場離奇詭異淮逊,居然都是意外死亡据途,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,347評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門位衩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來糖驴,“玉大人佛致,你說我怎么就攤上這事俺榆。” “怎么了定嗓?”我有些...
    開封第一講書人閱讀 157,435評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵蜕乡,是天一觀的道長层玲。 經(jīng)常有香客問我辛块,道長润绵,這世上最難降的妖魔是什么胞谈? 我笑而不...
    開封第一講書人閱讀 56,509評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮烦绳,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘径密。我一直安慰自己午阵,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,611評(píng)論 6 386
  • 文/花漫 我一把揭開白布享扔。 她就那樣靜靜地躺著底桂,像睡著了一般植袍。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上籽懦,一...
    開封第一講書人閱讀 49,837評(píng)論 1 290
  • 那天于个,我揣著相機(jī)與錄音,去河邊找鬼猫十。 笑死览濒,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的拖云。 我是一名探鬼主播贷笛,決...
    沈念sama閱讀 38,987評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼乏苦!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起掀淘,我...
    開封第一講書人閱讀 37,730評(píng)論 0 267
  • 序言:老撾萬榮一對(duì)情侶失蹤冕碟,失蹤者是張志新(化名)和其女友劉穎安寺,沒想到半個(gè)月后言秸,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,194評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡范舀,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,525評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了难礼。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蛾茉。...
    茶點(diǎn)故事閱讀 38,664評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡节沦,死狀恐怖吼鳞,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情纬乍,我是刑警寧澤,帶...
    沈念sama閱讀 34,334評(píng)論 4 330
  • 正文 年R本政府宣布,位于F島的核電站队伟,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,944評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望朵纷。 院中可真熱鬧,春花似錦革屠、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,764評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽枪萄。三九已至,卻和暖如春齐帚,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背剪菱。 一陣腳步聲響...
    開封第一講書人閱讀 31,997評(píng)論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留杖剪,地道東北人盛嘿。 一個(gè)月前我還...
    沈念sama閱讀 46,389評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親渺蒿。 傳聞我的和親對(duì)象是個(gè)殘疾皇子善延,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,554評(píng)論 2 349

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

  • 應(yīng)屆畢業(yè)生或者剛剛參加工作不久的人肤京,總是喜歡問自己也問別人一個(gè)問題:應(yīng)該堅(jiān)守北上廣還是應(yīng)該安心待在故鄉(xiāng)小城白修?堅(jiān)守北...
    錦肆1994閱讀 221評(píng)論 1 2
  • 姓名:魏正君《六項(xiàng)精進(jìn)》第270期感謝2組公司:綿陽大北農(nóng)農(nóng)牧科技有限公司【日精進(jìn)打卡第330天】【知~學(xué)習(xí)】背誦...
    莫心莫肺閱讀 63評(píng)論 0 0
  • 去外婆家,恰巧碰上表弟的外婆,也就是舅媽的媽硼一。 一見門我就禮貌的打了聲招呼奥吩,她也很客氣的回應(yīng)我。六十多歲的年紀(jì)甘改,聲...
    嬉媚閱讀 1,248評(píng)論 0 6