Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
增加会员卡创建接口。
  • Loading branch information
袁启勋 committed Aug 28, 2018
commit 3c74bb4fa8062f2394bd8990a1f2436f3c46d924
Original file line number Diff line number Diff line change
@@ -1,10 +1,7 @@
package me.chanjar.weixin.mp.api;

import me.chanjar.weixin.common.error.WxErrorException;
import me.chanjar.weixin.mp.bean.membercard.WxMpMemberCardActivatedMessage;
import me.chanjar.weixin.mp.bean.membercard.WxMpMemberCardUpdateMessage;
import me.chanjar.weixin.mp.bean.membercard.WxMpMemberCardUpdateResult;
import me.chanjar.weixin.mp.bean.membercard.WxMpMemberCardUserInfoResult;
import me.chanjar.weixin.mp.bean.membercard.*;

/**
* 会员卡相关接口
Expand All @@ -19,6 +16,14 @@ public interface WxMpMemberCardService {
*/
WxMpService getWxMpService();

/**
* 会员卡创建接口
* @param createMessageMessage
* @return
* @throws WxErrorException
*/
String createMemberCard(WxMpMemberCardCreateMessage createMessageMessage) throws WxErrorException;

/**
* 会员卡激活接口
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,7 @@
import me.chanjar.weixin.common.error.WxErrorException;
import me.chanjar.weixin.mp.api.WxMpMemberCardService;
import me.chanjar.weixin.mp.api.WxMpService;
import me.chanjar.weixin.mp.bean.membercard.WxMpMemberCardActivatedMessage;
import me.chanjar.weixin.mp.bean.membercard.WxMpMemberCardUpdateMessage;
import me.chanjar.weixin.mp.bean.membercard.WxMpMemberCardUpdateResult;
import me.chanjar.weixin.mp.bean.membercard.WxMpMemberCardUserInfoResult;
import me.chanjar.weixin.mp.bean.membercard.*;
import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
Expand All @@ -26,6 +23,7 @@ public class WxMpMemberCardServiceImpl implements WxMpMemberCardService {

private final Logger log = LoggerFactory.getLogger(WxMpMemberCardServiceImpl.class);

private static final String MEMBER_CARD_CREAET = "https://api.weixin.qq.com/card/create";
private static final String MEMBER_CARD_ACTIVATE = "https://api.weixin.qq.com/card/membercard/activate";
private static final String MEMBER_CARD_USER_INFO_GET = "https://api.weixin.qq.com/card/membercard/userinfo/get";
private static final String MEMBER_CARD_UPDATE_USER = "https://api.weixin.qq.com/card/membercard/updateuser";
Expand All @@ -46,6 +44,24 @@ public WxMpService getWxMpService() {
return this.wxMpService;
}

/**
* 会员卡创建接口
*
* @param createMessageMessage 创建所需参数
* @return 调用返回的JSON字符串。
* @throws WxErrorException 接口调用失败抛出的异常
*/
@Override
public String createMemberCard(WxMpMemberCardCreateMessage createMessageMessage) throws WxErrorException {
JsonObject jsonObject = new JsonObject();
JsonObject cardJson = new JsonObject();
jsonObject.add("card", cardJson);
cardJson.addProperty("card_type","MEMBER_CARD");
cardJson.addProperty("member_card",createMessageMessage.toString());

return this.wxMpService.post(MEMBER_CARD_CREAET, GSON.toJson(jsonObject));
}

