浅析微信支付:公众平台卡券功能开通、HTML5线上发券(JS-SDK接口)、查看卡券详情 (4)

获取微信全局accessToken:

/** * 获取微信全局accessToken * * @param code 标识 * @return accessToken */ public String getAccessToken(String code) { // 取redis数据 String key = WXConstants.WECHAT_ACCESSTOKEN + code; String accessToken = (String) redisTemplate.opsForValue().get(key); if (accessToken != null) { return accessToken; } // 通过接口取得access_token JSONObject jsonObject = restTemplate.getForObject(MessageFormat.format(WXURL.BASE_ACCESS_TOKEN, WXPayConstants.APP_ID, WXPayConstants.SECRET), JSONObject.class); String token = (String) jsonObject.get("access_token"); if (StringUtils.isNotBlank(token)) { // 存储redis redisTemplate.opsForValue().set(key, token, 7000, TimeUnit.SECONDS); return token; } else { log.error("获取微信accessToken出错,微信返回信息为:[{}]", jsonObject.toString()); } return null; }

获取卡券 api_ticket 的 api:

/** * 获取卡券 api_ticket 的 api * 请求路径:https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token={0}&type=wx_card * * @param access_token token * @return api_ticket json obj * @author yclimb * @date 2018/9/21 */ public String getWxCardApiTicket(String access_token) { if (StringUtils.isBlank(access_token)) { return null; } try { // redis key String redisKey = RedisKeyUtil.keyBuilder(RedisKeyEnum.IMALL_WXCARD_APITICKET, access_token); // 从redis中获取缓存 Object obj = redisTemplate.opsForValue().get(redisKey); if (obj != null) { return obj.toString(); } // 获取卡券 api_ticket String api_ticket = restTemplate.getForObject(WXURL.BASE_API_TICKET, String.class, access_token); WXPayUtil.getLogger().info("getWxCardApiTicket:api_ticket:{}", api_ticket); if (StringUtils.isBlank(api_ticket)) { return null; } JSONObject jsonObject = JSON.parseObject(api_ticket); if (0 != jsonObject.getIntValue("errcode")) { return null; } // 设置到redis中,下次取直接拿缓存即可,防止多次生成 String ticket = jsonObject.getString("ticket"); redisTemplate.opsForValue().set(redisKey, ticket, jsonObject.getIntValue("expires_in"), TimeUnit.SECONDS); return ticket; } catch (Exception e) { WXPayUtil.getLogger().error(e.getMessage(), e); } return null; }

以上代码可以获取cardList,将此参数替换到微信官方方法中即可唤起领券页面;需要注意的是,公众平台和商户平台的券领取的方式不同,这里是以公众平台为例子,如果小伙伴要用商户平台这样为用户发券,是无法成功的哟。

查看卡券详情

开发者可以调用该接口查询某个card_id的创建信息、审核状态以及库存数量。

接口调用:

HTTP请求方式:POST URL:https://api.weixin.qq.com/card/get?access_token=TOKEN 参数:card_id,卡券ID

接口文档(进入链接后查询 查看卡券详情 可快速定位):

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

此接口官方介绍已经很详细,这里就不细讲了,大家参考官方文档即可。

结语

以上为微信公众平台-卡券功能相关的解释和源码,小伙伴们一定要注意看看官方文档哦,具体的源码可以看作者的github,里面对每个方法有详细的注释。

如果小伙伴有遇到解决不了的问题,可以关注作者微信公众号,加入讨论群中发出疑问,和小伙伴们一起解决哦~

预告:下一篇文章会讲发放奖励的另一种方式 公众平台-社交立减金活动,敬请期待!!!

​如果想要提前一览源码的小伙伴,可以先看看我的 github,地址如下:

​​https://github.com/YClimb/wxpay-sdk/blob/master/README.md ​

关注作者微信公众号,点击下方讨论群,扫码即可加入微信支付讨论群与小伙伴一起探讨哦~

到此本文就结束了,关注公众号查看更多推送!!!

关注我的公众号

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpxwww.html