From d4d830fe3a3582f151dddbf214aab7fd7d628e3c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=85=B1=E6=B2=B999=E5=8F=B7?= <779687795@qq.com> Date: Tue, 3 Dec 2019 17:09:31 +0800 Subject: [PATCH] =?UTF-8?q?:sparkles:=09#1309=20=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E5=8F=91=E9=80=81=E5=92=8C=E6=9F=A5=E8=AF=A2=E4=BC=81=E4=B8=9A?= =?UTF-8?q?=E5=BE=AE=E4=BF=A1=E7=BA=A2=E5=8C=85=E7=9A=84=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entpay/EntPayRedpackQueryRequest.java | 33 ++++ .../bean/entpay/EntPayRedpackQueryResult.java | 133 ++++++++++++++++ .../bean/entpay/EntPayRedpackRequest.java | 147 ++++++++++++++++++ .../bean/entpay/EntPayRedpackResult.java | 80 ++++++++++ .../wxpay/bean/request/BaseWxPayRequest.java | 58 +++++-- .../wxpay/service/EntPayService.java | 24 +++ .../wxpay/service/impl/EntPayServiceImpl.java | 65 +++++--- .../binarywang/wxpay/util/SignUtils.java | 45 +++++- .../service/impl/EntPayServiceImplTest.java | 62 +++++++- 9 files changed, 608 insertions(+), 39 deletions(-) create mode 100644 weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/entpay/EntPayRedpackQueryRequest.java create mode 100644 weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/entpay/EntPayRedpackQueryResult.java create mode 100644 weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/entpay/EntPayRedpackRequest.java create mode 100644 weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/entpay/EntPayRedpackResult.java diff --git a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/entpay/EntPayRedpackQueryRequest.java b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/entpay/EntPayRedpackQueryRequest.java new file mode 100644 index 000000000..29fc517f0 --- /dev/null +++ b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/entpay/EntPayRedpackQueryRequest.java @@ -0,0 +1,33 @@ +package com.github.binarywang.wxpay.bean.entpay; + +import com.github.binarywang.wxpay.bean.request.BaseWxPayRequest; +import com.github.binarywang.wxpay.exception.WxPayException; +import com.thoughtworks.xstream.annotations.XStreamAlias; +import lombok.*; + +/** + * 红包发送记录查询请求 + * @author wuyong + * @date 2019-12-01 17:19 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Builder(builderMethodName = "newBuilder") +@NoArgsConstructor +@AllArgsConstructor +@XStreamAlias("xml") +public class EntPayRedpackQueryRequest extends BaseWxPayRequest { + + + /** + * 商户订单号 + */ + @XStreamAlias("mch_billno") + private String mchBillNo; + + + @Override + protected void checkConstraints() throws WxPayException { + + } +} diff --git a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/entpay/EntPayRedpackQueryResult.java b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/entpay/EntPayRedpackQueryResult.java new file mode 100644 index 000000000..1235fe1bd --- /dev/null +++ b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/entpay/EntPayRedpackQueryResult.java @@ -0,0 +1,133 @@ +package com.github.binarywang.wxpay.bean.entpay; + +import com.github.binarywang.wxpay.bean.result.BaseWxPayResult; +import com.thoughtworks.xstream.annotations.XStreamAlias; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; + +/** + * 红包发送记录查询返回 + * + * @author wuyong + * @date 2019-12-01 17:23 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@NoArgsConstructor +@XStreamAlias("xml") +public class EntPayRedpackQueryResult extends BaseWxPayResult { + + /** + * 商户订单号 + * 商户使用查询API填写的商户单号的原路返回 + */ + @XStreamAlias("mch_billno") + protected String mchBillNo; + + /** + * 红包单号 + * 使用API发放现金红包时返回的红包单号 + */ + @XStreamAlias("detailId") + private String detailId; + /** + * 红包状态 + * SENDING:发放 + * SENT: + * 已发放待领取 + * FAILED:发放失败 + * RECEIVED:已领取 + * RFUND_ING:退款中 REFUND:已退款 + */ + @XStreamAlias("status") + private String status; + + /** + * 发放类型 + * API:通过API接口发放 + */ + @XStreamAlias("send_type") + private String sendType; + + /** + * 红包金额 + * 红包总金额(单位分) + */ + @XStreamAlias("total_amount") + private Integer totalAmount; + + /** + * 失败原因 + * 发送失败原因 + */ + @XStreamAlias("reason") + private Integer reason; + + /** + * 红包发送时间 + */ + @XStreamAlias("send_time") + private String sendTime; + /** + * 红包的退款时间 + */ + @XStreamAlias("refund_time") + private String refundTime; + + /** + * 红包退款金额 + */ + @XStreamAlias("refund_amount") + private Integer refundAmount; + + /** + * 祝福语 + */ + @XStreamAlias("wishing") + private String wishing; + + /** + * 备注 + */ + @XStreamAlias("remark") + private String remark; + + /** + * 活动名称 + */ + @XStreamAlias("act_name") + private String actName; + + /** + * 领取红包的Openid + */ + @XStreamAlias("openid") + private String openid; + + /** + * 金额 + */ + @XStreamAlias("amount") + private Integer amount; + + /** + * 接收时间 + */ + @XStreamAlias("rcv_time") + private Integer rcvTime; + + /** + * 发送者名称 + */ + @XStreamAlias("sender_name") + private Integer senderName; + + /** + * 发送者头像 + * 通过企业微信开放接口上传获取 + */ + @XStreamAlias("sender_header_media_id") + private Integer senderHeaderMediaId; + +} diff --git a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/entpay/EntPayRedpackRequest.java b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/entpay/EntPayRedpackRequest.java new file mode 100644 index 000000000..0ab8bddab --- /dev/null +++ b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/entpay/EntPayRedpackRequest.java @@ -0,0 +1,147 @@ +package com.github.binarywang.wxpay.bean.entpay; + +import com.github.binarywang.wxpay.bean.request.BaseWxPayRequest; +import com.github.binarywang.wxpay.exception.WxPayException; +import com.thoughtworks.xstream.annotations.XStreamAlias; +import lombok.*; +import me.chanjar.weixin.common.annotation.Required; + +/** + * 发送企业红包 + * @author wuyong + * @date 2019-12-1 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Builder(builderMethodName = "newBuilder") +@NoArgsConstructor +@AllArgsConstructor +@XStreamAlias("xml") +public class EntPayRedpackRequest extends BaseWxPayRequest { + + private static final long serialVersionUID = 1L; + + @Override + protected void checkConstraints() throws WxPayException { + + } + + /** + * 商户订单号(每个订单号必须唯一) + * 组成:mch_id+yyyymmdd+10位一天内不能重复的数字。 接口根据商户订单号支持重入,如出现超时可再调用。 + * 必填:是 + */ + @Required + @XStreamAlias("mch_billno") + private String mchBillNo; + + /** + * 微信分配的公众账号ID(企业微信corpid即为此appId) + * 必填:是 + */ + @Required + @XStreamAlias("wxappid") + private String wxAppId; + + /** + * 发送者名称 + * 以个人名义发红包,红包发送者名称(需要utf-8格式)。与agentid互斥,二者只能填一个。 + * 必填:否 + */ + @XStreamAlias("sender_name") + private String senderName; + + /** + * 发送红包的应用id + * 以企业应用的名义发红包,企业应用id,整型,可在企业微信管理端应用的设置页面查看。与sender_name互斥,二者只能填一个。 + * 必填:否 + */ + @XStreamAlias("agentid") + private String agentId; + + /** + * 发送者头像 + * 发送者头像素材id,通过企业微信开放上传素材接口获取 + * 必填:否 + */ + @XStreamAlias("sender_header_media_id") + private String senderHeaderMediaId; + + /** + * 用户openid + * 接受红包的用户.用户在wxappid下的openid。 + * 必填:是 + */ + @Required + @XStreamAlias("re_openid") + private String reOpenid; + + /** + * 金额 + * 单位分,单笔最小金额默认为1元 + * 必填:是 + */ + @Required + @XStreamAlias("total_amount") + private Integer totalAmount; + + /** + * 红包祝福语 + * 必填:是 + */ + @Required + @XStreamAlias("wishing") + private String wishing; + + /** + * 项目名称 + * 必填:是 + */ + @Required + @XStreamAlias("act_name") + private String actName; + + /** + * 备注 + * 必填:是 + */ + @Required + @XStreamAlias("remark") + private String remark; + + /** + * 场景 + * 发放红包使用场景,红包金额大于200时必传 + * PRODUCT_1:商品促销 + * PRODUCT_2:抽奖 + * PRODUCT_3:虚拟物品兑奖 + * PRODUCT_4:企业内部福利 + * PRODUCT_5:渠道分润 + * PRODUCT_6:保险回馈 + * PRODUCT_7:彩票派奖 + * PRODUCT_8:税务刮奖 + */ + @XStreamAlias("scene_id") + private String sceneId; + + + @Override + protected boolean ignoreAppid() { + return true; + } + + @Override + protected boolean ignoreSubAppId() { + return true; + } + + @Override + protected boolean ignoreSubMchId() { + return true; + } + + @Override + protected boolean isWxWorkSign() { + return true; + } +} diff --git a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/entpay/EntPayRedpackResult.java b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/entpay/EntPayRedpackResult.java new file mode 100644 index 000000000..677ac88f8 --- /dev/null +++ b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/entpay/EntPayRedpackResult.java @@ -0,0 +1,80 @@ +package com.github.binarywang.wxpay.bean.entpay; + +import com.github.binarywang.wxpay.bean.result.BaseWxPayResult; +import com.thoughtworks.xstream.annotations.XStreamAlias; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + * 企业微信红包返回 + * @author wuyong + * @date 2019-12-01 11:31 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@NoArgsConstructor +@XStreamAlias("xml") +public class EntPayRedpackResult extends BaseWxPayResult implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 商户订单号 + * 商户订单号(每个订单号必须唯一)组成:mch_id+yyyymmdd+10位一天内不能重复的数字 + */ + @XStreamAlias("mch_billno") + private String mchBillNo; + + /** + * 商户号 + * 微信支付分配的商户号 + */ + @XStreamAlias("mch_id") + private String mchId; + + /** + * 公众账号appid + * 商户appid,接口传入的所有appid应该为公众号的appid,不能为APP的appid + */ + @XStreamAlias("wxappid") + private String wxAppId; + + /** + * 用户openid + * 接受收红包的用户在wxappid下的openid + */ + @XStreamAlias("re_openid") + private String reOpenid; + + /** + * 付款金额 + * 付款金额,单位分 + */ + @XStreamAlias("totalAmount") + private String totalAmount; + + /** + * 微信单号 + * 红包订单的微信单号 + */ + @XStreamAlias("sendListid") + private String sendListId; + + /** + * 发送者名称 + * 红包发送者名称(需要utf-8格式) + */ + @XStreamAlias("sender_name") + private String senderName; + + /** + * 发送者头像 + * 发送者头像素材id,通过企业微信开放上传素材接口获取 + */ + @XStreamAlias("sender_header_media_id") + private String senderHeaderMediaId; + +} diff --git a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/request/BaseWxPayRequest.java b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/request/BaseWxPayRequest.java index 73793a23f..0b85f41e9 100644 --- a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/request/BaseWxPayRequest.java +++ b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/request/BaseWxPayRequest.java @@ -1,21 +1,20 @@ package com.github.binarywang.wxpay.bean.request; -import java.io.Serializable; -import java.math.BigDecimal; - -import lombok.experimental.Accessors; -import org.apache.commons.lang3.StringUtils; - import com.github.binarywang.wxpay.config.WxPayConfig; import com.github.binarywang.wxpay.exception.WxPayException; import com.github.binarywang.wxpay.util.SignUtils; import com.thoughtworks.xstream.XStream; import com.thoughtworks.xstream.annotations.XStreamAlias; import lombok.Data; +import lombok.experimental.Accessors; import me.chanjar.weixin.common.error.WxErrorException; import me.chanjar.weixin.common.util.BeanUtils; import me.chanjar.weixin.common.util.json.WxGsonBuilder; import me.chanjar.weixin.common.util.xml.XStreamInitializer; +import org.apache.commons.lang3.StringUtils; + +import java.io.Serializable; +import java.math.BigDecimal; import static com.github.binarywang.wxpay.constant.WxPayConstants.SignType.ALL_SIGN_TYPES; @@ -118,6 +117,21 @@ public abstract class BaseWxPayRequest implements Serializable { @XStreamAlias("sign_type") private String signType; + + /** + * 企业微信签名 + */ + @XStreamAlias("workwx_sign") + private String workWxSign; + + public String getWorkWxSign() { + return workWxSign; + } + + public void setWorkWxSign(String workWxSign) { + this.workWxSign = workWxSign; + } + /** * 将单位为元转换为单位为分. * @@ -205,6 +219,26 @@ public abstract class BaseWxPayRequest implements Serializable { return false; } + /** + * 签名时,是否忽略sub_appid. + * + * @return the boolean + */ + protected boolean ignoreSubAppId() { + return false; + } + + protected boolean ignoreSubMchId(){ + return false; + } + + /** + * 是否是企业微信字段 + */ + protected boolean isWxWorkSign(){ + return false; + } + /** * 签名时,忽略的参数. * @@ -238,12 +272,16 @@ public abstract class BaseWxPayRequest implements Serializable { this.setMchId(config.getMchId()); } - if (StringUtils.isBlank(getSubAppId())) { - this.setSubAppId(config.getSubAppId()); + if (!ignoreSubAppId()) { + if (StringUtils.isBlank(getSubAppId())) { + this.setSubAppId(config.getSubAppId()); + } } - if (StringUtils.isBlank(getSubMchId())) { - this.setSubMchId(config.getSubMchId()); + if (!ignoreSubMchId()) { + if (StringUtils.isBlank(getSubMchId())) { + this.setSubMchId(config.getSubMchId()); + } } if (StringUtils.isBlank(getSignType())) { diff --git a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/service/EntPayService.java b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/service/EntPayService.java index df9330fc9..1b1b76b15 100644 --- a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/service/EntPayService.java +++ b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/service/EntPayService.java @@ -119,4 +119,28 @@ public interface EntPayService { * @throws WxPayException the wx pay exception */ EntPayBankQueryResult queryPayBank(EntPayBankQueryRequest request) throws WxPayException; + + /** + * 企业发送微信红包给个人用户 + *
+ * 文档地址:https://work.weixin.qq.com/api/doc + * 接口地址: https://api.mch.weixin.qq.com/mmpaymkttransfers/sendworkwxredpack + *+ * @param request 请求对象 + * @return the wx pay send redpack result + * @throws WxPayException the wx pay exception + */ + EntPayRedpackResult sendEnterpriseRedpack(EntPayRedpackRequest request) throws WxPayException; + + /** + * 企业发送微信红包查询 + *
+ * 文档地址:https://work.weixin.qq.com/api/doc + * 接口地址: https://api.mch.weixin.qq.com/mmpaymkttransfers/queryworkwxredpack + *+ * @param request 请求对象 + * @return the wx pay send redpack result + * @throws WxPayException the wx pay exception + */ + EntPayRedpackQueryResult queryEnterpriseRedpack(EntPayRedpackQueryRequest request) throws WxPayException; } diff --git a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/service/impl/EntPayServiceImpl.java b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/service/impl/EntPayServiceImpl.java index 59db3ee07..1db5bc40f 100644 --- a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/service/impl/EntPayServiceImpl.java +++ b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/service/impl/EntPayServiceImpl.java @@ -1,35 +1,26 @@ package com.github.binarywang.wxpay.service.impl; -import java.io.File; -import java.io.FileReader; -import java.io.IOException; -import java.nio.charset.StandardCharsets; -import java.nio.file.Files; -import java.nio.file.Path; -import java.security.PublicKey; -import java.security.Security; -import javax.crypto.Cipher; - +import com.github.binarywang.wxpay.bean.entpay.*; +import com.github.binarywang.wxpay.bean.request.WxPayDefaultRequest; +import com.github.binarywang.wxpay.bean.result.BaseWxPayResult; +import com.github.binarywang.wxpay.exception.WxPayException; +import com.github.binarywang.wxpay.service.EntPayService; +import com.github.binarywang.wxpay.service.WxPayService; +import com.github.binarywang.wxpay.util.SignUtils; import org.apache.commons.codec.binary.Base64; import org.bouncycastle.asn1.x509.SubjectPublicKeyInfo; import org.bouncycastle.jce.provider.BouncyCastleProvider; import org.bouncycastle.openssl.PEMParser; import org.bouncycastle.openssl.jcajce.JcaPEMKeyConverter; -import com.github.binarywang.wxpay.bean.entpay.EntPayBankQueryRequest; -import com.github.binarywang.wxpay.bean.entpay.EntPayBankQueryResult; -import com.github.binarywang.wxpay.bean.entpay.EntPayBankRequest; -import com.github.binarywang.wxpay.bean.entpay.EntPayBankResult; -import com.github.binarywang.wxpay.bean.entpay.EntPayQueryRequest; -import com.github.binarywang.wxpay.bean.entpay.EntPayQueryResult; -import com.github.binarywang.wxpay.bean.entpay.EntPayRequest; -import com.github.binarywang.wxpay.bean.entpay.EntPayResult; -import com.github.binarywang.wxpay.bean.entpay.GetPublicKeyResult; -import com.github.binarywang.wxpay.bean.request.WxPayDefaultRequest; -import com.github.binarywang.wxpay.bean.result.BaseWxPayResult; -import com.github.binarywang.wxpay.exception.WxPayException; -import com.github.binarywang.wxpay.service.EntPayService; -import com.github.binarywang.wxpay.service.WxPayService; +import javax.crypto.Cipher; +import java.io.File; +import java.io.FileReader; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Path; +import java.security.PublicKey; +import java.security.Security; /** *
@@ -140,6 +131,32 @@ public class EntPayServiceImpl implements EntPayService { return result; } + @Override + public EntPayRedpackResult sendEnterpriseRedpack(EntPayRedpackRequest request) throws WxPayException { + //企业微信签名,需要在请求签名之前 + request.setNonceStr(String.valueOf(System.currentTimeMillis())); + request.setWorkWxSign(SignUtils.createEntSign(request.getActName(),request.getMchBillNo(),request.getMchId(),request.getNonceStr(),request.getReOpenid(),request.getTotalAmount(),request.getWxAppId(),"Hcf-X_dzLeaTIyK33okGmODK8sLzc7kLrgkWXOAoMbE","MD5")); + + request.checkAndSign(this.payService.getConfig()); + + String url = this.payService.getPayBaseUrl() + "/mmpaymkttransfers/sendworkwxredpack"; + String responseContent = this.payService.post(url, request.toXML(), true); + final EntPayRedpackResult result = BaseWxPayResult.fromXML(responseContent, EntPayRedpackResult.class); + + result.checkResult(this.payService, request.getSignType(), true); + return result; + } + + @Override + public EntPayRedpackQueryResult queryEnterpriseRedpack(EntPayRedpackQueryRequest request) throws WxPayException { + request.checkAndSign(this.payService.getConfig()); + String url = this.payService.getPayBaseUrl() + "/mmpaymkttransfers/queryworkwxredpack"; + String responseContent = this.payService.post(url, request.toXML(), true); + final EntPayRedpackQueryResult result = BaseWxPayResult.fromXML(responseContent, EntPayRedpackQueryResult.class); + result.checkResult(this.payService, request.getSignType(), true); + return result; + } + private String encryptRSA(File publicKeyFile, String srcString) throws WxPayException { try { Security.addProvider(new BouncyCastleProvider()); diff --git a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/util/SignUtils.java b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/util/SignUtils.java index 5591b016b..8490e0099 100644 --- a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/util/SignUtils.java +++ b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/util/SignUtils.java @@ -91,7 +91,7 @@ public class SignUtils { if (shouldSign) { toSign.append(key).append("=").append(value).append("&"); - } + } } toSign.append("key=").append(signKey); @@ -102,6 +102,49 @@ public class SignUtils { } } + /** + * 企业微信签名 + * @param signType md5 目前接口要求使用的加密类型 + */ + public static String createEntSign(String actName,String mchBillNo,String mchId,String nonceStr, + String reOpenid,Integer totalAmount,String wxAppId,String signKey, + String signType){ + MapsortedMap = new HashMap<>(); + sortedMap.put("act_name",actName); + sortedMap.put("mch_billno",mchBillNo); + sortedMap.put("mch_id",mchId); + sortedMap.put("nonce_str",nonceStr); + sortedMap.put("re_openid",reOpenid); + sortedMap.put("total_amount", totalAmount + ""); + sortedMap.put("wxappid",wxAppId); + + Map sortParams = new TreeMap<>(sortedMap); + Set > entries = sortParams.entrySet(); + Iterator > iterator = entries.iterator(); + StringBuilder toSign = new StringBuilder(); + while(iterator.hasNext()){ + Map.Entry entry = iterator.next(); + String key = String.valueOf(entry.getKey()); + String value = String.valueOf(entry.getValue()); + boolean shouldSign = false; + if (StringUtils.isNotEmpty(value)) { + shouldSign = true; + } + + if (shouldSign) { + toSign.append(key).append("=").append(value).append("&"); + } + } + //企业微信这里字段名不一样 + toSign.append("secret=").append(signKey); + if (SignType.HMAC_SHA256.equals(signType)) { + return me.chanjar.weixin.common.util.SignUtils.createHmacSha256Sign(toSign.toString(), signKey); + } else { + return DigestUtils.md5Hex(toSign.toString()).toUpperCase(); + } + + } + /** * 校验签名是否正确. * diff --git a/weixin-java-pay/src/test/java/com/github/binarywang/wxpay/service/impl/EntPayServiceImplTest.java b/weixin-java-pay/src/test/java/com/github/binarywang/wxpay/service/impl/EntPayServiceImplTest.java index 4c7f6e324..142bbbc73 100644 --- a/weixin-java-pay/src/test/java/com/github/binarywang/wxpay/service/impl/EntPayServiceImplTest.java +++ b/weixin-java-pay/src/test/java/com/github/binarywang/wxpay/service/impl/EntPayServiceImplTest.java @@ -1,8 +1,6 @@ package com.github.binarywang.wxpay.service.impl; -import com.github.binarywang.wxpay.bean.entpay.EntPayBankRequest; -import com.github.binarywang.wxpay.bean.entpay.EntPayBankResult; -import com.github.binarywang.wxpay.bean.entpay.EntPayRequest; +import com.github.binarywang.wxpay.bean.entpay.*; import com.github.binarywang.wxpay.constant.WxPayConstants.CheckNameOption; import com.github.binarywang.wxpay.exception.WxPayException; import com.github.binarywang.wxpay.service.WxPayService; @@ -10,7 +8,10 @@ import com.github.binarywang.wxpay.testbase.ApiTestModule; import com.google.inject.Inject; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.testng.annotations.*; +import org.testng.annotations.Guice; +import org.testng.annotations.Test; + +import java.util.concurrent.TimeUnit; /** * @@ -94,4 +95,57 @@ public class EntPayServiceImplTest { public void testQueryPayBank() throws Exception { this.logger.info(this.payService.getEntPayService().queryPayBank("123").toString()); } + + + + /** + * 发送企业红包 + * @throws Exception the exception + */ + @Test + public void testSendEnterpriseRedpack() { + EntPayRedpackRequest request = new EntPayRedpackRequest(); + request.setMchId("1"); + //商户单号 + request.setMchBillNo(request.getMchId()+"20191202"+"1"); + //企业微信corpid即为此appId + request.setWxAppId("1"); +// request.setSenderName("1"); +// request.setSenderHeaderMediaId("2"); + request.setAgentId("1"); + request.setReOpenid("1"); + //目前企业微信api红包最低1块钱 + request.setTotalAmount(1000); + request.setWishing("1"); + request.setActName("1"); + request.setRemark("1"); + + EntPayRedpackResult redpackResult = null; + try { + redpackResult = this.payService.getEntPayService().sendEnterpriseRedpack(request); + } catch (WxPayException e) { + } + this.logger.info(redpackResult.toString()); + } + + /** + * 查询企业红包 + * @throws Exception + */ + @Test + public void testQueryEnterpriseRedpack() throws Exception { + while (true) { + EntPayRedpackQueryRequest request = new EntPayRedpackQueryRequest(); + request.setAppid("1"); + request.setMchId("1"); + request.setMchBillNo("1"); + + try { + EntPayRedpackQueryResult result = this.payService.getEntPayService().queryEnterpriseRedpack(request); + this.logger.info(result.toString()); + } catch (Exception e) { + } + TimeUnit.SECONDS.sleep(3); + } + } }