日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

java 微信小程序code獲取openid的操作

瀏覽:225日期:2022-05-23 14:29:39

最近有個小程序的項目 需要前端傳code 后端獲取openid 這里是純后端

在這里記錄一下吧

主要代碼:

這里是獲取openid的實現類

import com.alibaba.fastjson.JSON;import com.alibaba.fastjson.JSONObject;import com.moszk.frame.basic.utils.HttpRequest;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.bind.annotation.ResponseBody;import org.springframework.web.bind.annotation.RestController;import java.util.HashMap;import java.util.Map;@RestControllerpublic class WeiXinSubmitController { @ResponseBody @RequestMapping(value = '/wx/decodeUserInfo', method = RequestMethod.GET) public Map decodeUserInfo(String code) {System.out.println(code);Map map = new HashMap();//登錄憑證不能為空if (code == null || code.length() == 0) { map.put('status', 0); map.put('msg', 'code 不能為空'); return map;}//小程序唯一標識 (在微信小程序管理后臺獲取)String wxspAppid = '***********';//小程序的 app secret (在微信小程序管理后臺獲取)String wxspSecret = '*********************';//授權(必填)String grant_type = 'authorization_code';//https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code//1、向微信服務器 使用登錄憑證 code 獲取 session_key 和 openid//請求參數String params = 'appid=' + wxspAppid + '&secret=' + wxspSecret + '&js_code=' + code + '&grant_type=' + grant_type;//發送請求String sr = HttpRequest.sendGet('https://api.weixin.qq.com/sns/jscode2session', params);System.out.println('sr========'+sr);//解析相應內容(轉換成json對象)JSONObject json =JSON.parseObject(sr);System.out.println('json============'+json);//獲取會話密鑰(session_key)json.get('session_key').toString();String session_key = json.get('session_key').toString();//用戶的唯一標識(openid)String openid = (String) json.get('openid');map.put('session_key',session_key);map.put('openid',openid);return map; }}這里還需要一個工具類 用來發送請求的

import java.io.*;import java.net.URL;import java.net.URLConnection;import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;import java.text.SimpleDateFormat;import java.util.*;public class HttpRequest { /** * 向指定URL發送GET方法的請求 * * @param url * 發送請求的URL * @param param * 請求參數,請求參數應該是 name1=value1&name2=value2 的形式。 * @return URL 所代表遠程資源的響應結果 */ public static String sendGet(String url, String param) {String result = '';BufferedReader in = null;try { String urlNameString = url + '?' + param; URL realUrl = new URL(urlNameString); // 打開和URL之間的連接 URLConnection connection = realUrl.openConnection(); // 設置通用的請求屬性 connection.setRequestProperty('accept', '*/*'); connection.setRequestProperty('connection', 'Keep-Alive'); connection.setRequestProperty('user-agent', 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)'); // 建立實際的連接 connection.connect(); // 獲取所有響應頭字段 Map<String, List<String>> map = connection.getHeaderFields(); // 遍歷所有的響應頭字段 for (String key : map.keySet()) {System.out.println(key + '--->' + map.get(key)); } // 定義 BufferedReader輸入流來讀取URL的響應 in = new BufferedReader(new InputStreamReader( connection.getInputStream())); String line; while ((line = in.readLine()) != null) {result += line; }} catch (Exception e) { System.out.println('發送GET請求出現異常!' + e); e.printStackTrace();}// 使用finally塊來關閉輸入流finally { try {if (in != null) { in.close();} } catch (Exception e2) {e2.printStackTrace(); }}return result; } /** * 向指定 URL 發送POST方法的請求 * * @param url * 發送請求的 URL * @param param * 請求參數,請求參數應該是 name1=value1&name2=value2 的形式。 * @return 所代表遠程資源的響應結果 */ public static String sendPost(String url, String param, String keyValue) {PrintWriter out = null;BufferedReader in = null;String result = '';try { URL realUrl = new URL(url); // 打開和URL之間的連接 URLConnection conn = realUrl.openConnection(); // 設置通用的請求屬性 conn.setRequestProperty('accept', '*/*'); conn.setRequestProperty('connection', 'Keep-Alive'); conn.setRequestProperty('api-key', keyValue); conn.setRequestProperty('user-agent', 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)');conn.setRequestProperty('Accept-Charset', 'UTF-8'); // 發送POST請求必須設置如下兩行 conn.setDoOutput(true); conn.setDoInput(true); // 獲取URLConnection對象對應的輸出流 //out = new PrintWriter(conn.getOutputStream());out = new PrintWriter(new OutputStreamWriter(conn.getOutputStream(), 'UTF-8')); // 發送請求參數 out.print(param); // flush輸出流的緩沖 out.flush(); // 定義BufferedReader輸入流來讀取URL的響應 in = new BufferedReader( new InputStreamReader(conn.getInputStream(),'UTF-8')); String line; while ((line = in.readLine()) != null) { System.out.println(line);result += line; }} catch (Exception e) { System.out.println('發送 POST 請求出現異常!'+e); e.printStackTrace();}//使用finally塊來關閉輸出流、輸入流finally{ try{if(out!=null){ out.close();}if(in!=null){ in.close();} } catch(IOException ex){ex.printStackTrace(); }}return result; }public static String generateOrderId(){String keyup_prefix=new SimpleDateFormat('yyyyMMddHHmmss').format(new Date());String keyup_append= String.valueOf(new Random().nextInt(899999)+100000);String pay_orderid=keyup_prefix+keyup_append;//訂單號return pay_orderid;}public static String generateTime(){return new SimpleDateFormat('yyyy-MM-dd HH:mm:ss').format(new Date());} public static String md5(String str) throws NoSuchElementException {try { MessageDigest md = MessageDigest.getInstance('MD5'); md.update(str.getBytes('UTF-8')); byte[] byteDigest = md.digest(); int i; //字符數組轉換成字符串 StringBuffer buf = new StringBuffer(''); for (int offset = 0; offset < byteDigest.length; offset++) {i = byteDigest[offset];if (i < 0) i += 256;if (i < 16) buf.append('0');buf.append(Integer.toHexString(i)); } // 32位加密 return buf.toString();//toUpperCase // 16位的加密 //return buf.toString().substring(8, 24).toUpperCase();} catch (NoSuchAlgorithmException | UnsupportedEncodingException e) { e.printStackTrace(); return null;} }}

如果一切順利的話 傳過來code就會返回open_id和session_key

中間可能會有報錯 主要原因在appid和appsecret這,前端需要配置appid才行,總的來說還是很簡單的 微信支付才是大坑

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持好吧啦網。如有錯誤或未考慮完全的地方,望不吝賜教。

標簽: 微信
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
日本在线视频一区二区| 成人黄色av| 午夜日韩av| 亚洲精品成人| 久久大逼视频| 亚洲精品高潮| 欧美永久精品| 你懂的国产精品| 成人午夜毛片| 亚洲天堂一区二区| 日韩精品免费一区二区在线观看| 999久久久亚洲| 亚洲在线电影| 日韩欧美中文字幕一区二区三区| 日本a口亚洲| 久久亚洲黄色| 97国产精品| 蜜桃tv一区二区三区| 日韩中文字幕av电影| 欧美啪啪一区| 国产精品久久久久蜜臀| 久久亚洲成人| 日韩三级久久| 国产+成+人+亚洲欧洲在线| 欧美亚洲精品在线| 亚洲乱亚洲高清| 久久精品一本| 欧美福利专区| 日韩高清不卡在线| 久久影视三级福利片| av高清一区| 亚洲一区二区毛片| 欧美午夜网站| 在线看片福利| 免费观看在线综合| 美女国产一区二区三区| 久久国产电影| 亚洲免费毛片| 97精品国产一区二区三区| 亚洲精品中文字幕乱码| 日韩精品亚洲一区二区三区免费| 精品国内亚洲2022精品成人 | 亚洲一区二区日韩| 国产欧美自拍| 亚洲不卡系列| 蜜臀91精品一区二区三区| 精品视频在线你懂得| 在线视频亚洲| 丁香婷婷久久| 亚洲精品少妇| 日韩欧美一区二区三区免费看| 视频一区二区三区入口| 国产一区二区精品久| 国产精品美女久久久浪潮软件| 国产精品2023| 在线亚洲国产精品网站| 蜜桃久久久久| 久久都是精品| 日本欧美国产| 日韩激情一区二区| 国产v日韩v欧美v| 日韩福利视频导航| 国产一区视频在线观看免费| 国产精品欧美一区二区三区不卡 | 国产精品美女| 久久免费视频66| 综合干狼人综合首页| 久久九九99| 精品国产一区二| 日韩亚洲精品在线观看| 欧美亚洲国产一区| 精品理论电影在线| 中文字幕一区二区精品区| 日韩欧美二区| 欧美a一区二区| 亚洲精品第一| 欧美日韩视频| 人人香蕉久久| 久久精品国产99| 日韩激情网站| 久久av在线| 亚洲天堂成人| 97国产精品| 国产精品高清一区二区| 亚洲一区中文| 成人羞羞视频播放网站| 国产激情一区| 亚洲精品欧洲| av不卡在线看| 欧美一级精品| 亚洲一区资源| 久久久亚洲欧洲日产| 日本不卡一区二区三区| 国产精品毛片一区二区三区| 久久精品电影| 国产精品国产三级国产在线观看| 日韩超碰人人爽人人做人人添| 午夜一级在线看亚洲| 999久久久免费精品国产| 日韩成人精品一区| 久久中文在线| 美女久久99| 国产乱人伦精品一区| 日韩高清一级| 日韩和欧美一区二区| 亚洲色图网站| 亚洲久久在线| 视频一区二区三区中文字幕| japanese国产精品| 91精品国产乱码久久久久久久 | 欧美午夜不卡| 国产91一区| 在线一区视频观看| 久久久久久一区二区| 久久久久伊人| 激情中国色综合| 国产一区二区三区四区五区| 国产精品白浆| 麻豆精品在线| 老司机免费视频一区二区| 国产欧美激情| 久久av免费看| 国产在线日韩精品| 老牛影视精品| 韩国三级一区| 亚洲韩日在线| 另类激情亚洲| 亚洲精品第一| 日本在线视频一区二区| 青青青国产精品| 国产精品片aa在线观看| 国产一区国产二区国产三区| 中文字幕色婷婷在线视频| 日韩另类视频| 婷婷成人综合| 久久成人精品| 日韩毛片网站| 你懂的网址国产 欧美| 加勒比视频一区| 肉色欧美久久久久久久免费看| 日韩精品第一区| 婷婷亚洲五月色综合| 一区二区亚洲视频| 日韩精品欧美成人高清一区二区| 欧美亚洲综合视频| 国产精品男女| 精品久久91| 在线日韩中文| 亚洲一区导航| 国产精品99精品一区二区三区∴| 91日韩在线| 99亚洲精品| 欧美亚洲三级| 日韩久久电影| 日韩专区在线视频| 国产日韩欧美一区二区三区| 麻豆精品新av中文字幕| 精品捆绑调教一区二区三区| 午夜久久久久| 日本午夜精品一区二区三区电影| 久久伊人亚洲| 香蕉精品视频在线观看| 日韩一区二区三区精品| 国产精品videossex| 五月激情久久| 亚洲有吗中文字幕| 久久久久黄色| 好看的av在线不卡观看| 日本午夜免费一区二区| а√天堂8资源在线| 亚洲欧美日韩国产| 国产精品成人自拍| 欧美a级片一区| 日本欧美大码aⅴ在线播放| 国产精品精品| 亚洲色图国产| 天堂а√在线最新版中文在线| 视频一区二区三区在线| 久久精品人人| 日韩精品一级中文字幕精品视频免费观看 | 国产精品亚洲综合色区韩国| 亚洲天堂资源| 婷婷久久免费视频| 丝袜美腿诱惑一区二区三区| 亚洲欧洲av| 国产 日韩 欧美一区| 日韩激情一区二区| 伊人久久大香线蕉av不卡| 欧美影院精品| 成人av二区| 老牛国内精品亚洲成av人片| 香蕉久久国产| 新版的欧美在线视频| 欧美日本二区| 伊人久久亚洲热| 久久伊人国产| 日韩一区精品| 尤物在线精品| 精品国产免费人成网站| 欧美亚洲免费|