Merge remote-tracking branch 'wechat/develop' into develop

# Conflicts:
#	weixin-java-common/src/main/java/me/chanjar/weixin/common/util/http/AbstractRequestExecutor.java
#	weixin-java-common/src/main/java/me/chanjar/weixin/common/util/http/MediaDownloadRequestExecutor.java
#	weixin-java-common/src/main/java/me/chanjar/weixin/common/util/http/MediaUploadRequestExecutor.java
#	weixin-java-common/src/main/java/me/chanjar/weixin/common/util/http/SimpleGetRequestExecutor.java
#	weixin-java-common/src/main/java/me/chanjar/weixin/common/util/http/SimplePostRequestExecutor.java
#	weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/jodd/WxMpServiceImpl.java
#	weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/okhttp/WxMpServiceImpl.java
#	weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/http/MaterialDeleteRequestExecutor.java
#	weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/http/MaterialNewsInfoRequestExecutor.java
#	weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/http/MaterialUploadRequestExecutor.java
#	weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/http/MaterialVideoInfoRequestExecutor.java
#	weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/http/MediaImgUploadRequestExecutor.java
#	weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/http/QrCodeRequestExecutor.java
This commit is contained in:
ecoolper 2017-05-08 21:36:07 +08:00
commit fcf3dbc12d
19 changed files with 331 additions and 229 deletions

View File

@ -5,7 +5,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>com.github.binarywang</groupId>
<artifactId>weixin-java-parent</artifactId>
<version>2.7.0-SNAPSHOT</version>
<version>2.6.1.BETA</version>
<packaging>pom</packaging>
<name>WeiXin Java Tools - Parent</name>
<description>微信公众号、企业号上级POM</description>

View File

@ -6,7 +6,7 @@
<parent>
<groupId>com.github.binarywang</groupId>
<artifactId>weixin-java-parent</artifactId>
<version>2.7.0-SNAPSHOT</version>
<version>2.6.1.BETA</version>
</parent>
<artifactId>weixin-java-common</artifactId>

View File

