提交会员卡相关接口。
This commit is contained in:
parent
24c5076f0b
commit
bdf63e3fc4
@ -35,6 +35,9 @@ public final class CardCoupons {
|
|||||||
return new CouponAdvanceInfo.Builder();
|
return new CouponAdvanceInfo.Builder();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static MemberCard.Builder customMemberCard(){
|
||||||
|
return new MemberCard.Builder();
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* 创建代金券
|
* 创建代金券
|
||||||
*
|
*
|
||||||
|
|||||||
@ -0,0 +1,171 @@
|
|||||||
|
package com.foxinmy.weixin4j.model.card;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.annotation.JSONField;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 会员初始化的信息
|
||||||
|
*
|
||||||
|
* @auther: Feng Yapeng
|
||||||
|
* @since: 2016/12/20 15:00
|
||||||
|
*/
|
||||||
|
public class MemberInitInfo {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 会员卡编号,由开发者填入,作为序列号显示在用户的卡包里。可与Code码保持等值。
|
||||||
|
*/
|
||||||
|
@JSONField(name = "membership_number")
|
||||||
|
private String membershipNumber;
|
||||||
|
/**
|
||||||
|
* 领取会员卡用户获得的code
|
||||||
|
*/
|
||||||
|
private String code;
|
||||||
|
/**
|
||||||
|
* 卡券ID【自定义code卡券必填】
|
||||||
|
*/
|
||||||
|
@JSONField(name = "card_id")
|
||||||
|
private String cardId;
|
||||||
|
/**
|
||||||
|
* 商家自定义会员卡背景图,须 先调用上传图片接口将背景图上传至CDN,否则报错,
|
||||||
|
* 卡面设计请遵循微信会员卡自定义背景设计规范
|
||||||
|
*/
|
||||||
|
@JSONField(name = "background_pic_url")
|
||||||
|
private String backgroundPicUrl;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 激活后的有效起始时间。若不填写默认以创建时的 date_info 为准。Unix时间戳格式
|
||||||
|
*/
|
||||||
|
@JSONField(name = "activate_begin_time")
|
||||||
|
private long activateBeginTime;
|
||||||
|
/**
|
||||||
|
* 激活后的有效截至时间。
|
||||||
|
*/
|
||||||
|
@JSONField(name = "activate_end_time")
|
||||||
|
private long activateEndTime;
|
||||||
|
/**
|
||||||
|
* 初始积分,不填为0。
|
||||||
|
*/
|
||||||
|
@JSONField(name = "init_bonus")
|
||||||
|
private Integer initBonus;
|
||||||
|
/**
|
||||||
|
* 积分同步说明。
|
||||||
|
*/
|
||||||
|
@JSONField(name = "init_bonus_record")
|
||||||
|
private String initBonusRecord;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 初始余额,不填为0。
|
||||||
|
*/
|
||||||
|
@JSONField(name = "init_balance")
|
||||||
|
private Integer initBalance;
|
||||||
|
/**
|
||||||
|
* 创建时字段custom_field1定义类型的初始值,限制为4个汉字,12字节。
|
||||||
|
*/
|
||||||
|
private String init_custom_field_value1;
|
||||||
|
/**
|
||||||
|
* 创建时字段custom_field2定义类型的初始值,限制为4个汉字,12字节。
|
||||||
|
*/
|
||||||
|
private String init_custom_field_value2;
|
||||||
|
/**
|
||||||
|
* 创建时字段custom_field3定义类型的初始值,限制为4个汉字,12字节。
|
||||||
|
*/
|
||||||
|
private String init_custom_field_value3;
|
||||||
|
|
||||||
|
public String getMembershipNumber() {
|
||||||
|
return membershipNumber;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMembershipNumber(String membershipNumber) {
|
||||||
|
this.membershipNumber = membershipNumber;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getCode() {
|
||||||
|
return code;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCode(String code) {
|
||||||
|
this.code = code;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getCardId() {
|
||||||
|
return cardId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCardId(String cardId) {
|
||||||
|
this.cardId = cardId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getBackgroundPicUrl() {
|
||||||
|
return backgroundPicUrl;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setBackgroundPicUrl(String backgroundPicUrl) {
|
||||||
|
this.backgroundPicUrl = backgroundPicUrl;
|
||||||
|
}
|
||||||
|
|
||||||
|
public long getActivateBeginTime() {
|
||||||
|
return activateBeginTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setActivateBeginTime(Date activateBeginTime) {
|
||||||
|
this.activateBeginTime = activateBeginTime.getTime() / 1000;
|
||||||
|
}
|
||||||
|
|
||||||
|
public long getActivateEndTime() {
|
||||||
|
return activateEndTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setActivateEndTime(Date activateEndTime) {
|
||||||
|
this.activateEndTime = activateEndTime.getTime() / 1000;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Integer getInitBonus() {
|
||||||
|
return initBonus;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setInitBonus(Integer initBonus) {
|
||||||
|
this.initBonus = initBonus;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getInitBonusRecord() {
|
||||||
|
return initBonusRecord;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setInitBonusRecord(String initBonusRecord) {
|
||||||
|
this.initBonusRecord = initBonusRecord;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Integer getInitBalance() {
|
||||||
|
return initBalance;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setInitBalance(Integer initBalance) {
|
||||||
|
this.initBalance = initBalance;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getInit_custom_field_value1() {
|
||||||
|
return init_custom_field_value1;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setInit_custom_field_value1(String init_custom_field_value1) {
|
||||||
|
this.init_custom_field_value1 = init_custom_field_value1;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getInit_custom_field_value2() {
|
||||||
|
return init_custom_field_value2;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setInit_custom_field_value2(String init_custom_field_value2) {
|
||||||
|
this.init_custom_field_value2 = init_custom_field_value2;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getInit_custom_field_value3() {
|
||||||
|
return init_custom_field_value3;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setInit_custom_field_value3(String init_custom_field_value3) {
|
||||||
|
this.init_custom_field_value3 = init_custom_field_value3;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,210 @@
|
|||||||
|
package com.foxinmy.weixin4j.model.card;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
import com.alibaba.fastjson.annotation.JSONField;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 会员更新的信息
|
||||||
|
*
|
||||||
|
* @auther: Feng Yapeng
|
||||||
|
* @since: 2016/12/20 15:01
|
||||||
|
*/
|
||||||
|
public class MemberUpdateInfo {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 卡券Code码。
|
||||||
|
*/
|
||||||
|
private String code;
|
||||||
|
/**
|
||||||
|
* 卡券ID。
|
||||||
|
*/
|
||||||
|
@JSONField(name = "card_id")
|
||||||
|
private String cardId;
|
||||||
|
/**
|
||||||
|
* 支持商家激活时针对单个会员卡分配自定义的会员卡背景。
|
||||||
|
*/
|
||||||
|
@JSONField(name = "background_pic_url")
|
||||||
|
private String backgroundPicUrl;
|
||||||
|
/**
|
||||||
|
* 需要设置的积分全量值,传入的数值会直接显示
|
||||||
|
*/
|
||||||
|
private Integer bonus;
|
||||||
|
/**
|
||||||
|
* 本次积分变动值,传负数代表减少
|
||||||
|
*/
|
||||||
|
@JSONField(name = "add_bonus")
|
||||||
|
private Integer addBonus;
|
||||||
|
/**
|
||||||
|
* 商家自定义积分消耗记录,不超过14个汉字
|
||||||
|
*/
|
||||||
|
@JSONField(name = "record_bonus")
|
||||||
|
private String recordBonus;
|
||||||
|
/*
|
||||||
|
* 需要设置的余额全量值,传入的数值会直接显示在卡面
|
||||||
|
*/
|
||||||
|
private Integer balance;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 本次余额变动值,传负数代表减少
|
||||||
|
*/
|
||||||
|
@JSONField(name = "add_balance")
|
||||||
|
private Integer addBalance;
|
||||||
|
/**
|
||||||
|
* 商家自定义金额消耗记录,不超过14个汉字。
|
||||||
|
*/
|
||||||
|
@JSONField(name = "record_balance")
|
||||||
|
private String recordBalance;
|
||||||
|
/**
|
||||||
|
* 创建时字段custom_field1定义类型的最新数值,限制为4个汉字,12字节。
|
||||||
|
*/
|
||||||
|
@JSONField(name = "custom_field_value1")
|
||||||
|
private String customFieldValue1;
|
||||||
|
/**
|
||||||
|
* 同上
|
||||||
|
*/
|
||||||
|
@JSONField(name = "custom_field_value2")
|
||||||
|
private String customFieldValue2;
|
||||||
|
/**
|
||||||
|
* 同上
|
||||||
|
*/
|
||||||
|
@JSONField(name = "custom_field_value3")
|
||||||
|
private String customFieldValue3;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
@JSONField(name = "notifyOptional")
|
||||||
|
private JSONObject notifyOptional;
|
||||||
|
|
||||||
|
|
||||||
|
public String getCode() {
|
||||||
|
return code;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCode(String code) {
|
||||||
|
this.code = code;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getCardId() {
|
||||||
|
return cardId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCardId(String cardId) {
|
||||||
|
this.cardId = cardId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getBackgroundPicUrl() {
|
||||||
|
return backgroundPicUrl;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setBackgroundPicUrl(String backgroundPicUrl) {
|
||||||
|
this.backgroundPicUrl = backgroundPicUrl;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Integer getBonus() {
|
||||||
|
return bonus;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setBonus(Integer bonus) {
|
||||||
|
this.bonus = bonus;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Integer getAddBonus() {
|
||||||
|
return addBonus;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAddBonus(Integer addBonus) {
|
||||||
|
this.addBonus = addBonus;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getRecordBonus() {
|
||||||
|
return recordBonus;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRecordBonus(String recordBonus) {
|
||||||
|
this.recordBonus = recordBonus;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Integer getBalance() {
|
||||||
|
return balance;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setBalance(Integer balance) {
|
||||||
|
this.balance = balance;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Integer getAddBalance() {
|
||||||
|
return addBalance;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAddBalance(Integer addBalance) {
|
||||||
|
this.addBalance = addBalance;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getRecordBalance() {
|
||||||
|
return recordBalance;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRecordBalance(String recordBalance) {
|
||||||
|
this.recordBalance = recordBalance;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getCustomFieldValue1() {
|
||||||
|
return customFieldValue1;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCustomFieldValue1(String customFieldValue1) {
|
||||||
|
this.customFieldValue1 = customFieldValue1;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCustomFieldValue1(String customFieldValue1, boolean notify) {
|
||||||
|
this.customFieldValue1 = customFieldValue1;
|
||||||
|
if (notifyOptional == null) {
|
||||||
|
notifyOptional = new JSONObject();
|
||||||
|
}
|
||||||
|
notifyOptional.put("is_notify_custom_field1", notify);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public String getCustomFieldValue2() {
|
||||||
|
return customFieldValue2;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCustomFieldValue2(String customFieldValue2) {
|
||||||
|
this.customFieldValue2 = customFieldValue2;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCustomFieldValue2(String customFieldValue2, boolean notify) {
|
||||||
|
this.customFieldValue2 = customFieldValue2;
|
||||||
|
if (notifyOptional == null) {
|
||||||
|
notifyOptional = new JSONObject();
|
||||||
|
}
|
||||||
|
notifyOptional.put("is_notify_custom_field2", notify);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getCustomFieldValue3() {
|
||||||
|
return customFieldValue3;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCustomFieldValue3(String customFieldValue3) {
|
||||||
|
this.customFieldValue3 = customFieldValue3;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCustomFieldValue3(String customFieldValue3, boolean notify) {
|
||||||
|
this.customFieldValue3 = customFieldValue3;
|
||||||
|
if (notifyOptional == null) {
|
||||||
|
notifyOptional = new JSONObject();
|
||||||
|
}
|
||||||
|
notifyOptional.put("is_notify_custom_field3", notify);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setNOtify(boolean notifyBonus, boolean notifyBalance) {
|
||||||
|
if (notifyOptional == null) {
|
||||||
|
notifyOptional = new JSONObject();
|
||||||
|
}
|
||||||
|
notifyOptional.put("is_notify_bonus", notifyBonus);
|
||||||
|
notifyOptional.put("is_notify_balance", notifyBalance);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,159 @@
|
|||||||
|
package com.foxinmy.weixin4j.model.card;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSONArray;
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
import com.alibaba.fastjson.annotation.JSONField;
|
||||||
|
import com.foxinmy.weixin4j.type.card.ActivateCommonField;
|
||||||
|
import com.foxinmy.weixin4j.type.card.ActivateFormFieldType;
|
||||||
|
|
||||||
|
import java.util.HashSet;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 普通一键激活 中设置会员卡
|
||||||
|
*
|
||||||
|
* @auther: Feng Yapeng
|
||||||
|
* @since: 2016/12/20 16:25
|
||||||
|
*/
|
||||||
|
public class MemberUserForm {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 卡券ID。
|
||||||
|
*/
|
||||||
|
@JSONField(name = "card_id")
|
||||||
|
private String cardId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 服务声明,用于放置商户会员卡守则
|
||||||
|
*/
|
||||||
|
@JSONField(name = "service_statement")
|
||||||
|
private JSONObject serviceStatement;
|
||||||
|
/**
|
||||||
|
* 绑定老会员链接
|
||||||
|
*/
|
||||||
|
@JSONField(name = "bind_old_card")
|
||||||
|
private JSONObject bindOldCard;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*设置必填的from
|
||||||
|
*/
|
||||||
|
@JSONField(name = "required_form")
|
||||||
|
private FormBudiler requiredForm;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 设置选填的form
|
||||||
|
*/
|
||||||
|
@JSONField(name = "optional_form")
|
||||||
|
private FormBudiler optionalForm;
|
||||||
|
|
||||||
|
|
||||||
|
public String getCardId() {
|
||||||
|
return cardId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCardId(String cardId) {
|
||||||
|
this.cardId = cardId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public JSONObject getServiceStatement() {
|
||||||
|
return serviceStatement;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setServiceStatement(String name,String url) {
|
||||||
|
JSONObject serviceStatement = new JSONObject();
|
||||||
|
serviceStatement.put("name",name);
|
||||||
|
serviceStatement.put("url",url);
|
||||||
|
this.serviceStatement = serviceStatement;
|
||||||
|
}
|
||||||
|
|
||||||
|
public JSONObject getBindOldCard() {
|
||||||
|
return bindOldCard;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setBindOldCard(String name,String url) {
|
||||||
|
JSONObject bindOldCard = new JSONObject();
|
||||||
|
bindOldCard.put("name",name);
|
||||||
|
bindOldCard.put("url",url);
|
||||||
|
this.bindOldCard = bindOldCard;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRequiredForm(FormBudiler formBudiler) {
|
||||||
|
this.requiredForm = formBudiler;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setOptionalForm(FormBudiler formBudiler) {
|
||||||
|
this.optionalForm = formBudiler;
|
||||||
|
}
|
||||||
|
|
||||||
|
public final static class FormBudiler {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 当前结构(required_form或者optional_form )内
|
||||||
|
* 的字段是否允许用户激活后再次修改,商户设置为true
|
||||||
|
* 时,需要接收相应事件通知处理修改事件
|
||||||
|
*/
|
||||||
|
private boolean canModify;
|
||||||
|
/**
|
||||||
|
* 自定义富文本类型,包含以下三个字段
|
||||||
|
*/
|
||||||
|
@JSONField(name = "rich_field_list")
|
||||||
|
private JSONArray richFieldList;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 微信格式化的选项类型
|
||||||
|
*/
|
||||||
|
@JSONField(name = "common_field_id_list")
|
||||||
|
private HashSet<ActivateCommonField> commonFieldIdList;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 自定义选项名称。
|
||||||
|
*/
|
||||||
|
@JSONField(name = "custom_field_list")
|
||||||
|
private HashSet<String> customFieldList;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 自定义富文本类型
|
||||||
|
*/
|
||||||
|
private FormBudiler addRichField(ActivateFormFieldType fieldType, String name, String... values) {
|
||||||
|
if (richFieldList == null) {
|
||||||
|
richFieldList = new JSONArray();
|
||||||
|
}
|
||||||
|
JSONObject obj = new JSONObject();
|
||||||
|
obj.put("type", fieldType);
|
||||||
|
obj.put("name", name);
|
||||||
|
obj.put("values", values);
|
||||||
|
richFieldList.add(obj);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 自定义公共字段
|
||||||
|
*/
|
||||||
|
public FormBudiler addCommonField(ActivateCommonField... fields) {
|
||||||
|
if (commonFieldIdList == null) {
|
||||||
|
commonFieldIdList = new HashSet<ActivateCommonField>();
|
||||||
|
}
|
||||||
|
for (ActivateCommonField field : fields) {
|
||||||
|
commonFieldIdList.add(field);
|
||||||
|
}
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 增加自定义的内容
|
||||||
|
* @param names
|
||||||
|
*/
|
||||||
|
public FormBudiler addCustomField(String... names) {
|
||||||
|
if (customFieldList == null) {
|
||||||
|
customFieldList = new HashSet<String>();
|
||||||
|
}
|
||||||
|
for (String name : names) {
|
||||||
|
customFieldList.add(name);
|
||||||
|
}
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,165 @@
|
|||||||
|
package com.foxinmy.weixin4j.model.card;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.annotation.JSONField;
|
||||||
|
import com.alibaba.fastjson.annotation.JSONType;
|
||||||
|
import com.foxinmy.weixin4j.type.Gender;
|
||||||
|
import com.foxinmy.weixin4j.type.card.UserCardStatus;
|
||||||
|
import com.foxinmy.weixin4j.util.NameValue;
|
||||||
|
import com.foxinmy.weixin4j.xml.ListsuffixResult;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 会员卡的基本信息
|
||||||
|
*
|
||||||
|
* @auther: Feng Yapeng
|
||||||
|
* @since: 2016/12/21 11:33
|
||||||
|
*/
|
||||||
|
public class MemberUserInfo {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* openId
|
||||||
|
*/
|
||||||
|
@JSONField(name = "openid")
|
||||||
|
private String openId;
|
||||||
|
/**
|
||||||
|
* 昵称
|
||||||
|
*/
|
||||||
|
@JSONField(name = "nickname")
|
||||||
|
private String nickName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 会员卡编号
|
||||||
|
*/
|
||||||
|
@JSONField(name = "mmebership_number")
|
||||||
|
private String membershipNumber;
|
||||||
|
/**
|
||||||
|
* 积分
|
||||||
|
*/
|
||||||
|
private Integer bonus;
|
||||||
|
/**
|
||||||
|
* 余额
|
||||||
|
*/
|
||||||
|
private Integer balance;
|
||||||
|
/**
|
||||||
|
* 性别
|
||||||
|
*/
|
||||||
|
private String sex;
|
||||||
|
/**
|
||||||
|
* 用户会员卡状态
|
||||||
|
*/
|
||||||
|
@JSONField(name = "user_card_status")
|
||||||
|
private UserCardStatus userCardStatus;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 是否已经被激活,true表示已经被激活,false表示未被激活
|
||||||
|
*/
|
||||||
|
@JSONField(name = "has_active")
|
||||||
|
private boolean hasActive;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 用户信息
|
||||||
|
*/
|
||||||
|
@JSONField(name = "user_info")
|
||||||
|
private UserInfo userInfo;
|
||||||
|
|
||||||
|
public String getOpenId() {
|
||||||
|
return openId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setOpenId(String openId) {
|
||||||
|
this.openId = openId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getNickName() {
|
||||||
|
return nickName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setNickName(String nickName) {
|
||||||
|
this.nickName = nickName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getMembershipNumber() {
|
||||||
|
return membershipNumber;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMembershipNumber(String membershipNumber) {
|
||||||
|
this.membershipNumber = membershipNumber;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Integer getBonus() {
|
||||||
|
return bonus;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setBonus(Integer bonus) {
|
||||||
|
this.bonus = bonus;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Integer getBalance() {
|
||||||
|
return balance;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setBalance(Integer balance) {
|
||||||
|
this.balance = balance;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getSex() {
|
||||||
|
return sex;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSex(String sex) {
|
||||||
|
this.sex = sex;
|
||||||
|
}
|
||||||
|
|
||||||
|
public UserCardStatus getUserCardStatus() {
|
||||||
|
return userCardStatus;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setUserCardStatus(UserCardStatus userCardStatus) {
|
||||||
|
this.userCardStatus = userCardStatus;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isHasActive() {
|
||||||
|
return hasActive;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setHasActive(boolean hasActive) {
|
||||||
|
this.hasActive = hasActive;
|
||||||
|
}
|
||||||
|
|
||||||
|
public UserInfo getUserInfo() {
|
||||||
|
return userInfo;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setUserInfo(UserInfo userInfo) {
|
||||||
|
this.userInfo = userInfo;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static final class UserInfo {
|
||||||
|
|
||||||
|
@JSONField(name = "common_field_list")
|
||||||
|
private ArrayList<NameValue> commonFieldValues;
|
||||||
|
|
||||||
|
@JSONField(name = "custom_field_list")
|
||||||
|
private ArrayList<NameValue> customFieldValues;
|
||||||
|
|
||||||
|
public ArrayList<NameValue> getCommonFieldValues() {
|
||||||
|
return commonFieldValues;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCommonFieldValues(ArrayList<NameValue> commonFieldValues) {
|
||||||
|
this.commonFieldValues = commonFieldValues;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ArrayList<NameValue> getCustomFieldValues() {
|
||||||
|
return customFieldValues;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCustomFieldValues(ArrayList<NameValue> customFieldValues) {
|
||||||
|
this.customFieldValues = customFieldValues;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,66 @@
|
|||||||
|
package com.foxinmy.weixin4j.type.card;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 会员卡激活设置公共字段类型
|
||||||
|
*
|
||||||
|
* @auther: Feng Yapeng
|
||||||
|
* @since: 2016/12/20 14:49
|
||||||
|
*/
|
||||||
|
public enum ActivateCommonField {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 手机号
|
||||||
|
*/
|
||||||
|
USER_FORM_INFO_FLAG_MOBILE,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 性别
|
||||||
|
*/
|
||||||
|
USER_FORM_INFO_FLAG_SEX,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 姓名
|
||||||
|
*/
|
||||||
|
USER_FORM_INFO_FLAG_NAME,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 生日
|
||||||
|
*/
|
||||||
|
USER_FORM_INFO_FLAG_BIRTHDAY,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 身份证
|
||||||
|
*/
|
||||||
|
USER_FORM_INFO_FLAG_IDCARD,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 邮箱
|
||||||
|
*/
|
||||||
|
USER_FORM_INFO_FLAG_EMAIL,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 详细地址
|
||||||
|
*/
|
||||||
|
USER_FORM_INFO_FLAG_LOCATION,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 教育背景
|
||||||
|
*/
|
||||||
|
USER_FORM_INFO_FLAG_EDUCATION_BACKGRO,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 行业
|
||||||
|
*/
|
||||||
|
USER_FORM_INFO_FLAG_INDUSTRY,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 收入
|
||||||
|
*/
|
||||||
|
USER_FORM_INFO_FLAG_INCOME,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 兴趣爱好
|
||||||
|
*/
|
||||||
|
USER_FORM_INFO_FLAG_HABIT;
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,16 @@
|
|||||||
|
package com.foxinmy.weixin4j.type.card;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 激活form表单字段类型
|
||||||
|
*
|
||||||
|
* @auther: Feng Yapeng
|
||||||
|
* @since: 2016/12/20 15:34
|
||||||
|
*/
|
||||||
|
public enum ActivateFormFieldType {
|
||||||
|
|
||||||
|
FORM_FIELD_RADIO,/*自定义单选 */
|
||||||
|
|
||||||
|
FORM_FIELD_SELECT,/*自定义选择项 */
|
||||||
|
|
||||||
|
FORM_FIELD_CHECK_BOX,/*自定义多选*/;
|
||||||
|
}
|
||||||
@ -0,0 +1,19 @@
|
|||||||
|
package com.foxinmy.weixin4j.type.card;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 用户的会员卡状态
|
||||||
|
*
|
||||||
|
* @auther: Feng Yapeng
|
||||||
|
* @since: 2016/12/21 11:42
|
||||||
|
*/
|
||||||
|
public enum UserCardStatus {
|
||||||
|
|
||||||
|
NORMAL,//正常
|
||||||
|
EXPIRE,//已过期
|
||||||
|
GIFTING,// 转赠中
|
||||||
|
GIFT_SUCC,// 转赠成功
|
||||||
|
GIFT_TIMEOUT,// 转赠超时
|
||||||
|
DELETE,//已删除
|
||||||
|
UNAVAILABLE,//已失效
|
||||||
|
;
|
||||||
|
}
|
||||||
@ -1,6 +1,7 @@
|
|||||||
package com.foxinmy.weixin4j.mp.api;
|
package com.foxinmy.weixin4j.mp.api;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSON;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
@ -15,6 +16,7 @@ import com.foxinmy.weixin4j.model.card.CardQR;
|
|||||||
import com.foxinmy.weixin4j.model.qr.QRParameter;
|
import com.foxinmy.weixin4j.model.qr.QRParameter;
|
||||||
import com.foxinmy.weixin4j.model.qr.QRResult;
|
import com.foxinmy.weixin4j.model.qr.QRResult;
|
||||||
import com.foxinmy.weixin4j.token.TokenManager;
|
import com.foxinmy.weixin4j.token.TokenManager;
|
||||||
|
import com.foxinmy.weixin4j.type.card.CardType;
|
||||||
import com.foxinmy.weixin4j.util.IOUtil;
|
import com.foxinmy.weixin4j.util.IOUtil;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -28,7 +30,7 @@ import com.foxinmy.weixin4j.util.IOUtil;
|
|||||||
* href="https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1451025056&token=&lang=zh_CN">卡券说明</a>
|
* href="https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1451025056&token=&lang=zh_CN">卡券说明</a>
|
||||||
*/
|
*/
|
||||||
public class CardApi extends MpApi {
|
public class CardApi extends MpApi {
|
||||||
private final TokenManager tokenManager;
|
protected final TokenManager tokenManager;
|
||||||
|
|
||||||
public CardApi(TokenManager tokenManager) {
|
public CardApi(TokenManager tokenManager) {
|
||||||
this.tokenManager = tokenManager;
|
this.tokenManager = tokenManager;
|
||||||
@ -155,4 +157,77 @@ public class CardApi extends MpApi {
|
|||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 由于卡券有审核要求,为方便公众号调试,可以设置一些测试帐号,这些帐号可领取未通过审核的卡券,体验整个流程。
|
||||||
|
* 1.同时支持“openid”、“username”两种字段设置白名单,总数上限为10个。
|
||||||
|
* 2.设置测试白名单接口为全量设置,即测试名单发生变化时需调用该接口重新传入所有测试人员的ID.
|
||||||
|
* 3.白名单用户领取该卡券时将无视卡券失效状态,请开发者注意。
|
||||||
|
* @param openIds the open ids
|
||||||
|
* @param userNames the user names
|
||||||
|
* @author fengyapeng
|
||||||
|
* @since 2016 -12-20 11:22:57
|
||||||
|
* @see <a href='https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1451025062&token=&lang=zh_CN&anchor=6'>设置测试白名单</a>
|
||||||
|
*/
|
||||||
|
public void setTestWhiteList(List<String> openIds, List<String> userNames) throws WeixinException {
|
||||||
|
JSONObject requestObj = new JSONObject();
|
||||||
|
if (openIds != null && openIds.size() > 0) {
|
||||||
|
requestObj.put("openid", openIds);
|
||||||
|
}
|
||||||
|
if (userNames != null && userNames.size() > 0) {
|
||||||
|
requestObj.put("username", userNames);
|
||||||
|
}
|
||||||
|
String card_set_test_whitelist_uri = getRequestUri("card_set_test_whitelist_uri");
|
||||||
|
Token token = tokenManager.getCache();
|
||||||
|
WeixinResponse response = weixinExecutor.post(
|
||||||
|
String.format(card_set_test_whitelist_uri, token.getAccessToken()),
|
||||||
|
requestObj.toJSONString());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查看获取卡券的审核状态
|
||||||
|
* @see <a href='https://mp.weixin.qq.com/wiki?action=doc&id=mp1451025272&t=0.18670321276182844#3'> 查看卡券详情</a>
|
||||||
|
*
|
||||||
|
* @author fengyapeng
|
||||||
|
* @since 2016 -12-20 11:48:23
|
||||||
|
*/
|
||||||
|
public void getCardStatus(String cardId) throws WeixinException {
|
||||||
|
JSONObject requestObj = new JSONObject();
|
||||||
|
requestObj.put("card_id",cardId);
|
||||||
|
String card_get_uri = getRequestUri("card_get_uri");
|
||||||
|
Token token = tokenManager.getCache();
|
||||||
|
WeixinResponse response = weixinExecutor.post(String.format(card_get_uri, token.getAccessToken()),requestObj.toJSONString());
|
||||||
|
JSONObject responseAsJson = response.getAsJson();
|
||||||
|
JSONObject card = responseAsJson.getJSONObject("card");
|
||||||
|
String cardType = card.getString("card_type");
|
||||||
|
JSONObject baseInfo = card.getJSONObject(cardType.toLowerCase()).getJSONObject("base_info");
|
||||||
|
baseInfo.get("status");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 支持更新所有卡券类型的部分通用字段及特殊卡券(会员卡、飞机票、电影票、会议门票)中特定字段的信息。
|
||||||
|
*
|
||||||
|
* @param cardId the card id
|
||||||
|
* @param card the card
|
||||||
|
* @return 是否提交审核,false为修改后不会重新提审,true为修改字段后重新提审,该卡券的状态变为审核中
|
||||||
|
* @throws WeixinException the weixin exception
|
||||||
|
* @author fengyapeng
|
||||||
|
* @see
|
||||||
|
* @since 2016 -12-21 15:29:10
|
||||||
|
*/
|
||||||
|
public Boolean updateCardCoupon(String cardId, CardCoupon card) throws WeixinException {
|
||||||
|
JSONObject request = new JSONObject();
|
||||||
|
request.put("card_id", cardId);
|
||||||
|
CardType cardType = card.getCardType();
|
||||||
|
request.put(cardType.name().toLowerCase(), card);
|
||||||
|
String card_update_uri = getRequestUri("card_update_uri");
|
||||||
|
Token token = tokenManager.getCache();
|
||||||
|
WeixinResponse response = weixinExecutor.post(String.format(card_update_uri,token.getAccessToken()),JSON.toJSONString(request));
|
||||||
|
JSONObject jsonObject= response.getAsJson();
|
||||||
|
return jsonObject.getBoolean("send_check");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,95 @@
|
|||||||
|
package com.foxinmy.weixin4j.mp.api;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSON;
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
import com.alibaba.fastjson.TypeReference;
|
||||||
|
import com.foxinmy.weixin4j.exception.WeixinException;
|
||||||
|
import com.foxinmy.weixin4j.http.weixin.ApiResult;
|
||||||
|
import com.foxinmy.weixin4j.http.weixin.WeixinResponse;
|
||||||
|
import com.foxinmy.weixin4j.model.Token;
|
||||||
|
import com.foxinmy.weixin4j.model.card.MemberInitInfo;
|
||||||
|
import com.foxinmy.weixin4j.model.card.MemberUpdateInfo;
|
||||||
|
import com.foxinmy.weixin4j.model.card.MemberUserForm;
|
||||||
|
import com.foxinmy.weixin4j.model.card.MemberUserInfo;
|
||||||
|
import com.foxinmy.weixin4j.token.TokenManager;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 会员卡的api
|
||||||
|
*
|
||||||
|
* @auther: Feng Yapeng
|
||||||
|
* @since: 2016/12/20 14:43
|
||||||
|
* @see <a href='https://mp.weixin.qq.com/wiki/wiki?action=doc&id=mp1451025283&t=0.8029895777585161'>创建会员卡&会员卡管理</a>
|
||||||
|
*/
|
||||||
|
public class MemberCardApi extends CardApi {
|
||||||
|
|
||||||
|
|
||||||
|
public MemberCardApi(TokenManager tokenManager) {
|
||||||
|
super(tokenManager);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 激活方式说明
|
||||||
|
* 接口激活通常需要开发者开发用户填写资料的网页。通常有两种激活流程:
|
||||||
|
* 1. 用户必须在填写资料后才能领卡,领卡后开发者调用激活接口为用户激活会员卡;
|
||||||
|
* 2. 是用户可以先领取会员卡,点击激活会员卡跳转至开发者设置的资料填写页面,填写完成后开发者调用激活接口为用户激活会员卡。
|
||||||
|
*
|
||||||
|
* @see <a href='https://mp.weixin.qq.com/wiki?action=doc&id=mp1451025283&t=0.8029895777585161#6.1'>接口激活</a>
|
||||||
|
*/
|
||||||
|
public ApiResult activate(MemberInitInfo memberInitInfo) throws WeixinException {
|
||||||
|
String card_member_card_activate_uri = getRequestUri("card_member_card_activate_uri");
|
||||||
|
Token token = tokenManager.getCache();
|
||||||
|
WeixinResponse response = weixinExecutor
|
||||||
|
.post(String.format(card_member_card_activate_uri, token.getAccessToken()), JSON.toJSONString(memberInitInfo));
|
||||||
|
return response.getAsResult();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 设置开卡字段接口
|
||||||
|
* 开发者在创建时填入wx_activate字段后,
|
||||||
|
* 需要调用该接口设置用户激活时需要填写的选项,否则一键开卡设置不生效。
|
||||||
|
*
|
||||||
|
* @see <a href='https://mp.weixin.qq.com/wiki?action=doc&id=mp1451025283&t=0.8029895777585161#6.2'>一键激活</a>
|
||||||
|
*/
|
||||||
|
public ApiResult setActivateUserForm(MemberUserForm memberUserForm) throws WeixinException {
|
||||||
|
String user_form_uri = getRequestUri("card_member_card_activate_user_form_uri");
|
||||||
|
Token token = tokenManager.getCache();
|
||||||
|
WeixinResponse response = weixinExecutor
|
||||||
|
.post(String.format(user_form_uri, token.getAccessToken()), JSON.toJSONString(memberUserForm));
|
||||||
|
return response.getAsResult();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 拉取会员信息接口。
|
||||||
|
*
|
||||||
|
* @param cardId the card id
|
||||||
|
* @param code the code
|
||||||
|
* @author fengyapeng
|
||||||
|
* @since 2016 -12-21 11:28:45
|
||||||
|
*/
|
||||||
|
public MemberUserInfo getMemberUserInfo(String cardId, String code) throws WeixinException {
|
||||||
|
String user_info_uri = getRequestUri("card_member_card_user_info_uri");
|
||||||
|
Token token = tokenManager.getCache();
|
||||||
|
JSONObject jsonObject = new JSONObject();
|
||||||
|
jsonObject.put("card_id", cardId);
|
||||||
|
jsonObject.put("code", code);
|
||||||
|
WeixinResponse response = weixinExecutor.post(String.format(user_info_uri, token.getAccessToken()), JSON.toJSONString(jsonObject));
|
||||||
|
return response.getAsObject(new TypeReference<MemberUserInfo>() {
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 更新会员
|
||||||
|
* @param updateInfo
|
||||||
|
* @return
|
||||||
|
* @throws WeixinException
|
||||||
|
*/
|
||||||
|
public JSONObject updateUserInfo(MemberUpdateInfo updateInfo) throws WeixinException {
|
||||||
|
String card_member_card_update_user_uri = getRequestUri("card_member_card_update_user_uri");
|
||||||
|
Token token = tokenManager.getCache();
|
||||||
|
WeixinResponse response = weixinExecutor
|
||||||
|
.post(String.format(card_member_card_update_user_uri, token.getAccessToken()), JSON.toJSONString(updateInfo));
|
||||||
|
return response.getAsJson();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@ -190,11 +190,11 @@ tag_untagging_uri={api_cgi_url}/tags/members/batchuntagging?access_token=%s
|
|||||||
tag_userids_uri={api_cgi_url}/tags/getidlist?access_token=%s
|
tag_userids_uri={api_cgi_url}/tags/getidlist?access_token=%s
|
||||||
# \u83B7\u53D6\u6807\u7B7E\u4E0B\u7C89\u4E1D\u5217\u8868
|
# \u83B7\u53D6\u6807\u7B7E\u4E0B\u7C89\u4E1D\u5217\u8868
|
||||||
tag_user_uri={api_cgi_url}/user/tag/get?access_token=%s
|
tag_user_uri={api_cgi_url}/user/tag/get?access_token=%s
|
||||||
# \u83b7\u53d6\u9ed1\u540d\u5355\u5217\u8868
|
# \u83B7\u53D6\u9ED1\u540D\u5355\u5217\u8868
|
||||||
getblacklist_uri={api_cgi_url}/tags/members/getblacklist?access_token=%s
|
getblacklist_uri={api_cgi_url}/tags/members/getblacklist?access_token=%s
|
||||||
# \u62c9\u9ed1\u7528\u6237
|
# \u62C9\u9ED1\u7528\u6237
|
||||||
batchblacklist_uri={api_cgi_url}/tags/members/batchblacklist?access_token=%s
|
batchblacklist_uri={api_cgi_url}/tags/members/batchblacklist?access_token=%s
|
||||||
# \u53d6\u6d88\u62c9\u9ed1\u7528\u6237
|
# \u53D6\u6D88\u62C9\u9ED1\u7528\u6237
|
||||||
batchunblacklist_uri={api_cgi_url}/tags/members/batchunblacklist?access_token=%s
|
batchunblacklist_uri={api_cgi_url}/tags/members/batchunblacklist?access_token=%s
|
||||||
|
|
||||||
# \u521B\u5EFA\u5361\u5238
|
# \u521B\u5EFA\u5361\u5238
|
||||||
@ -205,6 +205,20 @@ card_paycell_uri={api_base_url}/card/paycell/set?access_token=%s
|
|||||||
card_selfconsumecell_uri={api_base_url}/card/selfconsumecell/set?access_token=%s
|
card_selfconsumecell_uri={api_base_url}/card/selfconsumecell/set?access_token=%s
|
||||||
# \u521B\u5EFA\u5361\u5238\u4E8C\u7EF4\u7801\u63A5\u53E3
|
# \u521B\u5EFA\u5361\u5238\u4E8C\u7EF4\u7801\u63A5\u53E3
|
||||||
card_qr_ticket_uri={api_base_url}/card/qrcode/create?access_token=%s
|
card_qr_ticket_uri={api_base_url}/card/qrcode/create?access_token=%s
|
||||||
|
# \u4FEE\u6539\u5361\u5238
|
||||||
|
card_update_uri={api_base_url}/card/update?access_token=%s
|
||||||
|
#\u8BBE\u7F6E\u6D4B\u8BD5\u767D\u540D\u5355\u63A5\u53E3
|
||||||
|
card_set_test_whitelist_uri={api_base_url}/card/testwhitelist/set?access_token=%s
|
||||||
|
#\u67E5\u770B\u5361\u5238\u8BE6\u60C5\u63A5\u53E3
|
||||||
|
card_get_uri={api_base_url}/card/get?access_token=%s
|
||||||
|
#\u4F1A\u5458\u5361\u6FC0\u6D3B\u63A5\u53E3
|
||||||
|
card_member_card_activate_uri={api_base_url}/card/membercard/activate?access_token=%s
|
||||||
|
#\u8BBE\u7F6E\u4F1A\u5458\u5361\u5F00\u5361\u5B57\u6BB5
|
||||||
|
card_member_card_activate_user_form_uri={api_base_url}/card/membercard/activateuserform/set?access_token=%s
|
||||||
|
#\u4F1A\u5458\u5361\u7528\u6237\u4FE1\u606F
|
||||||
|
card_member_card_user_info_uri={api_base_url}/card/membercard/userinfo/get?access_token=%s
|
||||||
|
#\u66F4\u65B0\u4F1A\u5458\u4FE1\u606F
|
||||||
|
card_member_card_update_user_uri={api_base_url}/card/membercard/updateuser?access_token=%s
|
||||||
|
|
||||||
# \u4F7F\u7528\u6388\u6743\u7801\u6362\u53D6\u516C\u4F17\u53F7\u7684\u63A5\u53E3\u8C03\u7528\u51ED\u636E\u548C\u6388\u6743\u4FE1\u606F
|
# \u4F7F\u7528\u6388\u6743\u7801\u6362\u53D6\u516C\u4F17\u53F7\u7684\u63A5\u53E3\u8C03\u7528\u51ED\u636E\u548C\u6388\u6743\u4FE1\u606F
|
||||||
component_exchange_authorizer_uri={api_cgi_url}/component/api_query_auth?component_access_token=%s
|
component_exchange_authorizer_uri={api_cgi_url}/component/api_query_auth?component_access_token=%s
|
||||||
|
|||||||
@ -0,0 +1,16 @@
|
|||||||
|
package com.foxinmy.weixin4j.mp.test;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 会员卡测试
|
||||||
|
*
|
||||||
|
* @auther: Feng Yapeng
|
||||||
|
* @since: 2016/12/21 16:37
|
||||||
|
*/
|
||||||
|
public class MemberCardTest extends TokenTest {
|
||||||
|
|
||||||
|
|
||||||
|
public void create(){
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user