/**
* 会员卡激活接口
*
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package me.chanjar.weixin.mp.bean.card;

import com.google.gson.annotations.SerializedName;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

import java.io.Serializable;

/**
* 封面摘要
* author:yuanqixun
* date:2018-08-25 00:35
*/
@Data
public class Abstract implements Serializable {

/**
* 摘要
*/
@SerializedName("abstract")
private String abstractInfo;

/**
* 封面图片列表,仅支持填入一 个封面图片链接, 上传图片接口 上传获取图片获得链接,填写 非CDN链接会报错,并在此填入。 建议图片尺寸像素850*350
*/
@SerializedName("icon_url_list")
private String iconUrlList;

public String toString(){
return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
package me.chanjar.weixin.mp.bean.card;

import com.google.gson.annotations.SerializedName;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
//子对象列表

/**
* 微信会员卡高级字段信息
* author:yuanqixun
* date:2018-08-25 00:36
*/
@Data
public class AdvancedInfo implements Serializable {

// public AdvancedInfo(){
// useCondition = new UseCondition();
// abstractInfo = new Abstract();
// textImageList = new ArrayList<>();
// timeLimit = new TimeLimit();
// }

/**
* 使用门槛(条件),若不填写使用条件则在券面拼写 :无最低消费限制,全场通用,不限品类;并在使用说明显示: 可与其他优惠共享
*/
@SerializedName( "use_condition")
private UseCondition useCondition;

/**
* 封面摘要
*/
@SerializedName( "abstract")
private Abstract abstractInfo;

/**
* 图文列表,显示在详情内页 ,优惠券券开发者须至少传入 一组图文列表
*/
@SerializedName( "text_image_list")
private List<TextImageList> textImageList;

/**
* 商家服务类型,数组类型:BIZ_SERVICE_DELIVER 外卖服务; BIZ_SERVICE_FREE_PARK 停车位; BIZ_SERVICE_WITH_PET 可带宠物; BIZ_SERVICE_FREE_WIFI 免费wifi, 可多选
*/
@SerializedName( "business_service")
private String businessService;

/**
* 使用时段限制
*/
@SerializedName( "time_limit")
private TimeLimit timeLimit;

public String toString(){
return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,195 @@
package me.chanjar.weixin.mp.bean.card;

import com.google.gson.annotations.SerializedName;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

import java.io.Serializable;
//子对象列表

/**
* 微信会员卡基本信息
* author:yuanqixun
* date:2018-08-25 00:36
*/
@Data
public class BaseInfo implements Serializable {

public BaseInfo() {
payInfo = new PayInfo();
dateInfo = new DateInfo();
}

/**
* 卡券的商户logo,建议像素为300*300。
*/
@SerializedName("logo_url")
private String logoUrl;

/**
* Code展示类型,"CODE_TYPE_TEXT" 文本 "CODE_TYPE_BARCODE" 一维码 "CODE_TYPE_QRCODE" 二维码 "CODE_TYPE_ONLY_QRCODE" 仅显示二维码 "CODE_TYPE_ONLY_BARCODE" 仅显示一维码 "CODE_TYPE_NONE" 不显示任何码型
*/
@SerializedName("code_type")
private String codeType = "CODE_TYPE_QRCODE";

/**
* 支付功能结构体,swipe_card结构
*/
@SerializedName("pay_info")
private PayInfo payInfo;

/**
* 商户名字,字数上限为12个汉字
*/
@SerializedName("brand_name")
private String brandName;

/**
* 卡券名,字数上限为9个汉字 (建议涵盖卡券属性、服务及金额)。
*/
@SerializedName("title")
private String title;

/**
* 券颜色,按色彩规范标注填写Color010-Color100
*/
@SerializedName("color")
private String color;

/**
* 卡券使用提醒,字数上限为16个汉字
*/
@SerializedName("notice")
private String notice;

/**
* 卡券使用说明,字数上限为1024个汉字。
*/
@SerializedName("description")
private String description;

/**
* 商品信息
*/
@SerializedName("sku")
private Sku sku;

/**
* 使用日期,有效期的信息。
*/
@SerializedName("date_info")
private DateInfo dateInfo;

/**
* 是否自定义Code码,填写true或false,默认为false 通常自有优惠码系统的开发者选择自定义Code码,详情见 是否自定义code
*/
@SerializedName("use_custom_code")
private boolean useCustomCode;

/**
* 是否指定用户领取,填写true或false。默认为false
*/
@SerializedName("bind_openid")
private boolean bindOpenid;

/**
* 客服电话
*/
@SerializedName("service_phone")
private String servicePhone;

/**
* 门店位置ID,调用 POI门店管理接口 获取门店位置ID。
*/
@SerializedName("location_id_list")
private String locationIdList;

/**
* 会员卡是否支持全部门店,填写后商户门店更新时会自动同步至卡券
*/
@SerializedName("use_all_locations")
private boolean useAllLocations = true;

/**
* 卡券中部居中的按钮,仅在卡券激活后且可用状态 时显示
*/
@SerializedName("center_title")
private String centerTitle;

/**
* 显示在入口下方的提示语,仅在卡券激活后且可用状态时显示
*/
@SerializedName("center_sub_title")
private String centerSubTitle;

/**
* 顶部居中的url,仅在卡券激活后且可用状态时显示
*/
@SerializedName("center_url")
private String centerUrl;

/**
* 自定义跳转外链的入口名字
*/
@SerializedName("custom_url_name")
private String customUrlName;

/**
* 自定义跳转的URL
*/
@SerializedName("custom_url")
private String customUrl;

/**
* 显示在入口右侧的提示语
*/
@SerializedName("custom_url_sub_title")
private String customUrlSubTitle;

/**
* 营销场景的自定义入口名称
*/
@SerializedName("promotion_url_name")
private String promotionUrlName;

/**
* 入口跳转外链的地址链接
*/
@SerializedName("promotion_url")
private String promotionUrl;

/**
* 显示在营销入口右侧的提示语
*/
@SerializedName("promotion_url_sub_title")
private String promotionUrlSubTitle;

/**
* 每人可领券的数量限制,建议会员卡每人限领一张
*/
@SerializedName("get_limit")
private Integer getLimit;

/**
* 卡券领取页面是否可分享,默认为true
*/
@SerializedName("can_share")
private boolean canShare;

/**
* 卡券是否可转赠,默认为true
*/
@SerializedName("can_give_friend")
private boolean canGiveFriend;

/**
* 用户点击进入会员卡时推送事件,填写true为用户点击进入会员卡时推送事件,默认为false。详情见 进入会员卡事件推送
*/
@SerializedName("need_push_on_view")
private boolean needPushOnView;

public String toString() {
return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
}
}
Loading