目前小程序推出了自己的識別碼,小程序碼,圓形的碼看起來比二維碼好看。
本文總結(jié)微信小程序的獲取小程序二維碼的接口開發(fā)。官方地址
主要內(nèi)容摘抄自微信小程序的API文檔,java接口開發(fā)是自己總結(jié)開發(fā)。
一、簡介
通過后臺接口可以獲取小程序任意頁面的二維碼,掃描該二維碼可以直接進入小程序?qū)?yīng)的頁面。
目前微信支持兩種二維碼,小程序碼(左),小程序二維碼(右),如下所示:這篇文章主要講解的是獲取小程序碼的兩種方式。
獲取<小程序碼>的前提
必須獲取小程序的TOKEN
獲取 access_token
詳見文檔
?
/**
* 獲取token
* @param url
* @param grantType
* @param appid
* @param secret
* @return
*/
public static String getAccessToken(String url,String grantType,String appid,String secret){
String access_token = "";
String tokenUrl = url+"?grant_type="+ grantType+"&appid="+ appid + "&secret="+ secret;
Object result = HttpUtils.doGet(tokenUrl);
JSONObject jsons = JSONObject.parseObject(result.toString());
String expires_in = jsons.getString("expires_in");
if(BL3Utils.isNotEmpty(expires_in)&&Integer.parseInt(expires_in)==7200){
//ok
access_token = jsons.getString("access_token");
}else{
System.out.println("出錯獲取token失敗!");
}
return access_token;
}
參數(shù)介紹:
1.url :https://api.weixin.qq.com/cgi-bin/token
2.grantType: client_credential
3.appid:小程序appid,微信公眾平臺注冊小程序時自動生成的。
4.secret:小程序secret,微信公眾平臺注冊小程序時自動生成的。
5.url 和grantType參數(shù)官網(wǎng)其實有介紹的。
獲取小程序碼的兩種方式
目前有兩個接口可以生成小程序碼,開發(fā)者可以根據(jù)自己的需要選擇合適的接口
第一種
- 適用于需要的碼數(shù)量較少的業(yè)務(wù)場景
- 是呢不帶參數(shù)有限個小程序碼接口
- 總共生成的碼數(shù)量限制為100,000,請謹慎調(diào)用。
接口地址:
https://api.weixin.qq.com/wxa/getwxacode?access_token=ACCESS_TOKEN
(1)POST 參數(shù)說明
參數(shù) | 類型 | 默認值 | 說明 |
---|---|---|---|
path | String | 不能為空,最大長度 128 字節(jié) | |
width | Int | 430 | 二維碼的寬度 |
auto_color | Bool | false | 自動配置線條顏色,如果顏色依然是黑色,則說明不建議配置主色調(diào) |
line_color | Object | {“r”:”0”,”g”:”0”,”b”:”0”} | auth_color 為 false 時生效,使用 rgb |
設(shè)置顏色 例如 {“r”:”xxx”,”g”:”xxx”,”b”:”xxx”} |
注意:通過該接口生成的小程序碼,永久有效,但數(shù)量有效,請謹慎使用。用戶掃描該碼進入小程序后,將直接進入 path 對應(yīng)的頁面。
(2)請求接口測試
使用http請求插件postman或者RESTClient請求測試。
請求測試結(jié)果返回一個小程序碼圖片,與微信公眾平臺生成二維碼不同,小程序碼直接返回文件流,不是微信公眾平臺的url和ticket。
(3)java接口開發(fā)
/**
1. 帶參數(shù)有限個數(shù)小程序碼接口
2. @param url
3. @param access_token
4. @param path
5. @param width
6. @return
*/
public static InputStream getwxacode(String url,String access_token,String path,String width){
url = url + "?access_token=" + access_token;
JSONObject jsonParam = new JSONObject();
jsonParam.put("path", path);
jsonParam.put("width", Integer.parseInt(width));
jsonParam.put("auto_color", false);
Map<String,Object> line_color = new HashMap<>();
line_color.put("r", 0);
line_color.put("g", 0);
line_color.put("b", 0);
jsonParam.put("line_color", line_color);
InputStream instreams = HttpUtils.doWXPost(url, jsonParam);
if(BL3Utils.isEmpty(instreams)){
System.out.println("出錯獲取二維碼失?。?);
}
return instreams;
}
參數(shù)說明
1.url : https://api.weixin.qq.com/wxa/getwxacode
2.access_token:上面有介紹(getAccessToken這個方法)
3.path:用戶掃描該碼進入小程序后,將直接進入 path 對應(yīng)的頁面;一般是首頁地址:”pages/index/index”
也可以帶上參數(shù):”pages/index/index?query=1”。
4.width:二維碼的寬度 int類型 默認 430
第二種
- 適用于需要的碼數(shù)量極多的業(yè)務(wù)場景
- 沒有數(shù)量限制呢
- 帶參數(shù)
接口地址:
https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=ACCESS_TOKEN
(1)POST 參數(shù)說明
參數(shù) | 類型 | 默認值 | 說明 |
---|---|---|---|
scene | String | ||
最大32個可見字符,只支持數(shù)字,大小寫英文以及部分特殊字符:!#$&’()*+,/:;=?@-._~,其它字符請自行編碼為合法字符(因不支持%,中文無法使用 | |||
urlencode 處理,請使用其他編碼方式) | |||
page | String | 必須是已經(jīng)發(fā)布的小程序頁面,例如 “pages/index/index” ,如果不填寫這個字段,默認跳主頁面 | |
width | Int | 430 | 二維碼的寬度 |
auto_color | Bool | false | 自動配置線條顏色,如果顏色依然是黑色,則說明不建議配置主色調(diào) |
line_color | Object | {“r”:”0”,”g”:”0”,”b”:”0”} | auto_color 為 false 時生效,使用 rgb |
設(shè)置顏色 例如 {“r”:”xxx”,”g”:”xxx”,”b”:”xxx”} |
注意:通過該接口生成的小程序碼,永久有效,數(shù)量暫無限制。用戶掃描該碼進入小程序后,開發(fā)者需在對應(yīng)頁面獲取的碼中 scene
字段的值,再做處理邏輯。使用如下代碼可以獲取到二維碼中的 scene 字段的值。調(diào)試階段可以使用開發(fā)工具的條件編譯自定義參數(shù) scene=xxxx
進行模擬,開發(fā)工具模擬時的 scene 的參數(shù)值需要進行 urlencode。同時需要注意,此接口的page參數(shù)中不能帶任何參數(shù),參數(shù)都在scene
參數(shù)中處理,切記?。?!
// 這是首頁的 js
Page({
onLoad: function(options) {
// options 中的 scene 需要使用 decodeURIComponent 才能獲取到生成二維碼時傳入的 scene
var scene = decodeURIComponent(options.scene)
}
})
(2)請求接口測試
(3)java接口開發(fā)
/**
* 帶參數(shù)無限個數(shù)小程序碼接口
* @param url
* @param access_token
* @param path
* @param width
* @return
*/
public static InputStream getwxacodeunlimit(String url,String access_token,String path,String width){
String[] str = path.split("[?]");
path = str[0];
String scene = str[1];
url = url + "?access_token=" + access_token;
// 接收參數(shù)json列表
JSONObject jsonParam = new JSONObject();
jsonParam.put("scene", scene);
jsonParam.put("page", path);
jsonParam.put("width", Integer.parseInt(width));
jsonParam.put("auto_color", false);
Map<String,Object> line_color = new HashMap<>();
line_color.put("r", 0);
line_color.put("g", 0);
line_color.put("b", 0);
jsonParam.put("line_color", line_color);
InputStream instreams = HttpUtils.doWXPost(url, jsonParam);
if(BL3Utils.isEmpty(instreams)){
System.out.println("出錯獲取二維碼失敗!");
}
return instreams;
}
參數(shù)說明文章來源:http://www.zghlxwxcb.cn/news/detail-626345.html
1.url : https://api.weixin.qq.com/wxa/getwxacodeunlimit
2.access_token:上面有介紹(getAccessToken這個方法)
3.path:用戶掃描該碼進入小程序后,將直接進入 path 對應(yīng)的頁面;一般是首頁地址”pages/index/index”
也可以帶上參數(shù):”pages/index/index?query=1”。
4.width:二維碼的寬度 int類型 默認 430文章來源地址http://www.zghlxwxcb.cn/news/detail-626345.html
注意:
- 第二種生成小程序碼的情況 只有小程序上線后才能生成二維碼。
- 其他方法生成的碼只有小程序上線后才會有權(quán)限訪問 否則會提示小程序尚未發(fā)布
到了這里,關(guān)于Java 獲取小程序碼的兩種方式的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!