找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索本站精品资源

首页 教程频道 小程序开发 查看内容

微信小程序领取卡券(java)

作者:模板之家 2017-12-29 18:08 4624人关注

最近做了个领取微信卡券的小程序,看了很多文档资料以及花了很多时间才算搞定的,不过也算是好事多磨,这边记录分享一下,也算给一点提升。 一、开发前准备 1:申请微信公众号

最近做了个领取微信卡券的小程序,看了很多文档资料以及花了很多时间才算搞定的,不过也算是好事多磨,这边记录分享一下,也算给一点提升。

一、开发前准备

1:申请微信公众号 和 微信小程序,这是两个不同的东西,都需要单独申请、不同的帐号;

2:微信公众号需要开通微信卡券的功能;

3:在微信公众号里面去绑定小程序;

4:申请微信开放平台,并将微信公众号 和 微信小程序绑定到该开放平台。(注:绑定到开发平台下的作用只是为了获取unionid,因为同一用户在 公众号 和 小程序下获得的openid是不一样的,如果公众号 和 小程序都需要领取卡券,则最好通过unionid来跟踪用户;如果你只是开发微信小程序的领取卡券,则完全可以忽略第4点,博主本人也没有去绑定到微信开放平台,感觉步骤好多,特别麻烦!)

 

二、开始开发

1:获取微信卡券

https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1451025272

这边可以直接通过微信公众号提供的接口获取或者创建微信的卡券,此处不过多介绍,只是提一下这边要获取的access_token,网址如下https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140183,代码直接如下:

 

[java] view plain copy
 
  1. private static String grantType = "client_credential";  
  2.     public static String appId = "";            //微信公众号appid  
  3.         public static String secret = "";           //微信公众号密钥  
  4.     public static AccessToken token = null;         //微信公众号的accessToken对象,由于请求次数有限制,这里使用全局静态变量保存起来  
  5.     public static AccessToken getToken() throws WeixinException, JsonParseException, JsonMappingException, IOException{  
  6.         if(token == null || token.getExpires_in() < System.currentTimeMillis()){  
  7.             //拼接参数  
  8.             String param = "?grant_type=" + grantType + "&appid=" + appId + "&secret=" + secret;  
  9.             //创建请求对象  
  10.                 HttpsClient http = new HttpsClient();  
  11.                 //调用获取access_token接口  
  12.                 Response res = http.get("https://api.weixin.qq.com/cgi-bin/token" + param);  
  13.                 System.out.println(res.asString());  
  14.                 ObjectMapper mapper = new ObjectMapper();  
  15.                 token = mapper.readValue(res.asString(),AccessToken.class);  
  16.         }  
  17.             return token;  
  18.     }  


 

其中需要jackson和weixin4j的jar包,比较普遍,请自行下载;而AccessToken对象也比较简单,就errcode、errmsg、access_token、expires_in这四个参数,比较简单,在文章结尾贴代码

 

2:升级微信卡券

其实这个步骤也可以省略,升级微信卡券的目的是可以直接从微信卡券跳转到对应的小程序,博主就偷懒了,直接跳过了这个步骤;

不过升级卡券也比较简单,就是调用调用微信公众号的更改微信卡券接口(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:领取卡券

3.1:先获取openId

小程序端代码,通过调用wx.login获取code,再调用https://api.weixin.qq.com/sns/jscode2session接口获取openid,博主看到很多例子是直接从小程序端调用这个接口,但我事实中发现是行不通的,因为这个域名无法添加到小程序的request合法域名中,微信给的说明是不要在前端调用这个接口,需要通过后台,那没办法喽

 

[javascript] view plain copy
 
  1. wx.login({  
  2.   success: function (res) {  
  3.     var service_url = 'https://???/???/weixin/api/login?code=' + res.code;//需要将服务器域名添加到小程序的request合法域名中,而且必须是https开头  
  4.     wx.request({  
  5.       url: l,  
  6.       data: {},  
  7.       method: 'GET',  
  8.       success: function (res) {  
  9.         console.log(res);  
  10.         if (res.data != null && res.data != undefined && res.data != '') {  
  11.           wx.setStorageSync("openid", res.data.openid);//将获取的openid存到缓存中  
  12.         }  
  13.       }  
  14.     });  
  15.   }  
  16. });  

 

后端java代码

 

[java] view plain copy
 
  1. /** 
  2.   * 小程序后台登录,向微信平台发送获取access_token请求,并返回openId 
  3.   * @param code 
  4.   * @return 用户凭证 
  5.   * @throws WeixinException 
  6.   * @throws IOException  
  7.   * @throws JsonMappingException  
  8.   * @throws JsonParseException  
  9.   */  
  10.  @RequestMapping("login")  
  11.  @ResponseBody  
  12.  public Map<String, Object> login(String code, HttpServletRequest request) throws WeixinException, JsonParseException, JsonMappingException, IOException {  
  13.      if (code == null || code.equals("")) {  
  14.          throw new WeixinException("invalid null, code is null.");  
  15.      }  
  16.        
  17.      Map<String, Object> ret = new HashMap<String, Object>();  
  18.      //拼接参数  
  19.      String param = "?grant_type=" + grant_type + "&appid=" + appid + "&secret=" + secret + "&js_code=" + code;  
  20.        
  21. 邀请

路过

雷人

握手

鲜花

鸡蛋
原作者: 模板之家 来自: 网络收集

全部回复(0)