微信小程序卡券java_微信小程序领取卡券(java)
最近做了個領(lǐng)取微信卡券的小程序,看了很多文檔資料以及花了很多時間才算搞定的,不過也算是好事多磨,這邊記錄分享一下,也算給一點提升。
一、開發(fā)前準備
1:申請微信公眾號 和 微信小程序,這是兩個不同的東西,都需要單獨申請、不同的帳號;
2:微信公眾號需要開通微信卡券的功能;
3:在微信公眾號里面去綁定小程序;
4:申請微信開放平臺,并將微信公眾號 和 微信小程序綁定到該開放平臺。(注:綁定到開發(fā)平臺下的作用只是為了獲取unionid,因為同一用戶在 公眾號 和 小程序下獲得的openid是不一樣的,如果公眾號 和 小程序都需要領(lǐng)取卡券,則最好通過unionid來跟蹤用戶;如果你只是開發(fā)微信小程序的領(lǐng)取卡券,則完全可以忽略第4點,博主本人也沒有去綁定到微信開放平臺,感覺步驟好多,特別麻煩!)
二、開始開發(fā)
1:獲取微信卡券
https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1451025272
這邊可以直接通過微信公眾號提供的接口獲取或者創(chuàng)建微信的卡券,此處不過多介紹,只是提一下這邊要獲取的access_token,網(wǎng)址如下https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140183,代碼直接如下:
[java]?view plaincopy
privatestaticString?grantType?="client_credential";
publicstaticString?appId?="";//微信公眾號appid
publicstaticString?secret?="";//微信公眾號密鑰
publicstaticAccessToken?token?=null;//微信公眾號的accessToken對象,由于請求次數(shù)有限制,這里使用全局靜態(tài)變量保存起來
publicstaticAccessToken?getToken()throwsWeixinException,?JsonParseException,?JsonMappingException,?IOException{
if(token?==null||?token.getExpires_in()?
//拼接參數(shù)
String?param?=?"?grant_type="+?grantType?+"&appid="+?appId?+"&secret="+?secret;
//創(chuàng)建請求對象
HttpsClient?http?=?newHttpsClient();
//調(diào)用獲取access_token接口
Response?res?=?http.get("https://api.weixin.qq.com/cgi-bin/token"+?param);
System.out.println(res.asString());
ObjectMapper?mapper?=?newObjectMapper();
token?=?mapper.readValue(res.asString(),AccessToken.class);
}
returntoken;
}
其中需要jackson和weixin4j的jar包,比較普遍,請自行下載;而AccessToken對象也比較簡單,就errcode、errmsg、access_token、expires_in這四個參數(shù),比較簡單,在文章結(jié)尾貼代碼
2:升級微信卡券
其實這個步驟也可以省略,升級微信卡券的目的是可以直接從微信卡券跳轉(zhuǎn)到對應的小程序,博主就偷懶了,直接跳過了這個步驟;
不過升級卡券也比較簡單,就是調(diào)用調(diào)用微信公眾號的更改微信卡券接口(URL:https://api.weixin.qq.com/card/update?access_token=TOKEN),添加幾個字段,可以參考微信官方文檔3.1,鏈接如下:https://mp.weixin.qq.com/cgi-bin/announce?action=getannouncement&key=1490190158&version=1&lang=zh_CN&platform=2
3:領(lǐng)取卡券
3.1:先獲取openId
小程序端代碼,通過調(diào)用wx.login獲取code,再調(diào)用https://api.weixin.qq.com/sns/jscode2session接口獲取openid,博主看到很多例子是直接從小程序端調(diào)用這個接口,但我事實中發(fā)現(xiàn)是行不通的,因為這個域名無法添加到小程序的request合法域名中,微信給的說明是不要在前端調(diào)用這個接口,需要通過后臺,那沒辦法嘍
[javascript]?view plaincopy
wx.login({
success:?function(res)?{
varservice_url?='https://???/???/weixin/api/login?code='+?res.code;//需要將服務器域名添加到小程序的request合法域名中,而且必須是https開頭
wx.request({
url:?l,
data:?{},
method:?'GET',
success:?function(res)?{
console.log(res);
if(res.data?!=null&&?res.data?!=?undefined?&&?res.data?!='')?{
wx.setStorageSync("openid",?res.data.openid);//將獲取的openid存到緩存中
}
}
});
}
});
后端java代碼
[java]?view plaincopy
/**
*?小程序后臺登錄,向微信平臺發(fā)送獲取access_token請求,并返回openId
*?@param?code
*?@return?用戶憑證
*?@throws?WeixinException
*?@throws?IOException
*?@throws?JsonMappingException
*?@throws?JsonParseException
*/
@RequestMapping("login")
@ResponseBody
publicMap?login(String?code,?HttpServletRequest?request)throwsWeixinException,?JsonParseException,?JsonMappingException,?IOException?{
if(code?==null||?code.equals(""))?{
thrownewWeixinException("invalid?null,?code?is?null.");
}
Map?ret?=?newHashMap();
//拼接參數(shù)
String?param?=?"?grant_type="+?grant_type?+"&appid="+?appid?+"&secret="+?secret?+"&js_code="+?code;
原作者: 模板之家
來自: 網(wǎng)絡收集
文章評論0人參與
GMT+8, 2021-3-2 02:42, Processed in 0.101293 second(s), 19 queries
.
Powered by X3.4
? 2007-20120 Comsenz Inc.
總結(jié)
以上是生活随笔為你收集整理的微信小程序卡券java_微信小程序领取卡券(java)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python 对象_Python中的Ba
- 下一篇: 小三角