Некоторые небольшие шаги в разработке интерфейса обмена WeChat, конкретный контент заключается в следующем
1. Настройка информации интерфейса для проверки
Код заключается в следующем:
/** * ПРИМЕК ПРЕДПОРМАТЬ, чтобы получить доступ к неавтоцированному адресу * * * @param request * @return вход * @Throw URL -адрес адреса сервера и запрос GET несет сигнатуру string parameter = request.getParameter ("Signature"); // WeChat шифровано сигнатуру (токен, timestamp, nonce.) String timeStamp = request.getParameter ("TimeStamp"); // TimeStamp String nonce = request.getParameter ("non nectc"); request.getParameter ("eChoStr"); // Случайная строка // Сортировка словаря словаря, timeStamp, nonce string [] params = new String [] {token, timestamp, nonce}; Arrays.sort (params); // Сплайсировать три строки параметров в строку для строки шифрования SHA1 clearText = params [0] + params [1] + params [2]; String algorithm = "sha-1"; String sign = new String (hex.encodehex (messagegest.getinstance (algorithm) .digest ((cleartext) .getbytes ()), true)); // Автор получает зашифрованную строку с подписью, определяя, что запрос поступает от WeChat if (signature.equals (sign)) {response.getWriter (). Print (echoStr); }} catch (Exception e) {e.printstackTrace (); }}2. JS Configuration
3. Получите параметры обмена JS и получите токен и билет, чтобы добавить в кэш
/**! Объект> (); String appid = wxconfigure.getAppid (); // требуется, уникальный идентификатор официальной строки учетной записи requestUrl = request.getRequesturl (). ToString (); String accessToken = null; String jsapiticket = null; String url = ""; String TimeStamp = long.toString (System.CurrentTimeMillis () / 1000); // Требуется, генерируйте строку Signature TimeStamp noncestr = uuid.randomuuid (). ToString (); // Требуется, генерируйте подпись случайную строку // Здесь мы сначала запрашиваем в кэше, и достоверное время доступа к доступе должно быть установлено в кэше запроса на интерфейс вызова // redistemplate.opforvalue (). GetOperations (). Delete (prefix); // accessToken = (string) redistemplate.opforvalue (). get (prefix); Token accesstokenfromredis = getaccesstokenfromredis (); accesstoken = accesstokenfromredis.getaccesstoken (); if (accesstokenfromredis.getaccesstoken ()! = null) {jsapiticket = (string) redistemplate.opsforvalue (). get (prefixticket); if (jsapiticket == null) {url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=" + accesstoken + "& type = jsapi"; JsonObject json = httprequest (url, "get", null); if (json! = null) {jsapiticket = json.getString ("Ticket"); redistemplate.opsforvalue (). set (prefixticket, jsapiticket); redistemplate.expire (prefixticket, integer.parseint (wxconfigure.getexpiretime ()), timeUnit.seconds); }}} String signature = ""; // Обратите внимание, что имена параметров здесь должны быть все строчные и должны быть упорядочены String sign = "jsapi_ticket =" + jsapiticket + "& noncestr =" + noncestr + "× tamp =" + timestamp + "& url =" + requesturl; try {messagegest crypt = messagedigest.getinstance ("sha-1"); Crypt.Reset (); crypt.update (sign.getbytes ("utf-8")); signature = bytetohex (crypt.digest ()); } catch (nosuchalgorithmexception e) {e.printstacktrace (); } catch (unsupportEncodingexception e) {e.printstacktrace (); } ret.put ("appid", appid); ret.put ("TimeStamp", TimeStamp); ret.put ("noncestr", noncest); ret.put ("подпись", подпись); вернуть вт; }/**! для (byte b: hash) {formatter.format ("%02x", b); } String result = formatter.toString (); formatter.close (); результат возврата; } / ** * Получите AccestOken из Redis, укажите строковое значение ключа, время истечения 7200S * * @param key * @return * / public token getaccesstokenfromredis () {token token = null; String essagetoken = (string) redistemplate.opforvalue (). Get (wxconfigure.gettokenkey ()); if (null! = AssageToken &&! ". token.setaccesstoken (AssageToken); вернуть токен; } else {token = commonwxutil.gettoken (wxconfigure.getappid (), wxconfigure.getSecret ()); redistemplate.opsforvalue (). set (wxconfigure.gettokenkey (), token.getaccesstoken ()); redistemplate.expire (wxconfigure.gettokenkey (), integer.parseint (wxconfigure.getexpiretime ()), timeunit.seconds); вернуть токен; }}4. Введение JS, связанного с страницей
<script type = "text/javascript" src = "http://res.wx.qq.com/open/js/jweixin-1.0.0.js"> </script> <script type = "text/javascript" src = "https://res.wx.qq.com/open/js/jweixin-1.0.0.js"> </script> <script type = "text/javascript"> // Информация WeChat и конфигурация вызова // Информация WeChat и конфигуратура VAR VAR = $ ("#Signature"). Val (); var appid = $ ("#appid"). val (); var appid = $ ("#appid"). val (); var TimeStamp = $ ("#timeStamp"). val (); var noncestr = $ ("#noncestr"). val (); var userId = $ ("#userId"). val (); var ProductName = 1; Alert (Signature); WX.Config ({Debug: False, Appid: Appid, TimeStamp: TimeStamp, Noncestr: nonCestr, Signature: Signature, Jsapilist: [onmenushareTimeline ',' onmenushareappmessage ', onmenushareqq', onmenushareweweweweboRepMessage ',' onmenushareqq ',' onmenusharewewebo wx.ready (function () {var isok = true; wx.checkjsapi ({jsapilist: ['onmenushareTimeline'], Fail: function (res) {alert ("weChat версия слишком низкая, а функция, общая с друзьями, не поддерживается!"); isok = false;}, успех: функция (res) {alert ("QQ);") // Get the click status of the "Share to Moments" button and customize the sharing content interface wx.onMenuShareTimeline({ title: 'Part 6: How to customize the WeChat public account menu for practical Java version of WeChat public platform development', desc: 'Part 6: How to customize the WeChat public account menu for practical Java version of WeChat public platform development', link: 'http://4d536256.ngrok.io/login', imgurl: 'http://busc.4gogo.com/media/media/img/home-show-a.png', успех: функция (res) {alert (json.strify (res); $ .ajax ({type: «get», url: 'insertCollectShare', data: {userId: userId,}, dataType: "json", async: false, success: function (data) {alert (200);}, error: function (data) {var rurl = xhr.getressesheponse. }}); wx.onmenushareappmessage ({название: «Часть 7: Как получить базовую информацию пользователей WeChat в разработке публичной платформы WeChat», // Поделиться название: «Часть 7: как получить базовую информацию пользователей WeChat в разработке WeChat Public Platform», // Ссылка на описание: 'htttp: //4d536256.glog.io/logrlog.irog.io/logrlog.io/Logrk.io/Logrk.io/logrk.io/http: //4d536256.glogr «http://busc.4ggogo.com/media/media/img/home-show-a.png ', // Обмен типом значка:« Ссылка », // Тип обмена, музыка, видео или ссылка, по умолчанию}); Меню для практической Java версии WeChat Public Platform Development ', // Обмен титулом Desc: «Часть 6: Как настроить меню публичных аккаунтов WeChat для практической версии Java Public Platform Development», // Обмен описание ссылка:' http://4d536256.ngrok.io/login ', ////share link imgurl: 'http://busc.4ggogo.com/media/media/img/home-show-a.png', // share incon success: function () {// Функция обратного вызова, выполненная после того, как пользователь подтверждает обмен}, отменить: function () {// Функция обратного вызова, выполненное после того, как пользовательский общий доступ}); Интерфейс wx.onmenushareweibo ({title: «Поделиться в Tencent Weibo Title ', // Поделиться Title Desc:« Поделиться с Tencent Weibo Описание », // Поделиться описание Ссылка:' http://4d536256.ngrok.io/login ', // поделиться ссылкой imgurl: 'http://busc.4ggogo.com/media/media/img/home-show-a.png', // share incon success: function () {// Функция обратного вызова, выполненная после того, как пользователь подтверждает обмен}, отменить: function () {// Функция обратного вызова, выполненное после обмена пользователем}}); wx.onmenushareqzone ({заголовок: «Поделиться в QQ Space Teal 1111111111111111111, // Поделиться названием Desc: 'Поделиться с QQ Space Description 2222222222222222222222222222222222222222222222222222222222222222222222222222н 2222222222222222222222222222222222222222222222222222222222222222222222222222н 2222222222222222222222222222222222222222222222222222222222222222222222222222н 2222222222222222222222222222222222222222222222222222222222222222222222222222н 'http://4d536256.ngrok.io/login', imgurl: 'http: //busc.4ggogo.com/media/media/img/home-show-a.png', // sharing incon access: function () {// Функция Callback, выполненная после того, как пользователь подтверждает. После того, как пользователь отменяет обмен}});ПРИМЕЧАНИЕ. Переданный путь является настроенным путем доменного имени, в противном случае его нельзя вызвать, и размер изображения не может быть больше 300K
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.