@ -91,6 +91,10 @@ public class WxConsts {
public static final String EVT_CARD_PASS_CHECK = "card_pass_check";
public static final String EVT_CARD_NOT_PASS_CHECK = "card_not_pass_check";
public static final String EVT_USER_GET_CARD = "user_get_card";
/**
* 卡券转赠事件
*/
public static final String EVT_USER_GIFTING_CARD = "user_gifting_card";
public static final String EVT_USER_DEL_CARD = "user_del_card";
public static final String EVT_USER_CONSUME_CARD = "user_consume_card";
public static final String EVT_USER_PAY_FROM_PAY_CELL = "user_pay_from_pay_cell";
@ -101,7 +105,8 @@ public class WxConsts {
public static final String EVT_KF_CLOSE_SESSION = "kf_close_session"; // 客服关闭会话
public static final String EVT_KF_SWITCH_SESSION = "kf_switch_session"; // 客服转接会话
public static final String EVT_POI_CHECK_NOTIFY = "poi_check_notify"; //门店审核事件推送
public static final String EVN_SUBMIT_MEMBERCARD_USER_INFO = "submit_membercard_user_info"; //接收会员信息事件推送
public static final String EVT_SUBMIT_MEMBERCARD_USER_INFO = "submit_membercard_user_info"; //接收会员信息事件推送
//以下为微信认证事件
/**
* 资质认证成功
@ -185,7 +190,7 @@ public class WxConsts {
* 跳转图文消息URL
*/
public static final String BUTTON_VIEW_LIMITED = "view_limited";
/**
* 不弹出授权页面直接跳转只能获取用户openid
*/

View File

@ -6,7 +6,7 @@
<parent>
<groupId>com.github.binarywang</groupId>
<artifactId>weixin-java-parent</artifactId>
<version>2.7.0-SNAPSHOT</version>
<version>2.6.1.BETA</version>
</parent>
<artifactId>weixin-java-cp</artifactId>

View File

@ -8,8 +8,8 @@ import me.chanjar.weixin.common.util.http.HttpType;
import me.chanjar.weixin.common.util.http.apache.ApacheHttpClientBuilder;
import me.chanjar.weixin.common.util.http.apache.DefaultApacheHttpClientBuilder;
import me.chanjar.weixin.cp.api.WxCpConfigStorage;
import me.chanjar.weixin.cp.api.impl.AbstractWxCpServiceImpl;
import me.chanjar.weixin.cp.api.impl.AbstractWxCpServiceImpl;
import org.apache.http.HttpHost;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.CloseableHttpResponse;

View File

@ -6,7 +6,7 @@
<parent>
<groupId>com.github.binarywang</groupId>
<artifactId>weixin-java-parent</artifactId>
<version>2.7.0-SNAPSHOT</version>
<version>2.6.1.BETA</version>
</parent>
<artifactId>weixin-java-mp</artifactId>
<name>WeiXin Java Tools - MP</name>

View File

@ -12,7 +12,6 @@ public interface WxMpCardService {
/**
* 得到WxMpService
* @return
*/
WxMpService getWxMpService();
@ -20,7 +19,6 @@ public interface WxMpCardService {
* 获得卡券api_ticket不强制刷新卡券api_ticket
*
* @return 卡券api_ticket
* @throws WxErrorException
* @see #getCardApiTicket(boolean)
*/
String getCardApiTicket() throws WxErrorException;

View File

@ -34,10 +34,6 @@ public class WxMpCardServiceImpl implements WxMpCardService {
this.wxMpService = wxMpService;
}
/**
* 得到WxMpService
* @return
*/
@Override
public WxMpService getWxMpService(){
return this.wxMpService;

View File

@ -0,0 +1,50 @@
package me.chanjar.weixin.mp.bean.message;
import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamConverter;
import me.chanjar.weixin.common.util.ToStringUtils;
import me.chanjar.weixin.common.util.xml.XStreamCDataConverter;
/**
* <pre>
* Created by BinaryWang on 2017/5/4.
* </pre>
*
* @author Binary Wang
*/
@XStreamAlias("HardWare")
public class HardWare {
/**
* 消息展示目前支持myrank(排行榜)
*/
@XStreamAlias("MessageView")
@XStreamConverter(value = XStreamCDataConverter.class)
private String messageView;
/**
* 消息点击动作目前支持ranklist(点击跳转排行榜)
*/
@XStreamAlias("MessageAction")
@XStreamConverter(value = XStreamCDataConverter.class)
private String messageAction;
@Override
public String toString() {
return ToStringUtils.toSimpleString(this);
}
public String getMessageView() {
return messageView;
}
public void setMessageView(String messageView) {
this.messageView = messageView;
}
public String getMessageAction() {
return messageAction;
}
public void setMessageAction(String messageAction) {
this.messageAction = messageAction;
}
}

View File

@ -0,0 +1,52 @@
package me.chanjar.weixin.mp.bean.message;
import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamConverter;
import me.chanjar.weixin.common.util.ToStringUtils;
import me.chanjar.weixin.common.util.xml.XStreamCDataConverter;
/**
* <pre>
* Created by BinaryWang on 2017/5/4.
* </pre>
*
* @author Binary Wang
*/
@XStreamAlias("ScanCodeInfo")
public class ScanCodeInfo {
@XStreamAlias("ScanType")
@XStreamConverter(value = XStreamCDataConverter.class)
private String scanType;
@XStreamAlias("ScanResult")
@XStreamConverter(value = XStreamCDataConverter.class)
private String scanResult;
@Override
public String toString() {
return ToStringUtils.toSimpleString(this);
}
/**
* 扫描类型一般是qrcode
*/
public String getScanType() {
return this.scanType;
}
public void setScanType(String scanType) {
this.scanType = scanType;
}
/**
* 扫描结果即二维码对应的字符串信息
*/
public String getScanResult() {
return this.scanResult;
}
public void setScanResult(String scanResult) {
this.scanResult = scanResult;
}
}

View File

@ -0,0 +1,82 @@
package me.chanjar.weixin.mp.bean.message;
import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamConverter;
import me.chanjar.weixin.common.util.ToStringUtils;
import me.chanjar.weixin.common.util.xml.XStreamCDataConverter;
/**
* <pre>
* Created by BinaryWang on 2017/5/4.
* </pre>
*
* @author Binary Wang
*/
@XStreamAlias("SendLocationInfo")
public class SendLocationInfo {
@XStreamAlias("Location_X")
@XStreamConverter(value = XStreamCDataConverter.class)
private String locationX;
@XStreamAlias("Location_Y")
@XStreamConverter(value = XStreamCDataConverter.class)
private String locationY;
@XStreamAlias("Scale")
@XStreamConverter(value = XStreamCDataConverter.class)
private String scale;
@XStreamAlias("Label")
@XStreamConverter(value = XStreamCDataConverter.class)
private String label;
@XStreamAlias("Poiname")
@XStreamConverter(value = XStreamCDataConverter.class)
private String poiname;
@Override
public String toString() {
return ToStringUtils.toSimpleString(this);
}
public String getLocationX() {
return this.locationX;
}
public void setLocationX(String locationX) {
this.locationX = locationX;
}
public String getLocationY() {
return this.locationY;
}
public void setLocationY(String locationY) {
this.locationY = locationY;
}
public String getScale() {
return this.scale;
}
public void setScale(String scale) {
this.scale = scale;
}
public String getLabel() {
return this.label;
}
public void setLabel(String label) {
this.label = label;
}
public String getPoiname() {
return this.poiname;
}
public void setPoiname(String poiname) {
this.poiname = poiname;
}
}

View File

@ -0,0 +1,61 @@
package me.chanjar.weixin.mp.bean.message;
import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamConverter;
import me.chanjar.weixin.common.util.ToStringUtils;
import me.chanjar.weixin.common.util.xml.XStreamCDataConverter;
import java.util.ArrayList;
import java.util.List;
/**
* <pre>
* Created by BinaryWang on 2017/5/4.
* </pre>
*
* @author Binary Wang
*/
@XStreamAlias("SendPicsInfo")
public class SendPicsInfo {
@XStreamAlias("PicList")
protected final List<Item> picList = new ArrayList<>();
@XStreamAlias("Count")
private Long count;
@Override
public String toString() {
return ToStringUtils.toSimpleString(this);
}
public Long getCount() {
return this.count;
}
public void setCount(Long count) {
this.count = count;
}
public List<Item> getPicList() {
return this.picList;
}
@XStreamAlias("item")
public static class Item {
@XStreamAlias("PicMd5Sum")
@XStreamConverter(value = XStreamCDataConverter.class)
private String picMd5Sum;
@Override
public String toString() {
return ToStringUtils.toSimpleString(this);
}
public String getPicMd5Sum() {
return this.picMd5Sum;
}
public void setPicMd5Sum(String picMd5Sum) {
this.picMd5Sum = picMd5Sum;
}
}
}

View File

@ -12,8 +12,6 @@ import org.apache.commons.io.IOUtils;
import java.io.IOException;
import java.io.InputStream;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
/**
* <pre>
@ -199,6 +197,30 @@ public class WxMpXmlMessage implements Serializable {
@XStreamAlias("OuterId")
private Integer outerId;
/**
* 用户删除会员卡后可重新找回当用户本次操作为找回时该值为1否则为0
*/
@XStreamAlias("IsRestoreMemberCard")
private String isRestoreMemberCard;
/**
* 领取场景值用于领取渠道数据统计可在生成二维码接口及添加Addcard接口中自定义该字段的字符串值
*/
@XStreamAlias("OuterStr")
private String outerStr;
/**
* 是否转赠退回0代表不是1代表是
*/
@XStreamAlias("IsReturnBack")
private String isReturnBack;
/**
* 是否是群转赠0代表不是1代表是
*/
@XStreamAlias("IsChatRoom")
private String isChatRoom;
@XStreamAlias("ScanCodeInfo")
private ScanCodeInfo scanCodeInfo = new ScanCodeInfo();
@ -314,11 +336,11 @@ public class WxMpXmlMessage implements Serializable {
/**
* 从加密字符串转换
*
* @param encryptedXml
* @param wxMpConfigStorage
* @param timestamp
* @param nonce
* @param msgSignature
* @param encryptedXml 密文
* @param wxMpConfigStorage 配置存储器对象
* @param timestamp 时间戳
* @param nonce 随机串
* @param msgSignature 签名串
*/
public static WxMpXmlMessage fromEncryptedXml(String encryptedXml,
WxMpConfigStorage wxMpConfigStorage, String timestamp, String nonce,
@ -750,28 +772,28 @@ public class WxMpXmlMessage implements Serializable {
this.outerId = outerId;
}
public WxMpXmlMessage.ScanCodeInfo getScanCodeInfo() {
public ScanCodeInfo getScanCodeInfo() {
return this.scanCodeInfo;
}
public void setScanCodeInfo(WxMpXmlMessage.ScanCodeInfo scanCodeInfo) {
public void setScanCodeInfo(ScanCodeInfo scanCodeInfo) {
this.scanCodeInfo = scanCodeInfo;
}
public WxMpXmlMessage.SendPicsInfo getSendPicsInfo() {
public SendPicsInfo getSendPicsInfo() {
return this.sendPicsInfo;
}
public void setSendPicsInfo(WxMpXmlMessage.SendPicsInfo sendPicsInfo) {
public void setSendPicsInfo(SendPicsInfo sendPicsInfo) {
this.sendPicsInfo = sendPicsInfo;
}
public WxMpXmlMessage.SendLocationInfo getSendLocationInfo() {
public SendLocationInfo getSendLocationInfo() {
return this.sendLocationInfo;
}
public void setSendLocationInfo(
WxMpXmlMessage.SendLocationInfo sendLocationInfo) {
SendLocationInfo sendLocationInfo) {
this.sendLocationInfo = sendLocationInfo;
}
@ -807,198 +829,41 @@ public class WxMpXmlMessage implements Serializable {
this.fromKfAccount = fromKfAccount;
}
public String getIsRestoreMemberCard() {
return isRestoreMemberCard;
}
public void setIsRestoreMemberCard(String isRestoreMemberCard) {
this.isRestoreMemberCard = isRestoreMemberCard;
}
public String getOuterStr() {
return outerStr;
}
public void setOuterStr(String outerStr) {
this.outerStr = outerStr;
}
public String getIsReturnBack() {
return isReturnBack;
}
public void setIsReturnBack(String isReturnBack) {
this.isReturnBack = isReturnBack;
}
public String getIsChatRoom() {
return isChatRoom;
}
public void setIsChatRoom(String isChatRoom) {
this.isChatRoom = isChatRoom;
}
@Override
public String toString() {
return ToStringUtils.toSimpleString(this);
}
@XStreamAlias("HardWare")
public static class HardWare {
/**
* 消息展示目前支持myrank(排行榜)
*/
@XStreamAlias("MessageView")
@XStreamConverter(value = XStreamCDataConverter.class)
private String messageView;
/**
* 消息点击动作目前支持ranklist(点击跳转排行榜)
*/
@XStreamAlias("MessageAction")
@XStreamConverter(value = XStreamCDataConverter.class)
private String messageAction;
@Override
public String toString() {
return ToStringUtils.toSimpleString(this);
}
public String getMessageView() {
return messageView;
}
public void setMessageView(String messageView) {
this.messageView = messageView;
}
public String getMessageAction() {
return messageAction;
}
public void setMessageAction(String messageAction) {
this.messageAction = messageAction;
}
}
@XStreamAlias("ScanCodeInfo")
public static class ScanCodeInfo {
@XStreamAlias("ScanType")
@XStreamConverter(value = XStreamCDataConverter.class)
private String scanType;
@XStreamAlias("ScanResult")
@XStreamConverter(value = XStreamCDataConverter.class)
private String scanResult;
@Override
public String toString() {
return ToStringUtils.toSimpleString(this);
}
/**
* 扫描类型一般是qrcode
*/
public String getScanType() {
return this.scanType;
}
public void setScanType(String scanType) {
this.scanType = scanType;
}
/**
* 扫描结果即二维码对应的字符串信息
*/
public String getScanResult() {
return this.scanResult;
}
public void setScanResult(String scanResult) {
this.scanResult = scanResult;
}
}
@XStreamAlias("SendPicsInfo")
public static class SendPicsInfo {
@XStreamAlias("PicList")
protected final List<Item> picList = new ArrayList<>();
@XStreamAlias("Count")
private Long count;
@Override
public String toString() {
return ToStringUtils.toSimpleString(this);
}
public Long getCount() {
return this.count;
}
public void setCount(Long count) {
this.count = count;
}
public List<Item> getPicList() {
return this.picList;
}
@XStreamAlias("item")
public static class Item {
@XStreamAlias("PicMd5Sum")
@XStreamConverter(value = XStreamCDataConverter.class)
private String picMd5Sum;
@Override
public String toString() {
return ToStringUtils.toSimpleString(this);
}
public String getPicMd5Sum() {
return this.picMd5Sum;
}
public void setPicMd5Sum(String picMd5Sum) {
this.picMd5Sum = picMd5Sum;
}
}
}
@XStreamAlias("SendLocationInfo")
public static class SendLocationInfo {
@XStreamAlias("Location_X")
@XStreamConverter(value = XStreamCDataConverter.class)
private String locationX;
@XStreamAlias("Location_Y")
@XStreamConverter(value = XStreamCDataConverter.class)
private String locationY;
@XStreamAlias("Scale")
@XStreamConverter(value = XStreamCDataConverter.class)
private String scale;
@XStreamAlias("Label")
@XStreamConverter(value = XStreamCDataConverter.class)
private String label;
@XStreamAlias("Poiname")
@XStreamConverter(value = XStreamCDataConverter.class)
private String poiname;
@Override
public String toString() {
return ToStringUtils.toSimpleString(this);
}
public String getLocationX() {
return this.locationX;
}
public void setLocationX(String locationX) {
this.locationX = locationX;
}
public String getLocationY() {
return this.locationY;
}
public void setLocationY(String locationY) {
this.locationY = locationY;
}
public String getScale() {
return this.scale;
}
public void setScale(String scale) {
this.scale = scale;
}
public String getLabel() {
return this.label;
}
public void setLabel(String label) {
this.label = label;
}
public String getPoiname() {
return this.poiname;
}
public void setPoiname(String poiname) {
this.poiname = poiname;
}
}
}

View File

@ -5,7 +5,7 @@
<parent>
<artifactId>weixin-java-parent</artifactId>
<groupId>com.github.binarywang</groupId>
<version>2.7.0-SNAPSHOT</version>
<version>2.6.1.BETA</version>
</parent>
<modelVersion>4.0.0</modelVersion>
@ -22,7 +22,7 @@
<dependency>
<groupId>com.github.binarywang</groupId>
<artifactId>qrcode-utils</artifactId>
<version>1.0</version>
<version>1.1</version>
</dependency>
<dependency>

View File

@ -129,7 +129,7 @@ public class WxPayConfig {
* 微信支付是否使用仿真测试环境
* 默认不使用
*/
public boolean useSandboxForWxPay() {
public boolean useSandbox() {
return false;
}

View File

@ -45,7 +45,7 @@ public class WxPayServiceImpl implements WxPayService {
}
private String getPayBaseUrl() {
if (this.getConfig().useSandboxForWxPay()) {
if (this.getConfig().useSandbox()) {
return PAY_BASE_URL + "/sandboxnew";
}
@ -203,7 +203,7 @@ public class WxPayServiceImpl implements WxPayService {
configMap.put("noncestr", String.valueOf(System.currentTimeMillis()));
configMap.put("appid", appId);
// 此map用于客户端与微信服务器交互
payInfo.put("paySign", SignUtils.createSign(payInfo, this.getConfig().getMchKey()));
payInfo.put("sign", SignUtils.createSign(configMap, this.getConfig().getMchKey()));
payInfo.put("prepayId", prepayId);
payInfo.put("partnerId", partnerid);
payInfo.put("appId", appId);

View File

@ -2,13 +2,6 @@ package com.github.binarywang.wxpay.testbase;
import com.github.binarywang.wxpay.config.WxPayConfig;
import com.thoughtworks.xstream.annotations.XStreamAlias;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.http.ssl.SSLContexts;
import javax.net.ssl.SSLContext;
import java.io.File;
import java.io.FileInputStream;
import java.security.KeyStore;
@XStreamAlias("xml")
public class XmlWxPayConfig extends WxPayConfig {
@ -23,9 +16,9 @@ public class XmlWxPayConfig extends WxPayConfig {
}
@Override
public boolean useSandboxForWxPay() {
public boolean useSandbox() {
//沙箱环境不成熟有问题无法使用暂时屏蔽掉
// return true;
// return true;
return false;
}
}