1、需要授权页面(访问页面的时候加载微信提供的API拿到CODE值,然后就行CODE拿到APPID)
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no" />
<meta name="format-detection" content="telphone:yes">
<meta name="keywords" content="">
<meta name="description" content="">
<title>助力减学费活动</title>
<link rel="stylesheet" type="text/css" href="/assets/css/style_activity.css">
<script src="/assets/cdn/jquery.min.js"></script>
<script src="/assets/js/ag-ajax.js"></script>
</head>
<body class="invite-reduce-bg">
<img src="/assets/images/active_bg.jpg">
<div class="invite-result-wrap">
<div class="reduce-result relative">
<img src="/assets/images/recommand-result.png" class="result-img padding-top-1">
<span class="result-text short-text margin-space">已为{{my_helper}}助力 {{reduceCount}} 元</span>
<div v-if="reduceCountArr.length === 58">
<a href="success_exchange.html" class="link-package-btn">{{name}}<i class="right-arrow-icon"></i></a>
<em class="decoration-icon"></em>
</div>
</div>
<div class="result-group">
<!-- 最多放四个 -->
<h3 class="result-group-top"><span class="long-title-icon">好友助力排行榜</span></h3>
<ul class="result-group-middle">
<li class="result-item clearfix flex align-items-center" v-for="(value, index) in reduceCountArr.slice(0,num)">
<div class="user-wrap float-left flex flex-start">
<img :src="value.res1" class="user-tx">
<div>
<p class="user-name">{{value.friend_name}}</p>
<p class="user-date">{{value.help_time}}</p>
</div>
</div>
<div class="reduce-count float-left flex align-items-center">+{{value.help_money}}元</div>
</li>
</ul>
<span class="result-group-bottom" v-if="reduceCountArr.length >= 4" @click="loadMore">{{loadMoreText}}</span>
</div>
<div class="continue-invite-wrap">
<a href="invite_reduce_rules.html" class="link-rule-btn margin-space">活动规则<i class="right-arrow-icon"></i></a>
<img src="/assets/images/logo.png">
<div class="continue-invite-btn flex align-items-center">
<a :href="url + cid"></a>
</div>
</div>
</div>
</body>
<script src="/assets/js/vue.min.js"></script>
<script src="/assets/js/axios.min.js"></script>
<script>
var vm = new Vue({
el: '.invite-result-wrap',
data: {
name: '兑换成学费礼包',
reduceCount: '3.25',
reduceCountArr: [],
num: 4, //每次显示的条数
i: 1, //自增
totalCount: 0, //点击的次数
loadMoreText: '加载更多',
url: 'invite_reduce_me.html?cid=',
cid: '',
pageCount: 1,
my_helper: '',
text: ''
},
mounted: function () {
var that = this;
this.getInfo();
this.cid = this.getQuery('cid');
that.alertTip(this.text);
},
methods: {
getInfo () {
var cid = this.getQuery('cid'),
code = this.getQuery('code'),
urlHead = location.href,
url = '',
that = this;
if (!code) {
location.href = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid=填写你自己公众号的appid&redirect_uri='+ encodeURI(urlHead) +'&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect'
}else{
console.log(code);
//获取发起人信息的接口
axios.post('接口', {customer_id: cid})
.then(function(json){
console.log(json);
})
.then(function(json){
console.log(6)
//console.log(json);
console.log(2);
console.log(cid);
console.log(that.reduceCount);
console.log(code);
console.log(3);
$.post("/a/Bind/addBargain",{code: code , cid: cid, helpmoneys : that.reduceCount},function(json){
console.log(json);
var data = json.data
that.reduceCountArr = data.slice();
that.pageCount = Math.ceil(data.length / 4)
that.my_helper = data[0].my_help_name
that.text = json.status ? json.message : ('感谢您为<em>'+ that.my_helper +'</em>助力了<i>' + that.reduceCount + '</i>元');
that.alertTip(that.text);
});
console.log(4)
})
.catch(function(error){
console.log(5)
console.log(error);
})
}
},
loadMore () {
this.i++
if (this.i >= (this.pageCount + 1)) {
this.loadMoreText = '没有更多了'
return;
} else {
this.num = this.i * 4;
this.getUserList()
}
},
getQuery (name) {
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
var r = window.location.search.substr(1).match(reg); // 匹配目标参数
if (r != null)
return decodeURIComponent(r[2]);
return null; // 返回参数值
},
alertTip: function (content){ //弹出提示页面
//如果页面有forward_tip组件就更改提示内容,然后进行显示
if($("#forward_tip").css("display")){
$("#tip").html(content);
$("#forward_tip").show();
return;
}
//该页面还没有forward_tip组件就先加上
var tip = "<div id='forward_tip' style=''>"+
"<div class='tanchuang'></div>"+
"<div class='tanchuang_img2'>"+
"<span class='tip' id='tip'>"+content+"</span>"+
"<button type='submit' class='tc_btn' id='tc_btn'>确定</button>"+
"</div>"+
"</div>";
$("body").append($(tip));
//绑定按钮-隐藏提示框
$("#tc_btn").click(function(){
$("#forward_tip").remove();
})
}
}
});
</script>
</html>
2、拿到COED之后
package com.angroid.wechat;
/*
* 用户接口
* 修改备注名、获取用户信息
*/
import java.util.HashMap;
import java.util.Map;
import javax.servlet.annotation.WebFilter;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.angroid.js.JSONResponse;
public class WxUser {
//用户同意授权,获取code
public static JSONObject getCode(){
String url ="https://open.weixin.qq.com/connect/oauth2/authorize?appid=拿到自己公众号appid&redirect_uri=invite_reduce.html&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect";
return Util.postJson(url, "");
}
//通过code换取网页授权access_token
public static JSONObject access_token(String code){
String url ="https://api.weixin.qq.com/sns/oauth2/access_token?appid=自己公众号&secret=秘钥&code="+code+"&grant_type=authorization_code";
return Util.postJson(url, null);
}
//刷新access_token(如果需要)
public static JSONObject refresh_access_token(){
String url ="https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=自己公众号&grant_type=refresh_token&refresh_token=REFRESH_TOKEN";
return Util.postJson(url, "");
}
//拉取用户信息(需scope为 snsapi_userinfo)
public static JSONObject snsapi_userinfo(String openid,String acces_token){
String url ="https://api.weixin.qq.com/sns/userinfo?access_token="+acces_token+"&openid="+openid+"&lang=zh_CN";
return Util.postJson(url, null);
}
public static void main(String[] args) {
//String openid = "";//remind
//获取用户信息
Map m = access_token(code);
System.out.println("获取用户信息" + m);
}
}
3、代码实现
public String code;
public String helpmoneys;
public String cid;
public JSONResponse addBargain() {
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式
String wxcode = c.request.getParameter("wxcode");
System.out.println("code=" + code + "&cid=" + cid +"&customer_id=" + customer_id + "&helpmoneys=" + helpmoneys);
JSONObject json = WxUser.access_token(code);
String openid = json.get("openid").toString();
System.out.println("openid=" + openid + "&json= " + json");
JSONObject json2 = WxUser.snsapi_userinfo(json.getString("openid"), json.getString("access_token"));
System.out.println("json2=" + json2);
String headimgurl = json2.get("headimgurl").toString();
System.out.println("headimgurl=" + headimgurl);
String nickname = json2.get("nickname").toString();
System.out.println("/a/bind/addBargain:-----:nickname=" + nickname);
Map<String, Object> dataMaps = new HashMap<>();
//String sqls ="SELECT friend_name,open_id,friend_id FROM gzwx_bargain WHERE open_id ='"+openid+"' and friend_id =" + cid +" LIMIT 0,1";
String sqls = "SELECT count(*) as counts FROM gzwx_bargain a WHERE a.open_id ='" + openid + "' and a.friend_id =" + cid;
Map maps = SQLExecutor.row(sqls);
System.out.println("/a/bind/addBargain:-----:maps=" + maps);
String counts = maps.get("counts").toString();
System.out.println("/a/bind/addBargain:-----:counts=" + counts);
System.out.println("maps.get(counts)============================" + maps.get("counts"));
Map<String, Object> datas = new HashMap<>();
String sqlv = "SELECT count(*) as count FROM gzwx_bargain WHERE friend_id =" + cid;
Map m = SQLExecutor.row(sqlv);
String count = m.get("count").toString();
System.out.println("判断count:" + count);
Map<String, Object> dats = new HashMap<>();
String sqy = "SELECT count(*) as countx FROM gzwx_coupon WHERE user_id =" + cid;
Map mm = SQLExecutor.row(sqy);
String countx = mm.get("countx").toString();
System.out.println("判断countx:" + countx);
if (m.get("count").equals("58")) {
if (mm.get("countx").equals("0")) {
GzwxCoupon gc = new GzwxCoupon();
gc.setName(name);
gc.setCreateTime(df.format(new Date()));
gc.setStatus(2);
gc.setUserId(cid);
try {
gc.set();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
if (!m.get("count").equals("58")) {
if (maps.get("counts").equals("0") && !m.get("count").equals("58")) {
Map<String, Object> dataMap = new HashMap<>();
String sql = "SELECT a.name,a.photo FROM crm_customer a WHERE a.id =" + cid;
Map map = SQLExecutor.row(sql);
String name = map.get("name").toString();
String photo = map.get("photo").toString();
GzwxBargain gzwx = new GzwxBargain();
gzwx.setFriendId(ValueUtil.toStr(cid)); //拿到分享这的ID
gzwx.setFriendName("第" + count + "位"); //助力人名字22
//gzwx.setFriendName(nickname); //助力人名字
gzwx.setHelpMoney(helpmoneys); //助力金额
gzwx.setOpenId(openid); //openid
gzwx.setRes1(headimgurl); //助力人头像
gzwx.setHelpTime(df.format(new Date()));//时间
gzwx.setMyHelpId(ValueUtil.toStr(cid)); //发起者ID
gzwx.setMyHelpName(name); //发起者姓名
gzwx.setPhoto(photo); //发起者头像
try {
gzwx.set();
List<Map> list = c.find("bargain", this);
response.data = list;
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} else {
response = response.error(-1, "您已对该用户助力了!");
List<Map> list = c.find("bargain", this);
response.data = list;
}
} else {
response = response.error(1, "该用户已经集满成功!");
List<Map> list = c.find("bargain", this);
response.data = list;
}
return response;
}