Skip to content

Develop #1

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 84 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
84 commits
Select commit Hold shift + click to select a range
7311463
jodd-http对于微信支付来说是必须依赖项
binarywang Jun 27, 2017
9771977
WxPayUnifiedOrderRequest 增加默认构造方法
binarywang Jun 27, 2017
0de1c72
#257 微信支付申请退款接口增加refund_desc属性
binarywang Jun 27, 2017
12eaa5b
#255 服务商模式下统一下单接口增加sub_openid字段
binarywang Jun 27, 2017
518d1d6
发布临时测试版本2.7.1.BETA
binarywang Jun 27, 2017
ed7f97e
#260 修复小程序发送模版消息接口的问题,并重新整理javadoc
binarywang Jun 29, 2017
d6bb355
#260 修复小程序发送模版消息接口的问题,并重新整理javadoc
binarywang Jun 29, 2017
57f5cf3
修复错误的javadoc
binarywang Jun 30, 2017
9a928f2
fix test case
binarywang Jun 30, 2017
c494fbe
微信支付证书路径判断代码优化
binarywang Jun 30, 2017
61d9331
优化微信支付请求代码
binarywang Jun 30, 2017
ca52260
发布临时测试版本2.7.2.BETA
binarywang Jul 2, 2017
131402f
#265 几个NewsBuilder支持直接设置Article或Item对象列表
binarywang Jul 2, 2017
22344eb
#256 企业微信发送消息增加文本卡片消息的支持
binarywang Jul 2, 2017
554fd08
#195 抽取素材管理请求URL到常量类中
binarywang Jul 2, 2017
eaad636
#252 原有图文素材管理接口增加留言管理所需两个参数:need_open_comment 和 only_fans_can_comment
binarywang Jul 2, 2017
b12a7a8
修复微信支付回调sign校验错误的bug (#266)
jink2005 Jul 3, 2017
04e115c
优化javadoc
binarywang Jul 3, 2017
d7b32d2
fix time
binarywang Jul 3, 2017
8217168
优化javadoc
binarywang Jul 3, 2017
1352d72
发布临时测试版本2.7.3.BETA
binarywang Jul 3, 2017
55cfcb9
修复一些打包时发现的不规范的javadoc
binarywang Jul 3, 2017
8dc2b4d
#268 修复WxCpUserServiceImpl删除用户的接口问题
binarywang Jul 5, 2017
15d7773
完善异常输出
binarywang Jul 6, 2017
368dbc9
fix javadoc
binarywang Jul 6, 2017
e9f5566
修改单元测试日志输出配置
binarywang Jul 6, 2017
dde7c64
#269 修复okhttp实现素材上传时的问题
binarywang Jul 6, 2017
fd4b8e1
让httpclient支持slf4j日志输出
binarywang Jul 6, 2017
b3f50e2
add maven-checkstyle-plugin
binarywang Jul 6, 2017
c5dcb70
Merge branch 'master' into develop
binarywang Jul 6, 2017
c5c204b
#270 NewArticle和MpnewsArticle实现序列化接口
binarywang Jul 8, 2017
d3c691a
微信支付接口请求增加超时时间的设置参数
binarywang Jul 8, 2017
c3cb050
优化简化微信支付请求代码
binarywang Jul 8, 2017
1cd6618
发布临时测试版本2.7.4.BETA
binarywang Jul 8, 2017
166e54c
微信支付模块调整,跟其他模块保持统一,默认使用apache httpclient
binarywang Jul 8, 2017
57f3755
#68 实现获取公众号的自动回复规则的接口
binarywang Jul 8, 2017
f76f9f5
#272 统一下单接口增加H5支付必须的参数scene_info
binarywang Jul 11, 2017
fae2940
发布临时测试版本2.7.5.BETA
binarywang Jul 11, 2017
55c71a9
update travis settings
binarywang Jul 14, 2017
687093f
#279 统一下单接口参数对象WxPayUnifiedOrderRequest增加fingerprint属性
binarywang Jul 15, 2017
3a2efdd
新增会员卡相关接口 (#280)
mgcnrx11 Jul 15, 2017
c8c51a9
#178 实现发送代金券接口
binarywang Jul 15, 2017
22287a4
#281 消息路由器增加对EventKey正则表达式匹配的支持
binarywang Jul 15, 2017
9368177
增加会员卡管理服务的`更新会员信息`接口的实现 (#283)
mgcnrx11 Jul 15, 2017
9f669df
#178 实现查询代金券批次和信息的接口
binarywang Jul 15, 2017
66c7ae3
发布临时测试版本2.7.6.BETA
binarywang Jul 15, 2017
2b7dd7a
修复上传文件时的乱码问题
binarywang Jul 20, 2017
1886c6b
#284 提取共同代码快,修复签名问题
binarywang Jul 20, 2017
b9c9b84
#287 修复对帐单下载bug,返回的对象没有对帐单对象
lwxian Jul 21, 2017
30b5a9a
#289 增加临时二维码的场景值支持字符串的接口
Jul 26, 2017
087f037
#292 增加小程序码支持
forfuns Jul 27, 2017
9455165
完善优化调试企业付款接口
binarywang Jul 27, 2017
0a06c4d
#293 重构OkHttp的实现代码,同时修复JSApi的bug
dylanleung Jul 31, 2017
70d90c8
非法参数的异常统一使用WxPayException
binarywang Jul 31, 2017
2d9d392
发布临时测试版本2.7.7.BETA
binarywang Jul 31, 2017
5a2b3b6
#295 修复临时文件关闭
dylanleung Jul 31, 2017
afcd62c
#297 WxMpMenu类增加实现序列化接口
rememberber Aug 1, 2017
289405f
#298 WxMpMenu的内部类WxMpConditionalMenu增加实现序列化接口
rememberber Aug 1, 2017
9e32f00
#302 WxMpXmlOutNewsMessage类中的内部类增加实现序列化接口
rememberber Aug 8, 2017
6ce585f
DefaultApacheHttpClientBuilder修改为单例模式 (#310)
Aug 10, 2017
69ebad5
#300 修复微信多媒体文件没有后缀名时下载失败的问题
binarywang Aug 11, 2017
67dad47
#305 修复微信变态的拍照或发图事件的消息格式的处理
binarywang Aug 14, 2017
1d1c4c7
发布临时测试版本2.7.8.BETA
binarywang Aug 14, 2017
a8cdb44
修正不规范的类命名
binarywang Aug 14, 2017
9140425
添加buttons的getter和setter方法
binarywang Aug 16, 2017
af4bb1d
修复错误的javadoc
binarywang Aug 16, 2017
92947b3
转移群发消息相关接口到单独接口及其实现类中
binarywang Aug 16, 2017
f0d3a1a
#315 修改messageSend方法,自动从wxCpConfigStorage获取agentId
forfuns Aug 17, 2017
bf1ce7f
#317 修复小程序请求二维码时对错误类型检查(text/plain 改为 app/json)
forfuns Aug 18, 2017
bc80845
#318 WxMpService和 WxCpService两个接口提供对各个具体service的setter方法,以便于扩展使用
binarywang Aug 22, 2017
3bc9dbd
#312 添加 删除群发 的接口
binarywang Aug 22, 2017
e75ef7f
#307 微信支付模块中增加http proxy设置的支持
binarywang Aug 22, 2017
ccebf2d
#307 微信支付模块中增加http proxy设置的支持
binarywang Aug 23, 2017
f5221c0
发布临时测试版本2.7.9.BETA
binarywang Aug 23, 2017
e7f507b
微信支付接口抽取部分常量
binarywang Aug 24, 2017
7d5d275
微信支付优化部分代码,方便扩展
binarywang Aug 24, 2017
24fdf00
微信支付增加获取微信的请求和响应数据的方法getWxApiData(),方便使用者获取使用该数据
binarywang Aug 25, 2017
a15d8d7
#324: 修复分布式刷新access_token冲突问题
nickwongwong Aug 26, 2017
a6b29af
#324: 修复分布式刷新access_token冲突问题
binarywang Aug 26, 2017
c12c176
#322 为me.chanjar.weixin.mp.bean下的bean类实现Serializable接口,并增加serialVersi…
binarywang Aug 26, 2017
4347033
#319 增加“退款结果通知“处理方法,并优化调整微信支付相关代码
binarywang Sep 1, 2017
a5c6126
#320 增加“拉取订单评价数据“接口方法
binarywang Sep 2, 2017
a9301ef
修改版本号为正式版本2.8.0
binarywang Sep 2, 2017
7c3f6cc
Merge branch 'master' into develop
binarywang Sep 4, 2017
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
新增会员卡相关接口 (binarywang#280)
* 新增会员卡相关接口
1. 激活会员卡接口
2. 拉取会员信息接口
  • Loading branch information
mgcnrx11 authored and binarywang committed Jul 15, 2017
commit 3a2efdd343c4f22e44b8d8e2456c59f22db861c5
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
package me.chanjar.weixin.mp.api;

import me.chanjar.weixin.common.exception.WxErrorException;
import me.chanjar.weixin.mp.bean.membercard.WxMpMemberCardActivatedMessage;
import me.chanjar.weixin.mp.bean.membercard.WxMpMemberCardUserInfoResult;

/**
* 会员卡相关接口
*
* @author YuJian([email protected])
* @version 2017/7/8
*/
public interface WxMpMemberCardService {

/**
* 得到WxMpService
*/
WxMpService getWxMpService();

/**
* 会员卡激活接口
*
* @param activatedMessage 激活所需参数
* @return 调用返回的JSON字符串。
* @throws WxErrorException 接口调用失败抛出的异常
*/
String activateMemberCard(WxMpMemberCardActivatedMessage activatedMessage) throws WxErrorException;

/**
* 拉取会员信息接口
*
* @param cardId 会员卡的CardId,微信分配
* @param code 领取会员的会员卡Code
* @return 会员信息的结果对象
* @throws WxErrorException 接口调用失败抛出的异常
*/
WxMpMemberCardUserInfoResult getUserInfo(String cardId, String code) throws WxErrorException;
}
Original file line number Diff line number Diff line change
Expand Up @@ -434,6 +434,13 @@ public interface WxMpService {
*/
WxMpShakeService getShakeService();

/**
* 返回会员卡相关接口方法的实现类对象,以方便调用其各个接口
*
* @return WxMpMemberCardService
*/
WxMpMemberCardService getMemberCardService();

/**
* 初始化http请求对象
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ public abstract class AbstractWxMpServiceImpl<H, P> implements WxMpService, Requ
private WxMpTemplateMsgService templateMsgService = new WxMpTemplateMsgServiceImpl(this);
private WxMpDeviceService deviceService = new WxMpDeviceServiceImpl(this);
private WxMpShakeService shakeService = new WxMpShakeServiceImpl(this);
private WxMpMemberCardService memberCardService = new WxMpMemberCardServiceImpl(this);

private int retrySleepMillis = 1000;
private int maxRetryTimes = 5;
Expand Down Expand Up @@ -406,6 +407,11 @@ public WxMpShakeService getShakeService() {
return this.shakeService;
}

@Override
public WxMpMemberCardService getMemberCardService() {
return this.memberCardService;
}

@Override
public RequestHttp getRequestHttp() {
return this;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
package me.chanjar.weixin.mp.api.impl;

import com.google.gson.Gson;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import com.google.gson.reflect.TypeToken;
import me.chanjar.weixin.common.exception.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.WxMpMemberCardUserInfoResult;
import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
* 会员卡相关接口的实现类
*
* @author YuJian([email protected])
* @version 2017/7/8
*/
public class WxMpMemberCardServiceImpl implements WxMpMemberCardService {

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

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 WxMpService wxMpService;

private static final Gson GSON = new Gson();

WxMpMemberCardServiceImpl(WxMpService wxMpService) {
this.wxMpService = wxMpService;
}

/**
* 得到WxMpService
*/
@Override
public WxMpService getWxMpService() {
return this.wxMpService;
}

/**
* 会员卡激活接口
*
* @param activatedMessage 激活所需参数
* @return 调用返回的JSON字符串。
* @throws WxErrorException 接口调用失败抛出的异常
*/
@Override
public String activateMemberCard(WxMpMemberCardActivatedMessage activatedMessage) throws WxErrorException {
return this.wxMpService.post(MEMBER_CARD_ACTIVATE, GSON.toJson(activatedMessage));
}

/**
* 拉取会员信息接口
*
* @param cardId 会员卡的CardId,微信分配
* @param code 领取会员的会员卡Code
* @return 会员信息的结果对象
* @throws WxErrorException 接口调用失败抛出的异常
*/
@Override
public WxMpMemberCardUserInfoResult getUserInfo(String cardId, String code) throws WxErrorException {
JsonObject jsonObject = new JsonObject();
jsonObject.addProperty("card_id", cardId);
jsonObject.addProperty("code",code);

String responseContent = this.getWxMpService().post(MEMBER_CARD_USER_INFO_GET, jsonObject.toString());
JsonElement tmpJsonElement = new JsonParser().parse(responseContent);
return WxMpGsonBuilder.INSTANCE.create().fromJson(tmpJsonElement,
new TypeToken<WxMpMemberCardUserInfoResult>() {
}.getType());
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package me.chanjar.weixin.mp.bean.membercard;

/**
* Created by YuJian on 2017/7/11.
*/
public class MemberCardUserInfo {

private NameValues[] commonFieldList;

private NameValues[] customFieldList;

public NameValues[] getCommonFieldList() {
return commonFieldList;
}

public void setCommonFieldList(NameValues[] commonFieldList) {
this.commonFieldList = commonFieldList;
}

public NameValues[] getCustomFieldList() {
return customFieldList;
}

public void setCustomFieldList(NameValues[] customFieldList) {
this.customFieldList = customFieldList;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
package me.chanjar.weixin.mp.bean.membercard;

/**
* Created by YuJian on 2017/7/11.
*/
public class NameValues {
private String name;

private String value;

private String[] valueList;

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getValue() {
return value;
}

public void setValue(String value) {
this.value = value;
}

public String[] getValueList() {
return valueList;
}

public void setValueList(String[] valueList) {
this.valueList = valueList;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,144 @@
package me.chanjar.weixin.mp.bean.membercard;

import com.google.gson.annotations.SerializedName;

/**
* 会员卡激活接口的参数
*
* @author YuJian([email protected])
* @version 2017/7/8
*/
public class WxMpMemberCardActivatedMessage {

// 会员卡编号,由开发者填入,作为序列号显示在用户的卡包里。可与Code码保持等值。
@SerializedName("membership_number")
private String membershipNumber;
// 领取会员卡用户获得的code
private String code;
// 卡券ID,自定义code卡券必填
@SerializedName("card_id")
private String cardId;
// 商家自定义会员卡背景图,须先调用上传图片接口将背景图上传至CDN,否则报错。卡面设计请遵循微信会员卡自定义背景设计规范
@SerializedName("background_pic_url")
private String backgroundPicUrl;
// 激活后的有效起始时间。若不填写默认以创建时的 data_info 为准。Unix时间戳格式。
@SerializedName("activate_begin_time")
private Integer activateBeginTime;
// 激活后的有效截至时间。若不填写默认以创建时的 data_info 为准。Unix时间戳格式。
@SerializedName("activate_end_time")
private Integer activateEndTime;
// 初始积分,不填为0。
@SerializedName("init_bonus")
private Integer initBonus;
// 积分同步说明。
@SerializedName("init_bonus_record")
private String initBonusRecord;
// 初始余额,不填为0。
@SerializedName("init_balance")
private Integer initBalance;
// 创建时字段custom_field1定义类型的初始值,限制为4个汉字,12字节。
@SerializedName("init_custom_field_value1")
private String initCustomFieldValue1;
// 创建时字段custom_field2定义类型的初始值,限制为4个汉字,12字节。
@SerializedName("init_custom_field_value2")
private String initCustomFieldValue2;
// 创建时字段custom_field3定义类型的初始值,限制为4个汉字,12字节。
@SerializedName("init_custom_field_value3")
private String initCustomFieldValue3;

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 Integer getActivateBeginTime() {
return activateBeginTime;
}

public void setActivateBeginTime(Integer activateBeginTime) {
this.activateBeginTime = activateBeginTime;
}

public Integer getActivateEndTime() {
return activateEndTime;
}

public void setActivateEndTime(Integer activateEndTime) {
this.activateEndTime = activateEndTime;
}

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 getInitCustomFieldValue1() {
return initCustomFieldValue1;
}

public void setInitCustomFieldValue1(String initCustomFieldValue1) {
this.initCustomFieldValue1 = initCustomFieldValue1;
}

public String getInitCustomFieldValue2() {
return initCustomFieldValue2;
}

public void setInitCustomFieldValue2(String initCustomFieldValue2) {
this.initCustomFieldValue2 = initCustomFieldValue2;
}

public String getInitCustomFieldValue3() {
return initCustomFieldValue3;
}

public void setInitCustomFieldValue3(String initCustomFieldValue3) {
this.initCustomFieldValue3 = initCustomFieldValue3;
}
}
Loading