一、介绍
最近我在做一个微信卡券的项目,在微信公众号新建了卡券,在项目中需要做查询,把微信公众号建的卡券查询出来并存到数据库中,记录一下开发流程,省的以后走弯路
二、注意
调取卡券使用的access_token是普通access_token
获取普通access_token方法:https://blog.csdn.net/cl11992/article/details/86304653
三、代码实例
下面代码需要的类
UrlConUtil:https://blog.csdn.net/cl11992/article/details/86303800
/**
* 秒转换为指定格式的日期
* @param second
* @param patten
* @return
*/
private String secondToDate(long second,String patten) {
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(second * 1000);//转换为毫秒
Date date = calendar.getTime();
SimpleDateFormat format = new SimpleDateFormat(patten);
String dateString = format.format(date);
return dateString;
}
/**
* 查询卡券
* @param accessToken 普通access_token
* @param cardId 第三方卡券id
* @return
*/
private JSONObject getCard(String accessToken, String cardId){
JSONObject json = new JSONObject();
try{
JSONObject paramjson = new JSONObject();
String url="https://api.weixin.qq.com/card/get?access_token="+accessToken;
paramjson.put("card_id", cardId);
JSONObject object = UrlConUtil.httpsRequest(url, "POST", paramjson.toString());
int errcode = (int) object.get("errcode");
if(errcode!=0){
json.put("success", false);
json.put("msg", "查询失败");
return json;
}
Map<String,Object> resultMap = (Map<String, Object>) object.get("card");
if(resultMap.isEmpty()){
json.put("success", false);
json.put("msg", "查询失败");
return json;
}
Map<String, Object> generalCouponMap = (Map<String, Object>) resultMap.get("general_coupon");
Map<String, Object> baseInfoMap = (Map<String, Object>) generalCouponMap.get("base_info");
Map<String, Object> dateInfoMap = (Map<String, Object>) baseInfoMap.get("date_info");
Map<String, Object> skuMap = (Map<String, Object>) baseInfoMap.get("sku");
//卡券类型
String cardType = (String)resultMap.get("card_type");
json.put("cardType", cardType);
//卡券名称
String name = (String)baseInfoMap.get("title");
json.put("name", name);
//卡券logo
String logo = (String)baseInfoMap.get("logo_url");
json.put("logo", logo);
//开始时间(秒数需要转换格式)
int beginTimestamp = (int)dateInfoMap.get("begin_timestamp");
String beginDate = secondToDate(beginTimestamp,"yyyy-MM-dd");
json.put("beginDate", beginDate);
//到期时间(秒数需要转换格式)
int endTimestamp = (int)dateInfoMap.get("end_timestamp");
String endDate = secondToDate(endTimestamp,"yyyy-MM-dd");
json.put("endDate", endDate);
//卡券总数量
int allCount = (int)skuMap.get("total_quantity");
json.put("allCount", allCount);
//卡券剩余数量
int surplusCount = (int)skuMap.get("quantity");
json.put("surplusCount",surplusCount);
//卡券说明
String explain = (String) baseInfoMap.get("description");
json.put("explain", explain);
//卡券领取限制
int singleCount = (int)skuMap.get("get_limit");
json.put("singleCount",singleCount);
//卡券详情返回数据
json.put("returnValue",resultMap);
//返回内容
json.put("success", true);
json.put("msg", "操作成功");
return json;
}catch (Exception e) {
json.put("success", false);
json.put("msg", "查询失败");
return json;
}
}