微信公眾號(hào)模板消息接口開(kāi)發(fā)Java實(shí)現(xiàn)方法代碼
公眾當(dāng)中的功能 有許許多多,目前主要介紹模板消息接口的功能使用。
目的:
為了給關(guān)注過(guò)公眾號(hào)的用戶進(jìn)行消息的推送,可以群發(fā)以及給指定的用戶去發(fā)送消息,通常像一些訪客、物業(yè)報(bào)修、以及支付的結(jié)果等等都可能會(huì)運(yùn)用到該接口。
使用:
在微信公眾號(hào)的開(kāi)發(fā)者文檔當(dāng)中 選擇模板消息接口,其中就有接口的講解以及使用。
目前我們主要使用測(cè)試號(hào)去進(jìn)行講解和使用(個(gè)人注冊(cè)訂閱號(hào),企業(yè)主要使用服務(wù)號(hào))。
按照以下步驟獲取公眾號(hào)的測(cè)試信息:appID、appsecret 唯一等。
獲取以下數(shù)據(jù):
然后就是進(jìn)行接口配置信息,首先我們是測(cè)試的公眾號(hào),所以只需要在以上界面當(dāng)中去驗(yàn)證接口,若是正式上線則需要工具開(kāi)發(fā)文檔的要求去配置服務(wù)器的信息等,規(guī)則都是相似的!?。?/p>
所以我們需要在下面的頁(yè)面當(dāng)中配置驗(yàn)證的接口:
@GetMapping("get") @ApiOperation(value = "微信公眾號(hào)驗(yàn)證接口") public String init(String signature,String timestamp,String nonce,String echostr) throws NoSuchAlgorithmException { String token = "test"; List<String> stringList = Arrays.asList(token, timestamp, nonce); Collections.sort(stringList); StringBuilder stringBuilder=new StringBuilder(); for (String s : stringList) { stringBuilder.append(s); } MessageDigest sha1 = MessageDigest.getInstance("sha1"); byte[] bytes = sha1.digest(stringBuilder.toString().getBytes()); StringBuilder sum=new StringBuilder(); for (byte aByte : bytes) { sum.append(Integer.toHexString(((aByte>>4)&15))); sum.append(Integer.toHexString(aByte&15)); } if (signature!=null&&signature.equals(sum.toString())){ return echostr; } return echostr; }
首先代碼當(dāng)中的token就是在公眾號(hào)當(dāng)中配置的token需要相同,下一步就是按照文檔要求:1、將token、timestamp、nonce三個(gè)參數(shù)進(jìn)行字典序排序;2、將三個(gè)參數(shù)字符串拼接成一個(gè)字符串進(jìn)行sha1加密;3、開(kāi)發(fā)者獲得加密后的字符串可與signature對(duì)比
具體的sha1加密算法可以去網(wǎng)上搜尋以下資料,如果成功了則就會(huì)提示配對(duì)成功?。?!
注:在驗(yàn)證時(shí),若該服務(wù)部署在服務(wù)器上,則使用服務(wù)器的地址即可,若沒(méi)有服務(wù)器,則可以使用內(nèi)網(wǎng)穿透實(shí)現(xiàn)驗(yàn)證。
獲取access_token:
在調(diào)用接口的時(shí)候大多數(shù)都會(huì)使用到access_token,因此我們需要按文檔要求去獲取到access_token。
以上也都是官方提供的方法以及接口調(diào)用去獲取到 access_token。
private static AccessToken getToken() throws IOException { String url=String. format("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=%s&secret=%s",appid,secret); String st = HttpRestUtils.get(url, null); JSONObject jsonObject=new JSONObject(st); String access_token = jsonObject.getStr("access_token"); Long expires_in = jsonObject.getLong("expires_in"); accessToken.setToken(access_token); accessToken.setExpiresTime(expires_in); return accessToken; } public static String getAccessToken() throws IOException { if (accessToken!=null || accessToken.isExpires()){ getToken(); } return accessToken.getToken(); }
以上則是獲取到access_token,當(dāng)然access_token存在過(guò)期時(shí)間,因此在獲取到的同時(shí)也需要進(jìn)行過(guò)期的判斷,如果過(guò)期了則重新獲取。
后續(xù)模板消息推送功能的操作將會(huì)發(fā)布,請(qǐng)持續(xù)關(guān)注!??!
總結(jié)
到此這篇關(guān)于微信公眾號(hào)模板消息接口開(kāi)發(fā)Java實(shí)現(xiàn)方法的文章就介紹到這了,更多相關(guān)微信公眾號(hào)模板消息接口開(kāi)發(fā)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java中過(guò)濾器、監(jiān)聽(tīng)器和攔截器的區(qū)別詳解
這篇文章主要介紹了Java中過(guò)濾器、監(jiān)聽(tīng)器和攔截器的區(qū)別詳解,有些朋友可能不了解過(guò)濾器、監(jiān)聽(tīng)器和攔截器的區(qū)別,本文就來(lái)詳細(xì)講一下,相信看完你會(huì)有所收獲,需要的朋友可以參考下2024-01-01BeanUtils.copyProperties()參數(shù)的賦值順序說(shuō)明
這篇文章主要介紹了BeanUtils.copyProperties()參數(shù)的賦值順序說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-09-09Spring中的10種事務(wù)失效的常見(jiàn)場(chǎng)景
這篇文章主要介紹了Spring中的10種事務(wù)失效的常見(jiàn)場(chǎng)景,Spring的聲明式事務(wù)功能更是提供了極其方便的事務(wù)配置方式,配合Spring Boot的自動(dòng)配置,大多數(shù)Spring Boot項(xiàng)目只需要在方法上標(biāo)記@Transactional注解,即可一鍵開(kāi)啟方法的事務(wù)性配置,需要的朋友可以參考下2023-11-11MyBatis中XML 映射文件中常見(jiàn)的標(biāo)簽說(shuō)明
這篇文章主要介紹了MyBatis中XML 映射文件中常見(jiàn)的標(biāo)簽說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-07-07mybatis plus CU自動(dòng)填充 和 軟刪除自動(dòng)填充的實(shí)現(xiàn)方法
這篇文章主要介紹了mybatis plus CU自動(dòng)填充 和 軟刪除自動(dòng)填充的實(shí)現(xiàn)方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-07-07解決cmd運(yùn)行java程序“找不到文件”提示的方案
在本篇文章里小編給大家分享的是關(guān)于解決cmd運(yùn)行java程序“找不到文件”提示的方案,有需要的朋友們可以參考下。2020-02-02