微信公眾平台源碼java
Ⅰ 如何使用微信sdk java版
1.首先我們新建一個Java開發包WeiXinSDK
2.包路徑:com.ansitech.weixin.sdk
測試的前提條件:
假如我的公眾賬號微信號為:vzhanqun
我的伺服器地址為:http://www.vzhanqun.com/
下面我們需要新建一個URL的請求地址
我們新建一個Servlet來驗證URL的真實性,具體介面參考
http://mp.weixin.qq.com/wiki/index.php?title=接入指南
3.新建com.ansitech.weixin.sdk.WeixinUrlFilter.java
這里我們主要是獲取微信伺服器法師的驗證信息,具體驗證代碼如下
[java] view plain print?
package com.ansitech.weixin.sdk;
import com.ansitech.weixin.sdk.util.SHA1;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class WeixinUrlFilter implements Filter {
//這個Token是給微信開發者接入時填的
//可以是任意英文字母或數字,長度為3-32字元
private static String Token = "vzhanqun1234567890";
@Override
public void init(FilterConfig config) throws ServletException {
System.out.println("WeixinUrlFilter啟動成功!");
}
@Override
public void doFilter(ServletRequest req, ServletResponse res,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) res;
//微信伺服器將發送GET請求到填寫的URL上,這里需要判定是否為GET請求
boolean isGet = request.getMethod().toLowerCase().equals("get");
System.out.println("獲得微信請求:" + request.getMethod() + " 方式");
if (isGet) {
//驗證URL真實性
String signature = request.getParameter("signature");// 微信加密簽名
String timestamp = request.getParameter("timestamp");// 時間戳
String nonce = request.getParameter("nonce");// 隨機數
String echostr = request.getParameter("echostr");//隨機字元串
List<String> params = new ArrayList<String>();
params.add(Token);
params.add(timestamp);
params.add(nonce);
//1. 將token、timestamp、nonce三個參數進行字典序排序
Collections.sort(params, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return o1.compareTo(o2);
}
});
//2. 將三個參數字元串拼接成一個字元串進行sha1加密
String temp = SHA1.encode(params.get(0) + params.get(1) + params.get(2));
if (temp.equals(signature)) {
response.getWriter().write(echostr);
}
} else {
//處理接收消息
}
}
@Override
public void destroy() {
}
}
好了,不過這里有個SHA1演算法,我這里也把SHA1演算法的源碼給貼出來吧!
4.新建com.ansitech.weixin.sdk.util.SHA1.java
[java] view plain print?
/*
* 微信公眾平台(JAVA) SDK
*
* Copyright (c) 2014, Ansitech Network Technology Co.,Ltd All rights reserved.
* http://www.ansitech.com/weixin/sdk/
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.ansitech.weixin.sdk.util;
import java.security.MessageDigest;
/**
* <p>Title: SHA1演算法</p>
*
* @author qsyang<[email protected]>
*/
public final class SHA1 {
private static final char[] HEX_DIGITS = {'0', '1', '2', '3', '4', '5',
'6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};
/**
* Takes the raw bytes from the digest and formats them correct.
*
* @param bytes the raw bytes from the digest.
* @return the formatted bytes.
*/
private static String getFormattedText(byte[] bytes) {
int len = bytes.length;
StringBuilder buf = new StringBuilder(len * 2);
// 把密文轉換成十六進制的字元串形式
for (int j = 0; j < len; j++) {
buf.append(HEX_DIGITS[(bytes[j] >> 4) & 0x0f]);
buf.append(HEX_DIGITS[bytes[j] & 0x0f]);
}
return buf.toString();
}
public static String encode(String str) {
if (str == null) {
return null;
}
try {
MessageDigest messageDigest = MessageDigest.getInstance("SHA1");
messageDigest.update(str.getBytes());
return getFormattedText(messageDigest.digest());
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
5.把這個Servlet配置到web.xml中
[html] view plain print?
<filter>
<description>微信消息接入介面</description>
<filter-name>WeixinUrlFilter</filter-name>
<filter-class>com.ansitech.weixin.sdk.WeixinUrlFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>WeixinUrlFilter</filter-name>
<url-pattern>/api/vzhanqun</url-pattern>
</filter-mapping>
好了,接入的開發代碼已經完成。
6.下面就把地址URL和密鑰Token填入到微信申請成為開發者模式中吧。
Ⅱ java 寫的微信公眾號代碼如何部署到雲伺服器上 公眾號上的URL怎麼填寫
如果您自己有網站的話可以利用網站的伺服器後台介面。將微信與網站連接。可以實現在微信上查詢網站內容。如果自己沒有網站就沒必要弄介面了直接用微信公眾平台後台可以添加關鍵詞回復什麼的這些不需要代碼也不需要後台。
Ⅲ 關於製作微信公眾平台需要的java技術
得會jsp, 因為是基於網路的 如果有用到數據 還得有資料庫(mysql)另外你可以參考網上的一些源碼,主要是實現介面
Ⅳ 微信公眾平台發送客服消息基於java怎麼實現,求具體代碼謝謝
這個代碼可能比較多。。看微信公眾平台的api,裡面寫的很清楚,其實就是一個http請求,加上指定的報文就可以了,用java寫還比較簡單的。。
Ⅳ 微信公眾平台源碼是一個什麼軟體
微信公眾平台源碼不是軟體,是一套微信建站系統,即微信第三方平台。
微信第三方平台基於微信公眾平台開發建立的微信建站系統。其所有系統功能皆基於微信公眾賬號實現,常見系統功能:微網站、微商城、微信分銷、娛樂插件、營銷插件等功能。
系統源碼是多用戶的微信第三方平台,為:平台運營者=》代理商=》消費者(企業)。
Ⅵ 如果想使用java進行微信公眾平台開發至少需要掌握哪些內容
開發用的是HTML5開發的
你還需要去後台開發者中心下載騰訊提供的源碼文件
Ⅶ 微信公眾平台自定義菜單java開發
對於微信自定義菜單,
前台頁面,表單輸入;
後台程序解析處理,驗證;
保存到資料庫,可以下次再繼續修改;
用戶提交微信自定義菜單,後台程序,請求微信伺服器,發送自定義菜單。
Ⅷ 求助貼,微信公眾號開發java版的,怎麼獲取用
微信提供了介面可以獲取內容:在關注者與公眾號產生消息交互後,公眾號可獲得關注者的OpenID(加密後的微信號,每個用戶對每個公眾號的OpenID是唯一的。對於不同公眾號,同一用戶的openid不同)。公眾號可通過本介面來根據OpenID獲取用戶基本信息,包括昵稱、頭像、性別、所在城市、語言和關注時間。開發者可通過OpenID來獲取用戶基本信息。請使用https協議。我們可以看看官方的文檔:獲取用戶的基本信息。介面調用請求說明http請求方式:GET/cgi-bin/user/info?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN參數說明參數是否必須說明access_token是調用介面憑證openid是普通用戶的標識,對當前公眾號唯一lang否返回國家地區語言版本,zh_CN簡體,zh_TW繁體,en英語返回說明正常情況下,微信會返回下述JSON數據包給公眾號:{"subscribe":1,"openid":"o6_bmjrPTlm6_2sgVt7hMZOPfL2M","nickname":"Band","sex":1,"language":"zh_CN","city":"廣州","province":"廣東","country":"中國","headimgurl":"/mmopen//0","subscribe_time":1382694957,"unionid":"o6_bmasdasdsad6_2sgVt7hMZOPfL""remark":"","groupid":0}參數說明參數說明subscribe用戶是否訂閱該公眾號標識,值為0時,代表此用戶沒有關注該公眾號,拉取不到其餘信息。openid用戶的標識,對當前公眾號唯一nickname用戶的昵稱sex用戶的性別,值為1時是男性,值為2時是女性,值為0時是未知city用戶所在城市country用戶所在國家province用戶所在省份language用戶的語言,簡體中文為zh_CNheadimgurl用戶頭像,最後一個數值代表正方形頭像大小(有0、46、64、96、132數值可選,0代表640*640正方形頭像),用戶沒有頭像時該項為空。若用戶更換頭像,原有頭像URL將失效。subscribe_time用戶關注時間,為時間戳。如果用戶曾多次關注,則取最後關注時間unionid只有在用戶將公眾號綁定到微信開放平台帳號後,才會出現該欄位。詳見:獲取用戶個人信息(UnionID機制)remark公眾號運營者對粉絲的備注,公眾號運營者可在微信公眾平台用戶管理界面對粉絲添加備注groupid用戶所在的分組ID錯誤時微信會返回錯誤碼等信息,JSON數據包示例如下(該示例為AppID無效錯誤):{"errcode":40013,"errmsg":"invalidappid"}
Ⅸ 微信公眾平台可以用java寫嗎
可以,我現在的項目就是java後台開發的微信公眾平台,唯一要注意的就是公眾平台openid的使用
Ⅹ Java 微信公眾號主動消息推送源碼
public final static String HOST = "http://mp.weixin.qq.com";