一、介绍

最近我在做一个微信卡券的项目,在微信公众号新建了卡券,在项目中领取了卡券,需要做核销动作,记录一下开发流程,省的以后走弯路

二、注意

调取卡券使用的access_token是普通access_token

获取普通access_token方法:https://blog.csdn.net/cl11992/article/details/86304653

三、代码实例

下面代码需要的类

AccessTokenUtils:https://blog.csdn.net/cl11992/article/details/86304653

UrlConUtil:https://blog.csdn.net/cl11992/article/details/86303800

/** 查询Code接口* 我们强烈建议开发者在调用核销code接口之前调用查询code接口,* 并在核销之前对非法状态的code(如转赠中、已删除、已核销等)做出处理。* @param code 券号:单张卡券的唯一标准。 */
private JSONObject check(final String code) {JSONObject json = new JSONObject();try {CommonVO data = new CommonVO();if (StringUtils.isBlank(code)) {json.put("state", "2");// 1--成功,2--失败json.put("msg", "缺少参数!");return json;}//获取access_tokenMap<String, String> accessTokenMap = AccessTokenUtils.getAccessToken;String token = accessTokenMap("access_token");String url = "https://api.weixin.qq.com/card/code/get?access_token=" + token;JSONObject paramjson = new JSONObject();paramjson.put("code", code);// 单张卡券的唯一标准。paramjson.put("check_consume", false);// 是否校验code核销状态,是否校验code核销状态,填入true和false时的code异常状态返回数据不同。JSONObject object = UrlConUtil.httpsRequest(url, "POST", paramjson.toString());String user_card_status = (String) object.get("user_card_status");// 当前code对应卡券的状态String info = null;boolean status = true;if ("NORMAL".equalsIgnoreCase(user_card_status)) {// NORMAL 正常status = true;} else if ("CONSUMED".equalsIgnoreCase(user_card_status)) {// CONSUMED 已核销info = "操作失败:" + "卡券已被核销过";status = false;} else if ("EXPIRE".equalsIgnoreCase(user_card_status)) {// EXPIRE 已过期info = "操作失败:" + "卡券已过期";status = false;} else if ("GIFTING".equalsIgnoreCase(user_card_status)) {// GIFTING 转赠中info = "操作失败:" + "卡券已在转赠中";status = false;} else if ("GIFT_TIMEOUT".equalsIgnoreCase(user_card_status)) {// GIFT_TIMEOUT 转赠超时info = "操作失败:" + "卡券已转赠超时";status = false;} else if ("DELETE".equalsIgnoreCase(user_card_status)) {// DELETE 已删除info = "操作失败:" + "卡券已被删除";status = false;} else if ("UNAVAILABLE".equalsIgnoreCase(user_card_status)) {// UNAVAILABLE 已失效info = "操作失败:" + "卡券已失效";status = false;} else {// code未被添加或被转赠领取的情况则统一报错:invalid serial codeinfo = "操作失败:" + "卡券未被添加或已被转赠领取";status = false;}json.put("state", status == true ? "1" : "2");// 1--成功,2--失败json.put("msg", info);return json;} catch (Exception e) {logger.error("查询微信卡券报错:", e);return json;}
}
/*** 核销Code接口* 消耗code接口是核销卡券的唯一接口,开发者可以调用当前接口将用户的优惠券进行核销,该过程不可逆。* @param cardId 卡券ID代表一类卡券。 (非必填)* @param code 券号:单张卡券的唯一标准。* @throws Exception*/
private JSONObject consume(final String cardId, final String code) {JSONObject json = new JSONObject();try{//获取access_tokenMap<String, String> accessTokenMap = AccessTokenUtils.getAccessToken;String token = accessTokenMap("access_token");String url = "https://api.weixin.qq.com/card/code/consume?access_token=" + token;JSONObject paramjson = new JSONObject();// paramjson.put("card_id", cardId);//卡券ID代表一类卡券。非必填paramjson.put("code", code);// 单张卡券的唯一标准。JSONObject object = UrlConUtil.httpsRequest(url, "POST", json.toString());int errcode = (int) object.get("errcode");String errmsg = (String) object.get("errmsg");if (errcode != 0) {json.put("state", "2");// 1--成功,2--失败json.put("msg", code+"调用核销Code接口异常,errcode=" + errcode + ",errmsg=" + errmsg);return json;}json.put("state", "1");// 1--成功,2--失败json.put("msg", "核销成功!");return json;}catch (Exception e) {json.put("state", "2");// 1--成功,2--失败json.put("msg", "核销失败!");return json;}
}

微信卡券开发-卡券核销相关推荐

  1. 微信卡券开发-卡券领取config包装(附:卡券签名错误解决方案)

    一.介绍 微信卡券领取的时候,调用js领取接口,需要给包装一个config,给js使用 开发的时候遇到了很多坑,在这里面记录一下 二.注意 1.卡券使用的jsapi_ticket,比较特殊,具体获取方 ...

  2. 微信公众平台卡券API接口开发指南

    文章目录 说明 卡券术语介绍 卡券生命周期流程图 准备 申请开发账号 公众平台开发配置 公众号开发信息配置 填写服务器配置并验证有效性 申请微信认证及开通微信卡券功能 卡券分类 普通卡券 会员卡券 朋 ...

  3. 微信公众号 卡券 addCard 签名错误 踩坑记录

    微信公众号 卡券 addCard 签名错误 踩坑记录 今天做微信卡券 添加卡券一直报签名错误 参考了好多文档 理了下思路 希望对遇到这问题的人有帮助.另外 本人小白一名,代码有不规范的地方,请大神勿喷 ...

  4. 微信网页开发,JS-SDK说明文档(openLocation地图错误)

    2019独角兽企业重金招聘Python工程师标准>>> 获取微信信息,我这是php代码 //获取微信信息public function getSignPackage() {$appI ...

  5. java 对比两个表的字段的差异_Joolun小程序商城 2.2.2版本上线了——Java微信快速开发平台...

    Joolun是一款基于spring-boot的微信快速开发平台,目前拥有公众号基础版和小程序商城版两个版本.Joolun采用目前流行的前后端分离技术所写,是一款高效.易用的java微信开发框架平台,二 ...

  6. atitit.微信项目开发效率慢的一些总结

    atitit.微信项目开发效率慢的一些总结 #---理念问题..这个是最大的问题.. 要有专人提升开发效率才好.. #---没有一个好的开发方法体系.... ini deve 法. fell asd+ ...

  7. 微信服务号 微信支付开发

    微信支付,须要通过微信支付验证 眼下.支付仅限服务号, 做微信支付开发,主要看开发文档 统一下单. 订单查询 退款等 1.发起支付.都是通过h5发起的,首先获取prepay_id 发起支付,须要统一下 ...

  8. 微信支付通知 php,微信支付开发交易通知实例

    一.交易通知 用户在成功完成支付后,微信后台通知(POST)商户服务器(notify_url)支付结果.商户可以使用notify_url的通知结果进行个性化页面的展示. 对后台通知交互时,如果微信收到 ...

  9. 微信支付 php编程,PHP编程:微信支付开发交易通知实例

    <PHP编程:微信支付开发交易通知实例>要点: 本文介绍了PHP编程:微信支付开发交易通知实例,希望对您有用.如果有疑问,可以联系我们. 一.交易通知 用户在成功完成支付后,微信后台通知( ...

  10. 微信企业号开发:启用回调模式

    微信企业号开发怎样启用回调模式?就是简单的登陆PC版微信,点击应用中心,选择须要应用,再点击回调模式启用? 似乎不是这么简单.! 能够看到核心的仅仅有三个URL.Token,EncodingAESKe ...

最新文章

  1. php 模块指令,php artisan module常用命令
  2. PythonScript_demo--搭建PXE服务器
  3. php 变量写入数据库,PHP基础/JS变量存入数据库 | 学步园
  4. Cannot SET AUTOTRACE 处理办法
  5. android小闹钟课程设计,《小闹钟》教学设计
  6. H3C FTP配置示例
  7. 真人拳皇项目第六次Scrum总结——史经浩
  8. iOS - OC 与 Swift 互相操作
  9. mysql语法子查询_(十四)MySQL语法-子查询(二)
  10. 池化和反池化、卷积层的理解layers.Conv2D,可视化卷积padding
  11. mount挂载不上,不提示任何信息
  12. ROS学习(一)Ros 中使用kinect
  13. 设置div的内容及子标签向右对齐
  14. 服务注册与发现 — 选择 CP 还是 AP?
  15. tgp进游戏不显示服务器连接异常,TGP启用腾讯游戏提示“TCLS_CORE异常退出”的解决方法...
  16. VC键盘VK键值列表
  17. canvas 多个图片叠加,图片覆盖图片显示到imageview
  18. SpringBoot集成文件 - 集成POI之Excel导入导出
  19. linux运行不存在的命令报错
  20. “重庆英才·智汇北碚”行动暨产业园成立大会启动

热门文章

  1. ftp命令上传文件及文件夹
  2. 数字交通灯设计(Multisim仿真+PCB实物)
  3. ASP.NET MVC 5 - 入门
  4. l36h android os,Sony Xperia Z(L36h)怎么刷魅族Flyme OS
  5. swfupload 无法加载_flash上传插件——swfupload 【原创】
  6. Python实现供应链数据分析
  7. 可以上传、下载文件的SSH客户端软件--SecureCRT绿色版
  8. aac怎么转化为mp3格式?
  9. pip install 安装requirements.txt经常报错解决方法
  10. c语言编程围棋,用C语言编程 在屏幕上显示围棋棋盘