| @@ -105,8 +105,28 @@ public class WxPaySendMiniProgramRedpackRequest extends BaseWxPayRequest { | |||
| @XStreamAlias("scene_id") | |||
| private String sceneId; | |||
| /** | |||
| * wxappid. | |||
| * 微信分配的公众账号ID(企业号corpid即为此appId)。 | |||
| * 接口传入的所有appid应该为公众号的appid(在mp.weixin.qq.com申请的), | |||
| * 不能为APP的appid(在open.weixin.qq.com申请的) | |||
| */ | |||
| @XStreamAlias("wxappid") | |||
| private String wxAppid; | |||
| @Override | |||
| protected void checkConstraints() { | |||
| } | |||
| @Override | |||
| public String getAppid() { | |||
| return this.wxAppid; | |||
| } | |||
| @Override | |||
| public void setAppid(String appid) { | |||
| this.wxAppid = appid; | |||
| } | |||
| } | |||
| @@ -0,0 +1,76 @@ | |||
| package com.github.binarywang.wxpay.service; | |||
| import com.github.binarywang.wxpay.bean.request.WxPayRedpackQueryRequest; | |||
| import com.github.binarywang.wxpay.bean.request.WxPaySendMiniProgramRedpackRequest; | |||
| import com.github.binarywang.wxpay.bean.request.WxPaySendRedpackRequest; | |||
| import com.github.binarywang.wxpay.bean.result.WxPayRedpackQueryResult; | |||
| import com.github.binarywang.wxpay.bean.result.WxPaySendMiniProgramRedpackResult; | |||
| import com.github.binarywang.wxpay.bean.result.WxPaySendRedpackResult; | |||
| import com.github.binarywang.wxpay.exception.WxPayException; | |||
| /** | |||
| * 红包相关接口. | |||
| * | |||
| * @author <a href="https://github.com/binarywang">Binary Wang</a> | |||
| * @date 2019-12-26 | |||
| */ | |||
| public interface RedpackService { | |||
| /** | |||
| * <pre> | |||
| * 发送小程序红包. | |||
| * 文档详见: https://pay.weixin.qq.com/wiki/doc/api/tools/miniprogram_hb.php?chapter=13_9&index=2 | |||
| * 接口地址:https://api.mch.weixin.qq.com/mmpaymkttransfers/sendminiprogramhb | |||
| * </pre> | |||
| * | |||
| * @param request 请求对象 | |||
| * @return the result | |||
| * @throws WxPayException the exception | |||
| */ | |||
| WxPaySendMiniProgramRedpackResult sendMiniProgramRedpack(WxPaySendMiniProgramRedpackRequest request) throws WxPayException; | |||
| /** | |||
| * 发送微信红包给个人用户. | |||
| * <pre> | |||
| * 文档详见: | |||
| * 发送普通红包 https://pay.weixin.qq.com/wiki/doc/api/tools/cash_coupon.php?chapter=13_4&index=3 | |||
| * 接口地址:https://api.mch.weixin.qq.com/mmpaymkttransfers/sendredpack | |||
| * 发送裂变红包 https://pay.weixin.qq.com/wiki/doc/api/tools/cash_coupon.php?chapter=13_5&index=4 | |||
| * 接口地址:https://api.mch.weixin.qq.com/mmpaymkttransfers/sendgroupredpack | |||
| * </pre> | |||
| * | |||
| * @param request 请求对象 | |||
| * @return the wx pay send redpack result | |||
| * @throws WxPayException the wx pay exception | |||
| */ | |||
| WxPaySendRedpackResult sendRedpack(WxPaySendRedpackRequest request) throws WxPayException; | |||
| /** | |||
| * <pre> | |||
| * 查询红包记录. | |||
| * 用于商户对已发放的红包进行查询红包的具体信息,可支持普通红包和裂变包。 | |||
| * 请求Url:https://api.mch.weixin.qq.com/mmpaymkttransfers/gethbinfo | |||
| * 是否需要证书:是(证书及使用说明详见商户证书) | |||
| * 请求方式:POST | |||
| * </pre> | |||
| * | |||
| * @param mchBillNo 商户发放红包的商户订单号,比如10000098201411111234567890 | |||
| * @return the wx pay redpack query result | |||
| * @throws WxPayException the wx pay exception | |||
| */ | |||
| WxPayRedpackQueryResult queryRedpack(String mchBillNo) throws WxPayException; | |||
| /** | |||
| * <pre> | |||
| * 查询红包记录. | |||
| * 用于商户对已发放的红包进行查询红包的具体信息,可支持普通红包和裂变包。 | |||
| * 请求Url:https://api.mch.weixin.qq.com/mmpaymkttransfers/gethbinfo | |||
| * 是否需要证书:是(证书及使用说明详见商户证书) | |||
| * 请求方式:POST | |||
| * </pre> | |||
| * | |||
| * @param request 红包查询请求 | |||
| * @return the wx pay redpack query result | |||
| * @throws WxPayException the wx pay exception | |||
| */ | |||
| WxPayRedpackQueryResult queryRedpack(WxPayRedpackQueryRequest request) throws WxPayException; | |||
| } | |||
| @@ -60,6 +60,13 @@ public interface WxPayService { | |||
| */ | |||
| EntPayService getEntPayService(); | |||
| /** | |||
| * 获取红包接口服务类. | |||
| * | |||
| * @return . | |||
| */ | |||
| RedpackService getRedpackService(); | |||
| /** | |||
| * 获取分账服务类. | |||
| * | |||
| @@ -277,62 +284,27 @@ public interface WxPayService { | |||
| WxScanPayNotifyResult parseScanPayNotifyResult(String xmlData) throws WxPayException; | |||
| /** | |||
| * <pre> | |||
| * 发送小程序红包. | |||
| * 文档详见: https://pay.weixin.qq.com/wiki/doc/api/tools/miniprogram_hb.php?chapter=13_9&index=2 | |||
| * 接口地址:https://api.mch.weixin.qq.com/mmpaymkttransfers/sendminiprogramhb | |||
| * </pre> | |||
| * | |||
| * @param request 请求对象 | |||
| * @return the result | |||
| * @throws WxPayException the exception | |||
| * @deprecated 建议使用 {@link RedpackService#sendMiniProgramRedpack(WxPaySendMiniProgramRedpackRequest)} | |||
| */ | |||
| @Deprecated | |||
| WxPaySendMiniProgramRedpackResult sendMiniProgramRedpack(WxPaySendMiniProgramRedpackRequest request) throws WxPayException; | |||
| /** | |||
| * 发送微信红包给个人用户. | |||
| * <pre> | |||
| * 文档详见: | |||
| * 发送普通红包 https://pay.weixin.qq.com/wiki/doc/api/tools/cash_coupon.php?chapter=13_4&index=3 | |||
| * 接口地址:https://api.mch.weixin.qq.com/mmpaymkttransfers/sendredpack | |||
| * 发送裂变红包 https://pay.weixin.qq.com/wiki/doc/api/tools/cash_coupon.php?chapter=13_5&index=4 | |||
| * 接口地址:https://api.mch.weixin.qq.com/mmpaymkttransfers/sendgroupredpack | |||
| * </pre> | |||
| * | |||
| * @param request 请求对象 | |||
| * @return the wx pay send redpack result | |||
| * @throws WxPayException the wx pay exception | |||
| * @deprecated 建议使用 {@link RedpackService#sendRedpack(WxPaySendRedpackRequest)} | |||
| */ | |||
| @Deprecated | |||
| WxPaySendRedpackResult sendRedpack(WxPaySendRedpackRequest request) throws WxPayException; | |||
| /** | |||
| * <pre> | |||
| * 查询红包记录. | |||
| * 用于商户对已发放的红包进行查询红包的具体信息,可支持普通红包和裂变包。 | |||
| * 请求Url:https://api.mch.weixin.qq.com/mmpaymkttransfers/gethbinfo | |||
| * 是否需要证书:是(证书及使用说明详见商户证书) | |||
| * 请求方式:POST | |||
| * </pre> | |||
| * | |||
| * @param mchBillNo 商户发放红包的商户订单号,比如10000098201411111234567890 | |||
| * @return the wx pay redpack query result | |||
| * @throws WxPayException the wx pay exception | |||
| * @deprecated 建议使用 {@link RedpackService#queryRedpack(String)} | |||
| */ | |||
| @Deprecated | |||
| WxPayRedpackQueryResult queryRedpack(String mchBillNo) throws WxPayException; | |||
| /** | |||
| * <pre> | |||
| * 查询红包记录. | |||
| * 用于商户对已发放的红包进行查询红包的具体信息,可支持普通红包和裂变包。 | |||
| * 请求Url:https://api.mch.weixin.qq.com/mmpaymkttransfers/gethbinfo | |||
| * 是否需要证书:是(证书及使用说明详见商户证书) | |||
| * 请求方式:POST | |||
| * </pre> | |||
| * | |||
| * @param request 红包查询请求 | |||
| * @return the wx pay redpack query result | |||
| * @throws WxPayException the wx pay exception | |||
| * @deprecated 建议使用 {@link RedpackService#queryRedpack(WxPayRedpackQueryRequest)} | |||
| */ | |||
| @Deprecated | |||
| WxPayRedpackQueryResult queryRedpack(WxPayRedpackQueryRequest request) throws WxPayException; | |||
| /** | |||
| @@ -13,12 +13,12 @@ import com.github.binarywang.wxpay.bean.order.WxPayNativeOrderResult; | |||
| import com.github.binarywang.wxpay.bean.request.*; | |||
| import com.github.binarywang.wxpay.bean.result.*; | |||
| import com.github.binarywang.wxpay.config.WxPayConfig; | |||
| import com.github.binarywang.wxpay.constant.WxPayConstants.BillType; | |||
| import com.github.binarywang.wxpay.constant.WxPayConstants.SignType; | |||
| import com.github.binarywang.wxpay.constant.WxPayConstants.TradeType; | |||
| import com.github.binarywang.wxpay.exception.WxPayException; | |||
| import com.github.binarywang.wxpay.service.EntPayService; | |||
| import com.github.binarywang.wxpay.service.ProfitSharingService; | |||
| import com.github.binarywang.wxpay.service.RedpackService; | |||
| import com.github.binarywang.wxpay.service.WxPayService; | |||
| import com.github.binarywang.wxpay.util.SignUtils; | |||
| import com.google.common.base.Joiner; | |||
| @@ -61,6 +61,8 @@ public abstract class BaseWxPayServiceImpl implements WxPayService { | |||
| private EntPayService entPayService = new EntPayServiceImpl(this); | |||
| private ProfitSharingService profitSharingService = new ProfitSharingServiceImpl(this); | |||
| private RedpackService redpackService = new RedpackServiceImpl(this); | |||
| /** | |||
| * The Config. | |||
| */ | |||
| @@ -76,6 +78,11 @@ public abstract class BaseWxPayServiceImpl implements WxPayService { | |||
| return profitSharingService; | |||
| } | |||
| @Override | |||
| public RedpackService getRedpackService() { | |||
| return this.redpackService; | |||
| } | |||
| @Override | |||
| public void setEntPayService(EntPayService entPayService) { | |||
| this.entPayService = entPayService; | |||
| @@ -182,51 +189,25 @@ public abstract class BaseWxPayServiceImpl implements WxPayService { | |||
| } | |||
| @Override | |||
| public WxPaySendMiniProgramRedpackResult sendMiniProgramRedpack(WxPaySendMiniProgramRedpackRequest request) | |||
| throws WxPayException { | |||
| request.checkAndSign(this.getConfig()); | |||
| String url = this.getPayBaseUrl() + "/mmpaymkttransfers/sendminiprogramhb"; | |||
| String responseContent = this.post(url, request.toXML(), true); | |||
| WxPaySendMiniProgramRedpackResult result = BaseWxPayResult.fromXML(responseContent, WxPaySendMiniProgramRedpackResult.class); | |||
| result.checkResult(this, request.getSignType(), true); | |||
| return result; | |||
| } | |||
| @Override | |||
| public WxPaySendMiniProgramRedpackResult sendMiniProgramRedpack(WxPaySendMiniProgramRedpackRequest request) | |||
| throws WxPayException { | |||
| return this.redpackService.sendMiniProgramRedpack(request); | |||
| } | |||
| @Override | |||
| @Override | |||
| public WxPaySendRedpackResult sendRedpack(WxPaySendRedpackRequest request) throws WxPayException { | |||
| request.checkAndSign(this.getConfig()); | |||
| String url = this.getPayBaseUrl() + "/mmpaymkttransfers/sendredpack"; | |||
| if (request.getAmtType() != null) { | |||
| //裂变红包 | |||
| url = this.getPayBaseUrl() + "/mmpaymkttransfers/sendgroupredpack"; | |||
| } | |||
| String responseContent = this.post(url, request.toXML(), true); | |||
| final WxPaySendRedpackResult result = BaseWxPayResult.fromXML(responseContent, WxPaySendRedpackResult.class); | |||
| result.checkResult(this, request.getSignType(), true); | |||
| return result; | |||
| return this.redpackService.sendRedpack(request); | |||
| } | |||
| @Override | |||
| public WxPayRedpackQueryResult queryRedpack(String mchBillNo) throws WxPayException { | |||
| WxPayRedpackQueryRequest request = new WxPayRedpackQueryRequest(); | |||
| request.setMchBillNo(mchBillNo); | |||
| return this.queryRedpack(request); | |||
| return this.redpackService.queryRedpack(mchBillNo); | |||
| } | |||
| @Override | |||
| public WxPayRedpackQueryResult queryRedpack(WxPayRedpackQueryRequest request) throws WxPayException { | |||
| request.setBillType(BillType.MCHT); | |||
| request.checkAndSign(this.getConfig()); | |||
| String url = this.getPayBaseUrl() + "/mmpaymkttransfers/gethbinfo"; | |||
| String responseContent = this.post(url, request.toXML(), true); | |||
| WxPayRedpackQueryResult result = BaseWxPayResult.fromXML(responseContent, WxPayRedpackQueryResult.class); | |||
| result.checkResult(this, request.getSignType(), true); | |||
| return result; | |||
| return this.redpackService.queryRedpack(request); | |||
| } | |||
| @Override | |||
| @@ -0,0 +1,72 @@ | |||
| package com.github.binarywang.wxpay.service.impl; | |||
| import com.github.binarywang.wxpay.bean.request.WxPayRedpackQueryRequest; | |||
| import com.github.binarywang.wxpay.bean.request.WxPaySendMiniProgramRedpackRequest; | |||
| import com.github.binarywang.wxpay.bean.request.WxPaySendRedpackRequest; | |||
| import com.github.binarywang.wxpay.bean.result.BaseWxPayResult; | |||
| import com.github.binarywang.wxpay.bean.result.WxPayRedpackQueryResult; | |||
| import com.github.binarywang.wxpay.bean.result.WxPaySendMiniProgramRedpackResult; | |||
| import com.github.binarywang.wxpay.bean.result.WxPaySendRedpackResult; | |||
| import com.github.binarywang.wxpay.constant.WxPayConstants; | |||
| import com.github.binarywang.wxpay.exception.WxPayException; | |||
| import com.github.binarywang.wxpay.service.RedpackService; | |||
| import com.github.binarywang.wxpay.service.WxPayService; | |||
| import lombok.RequiredArgsConstructor; | |||
| /** | |||
| * 老板加点注释吧. | |||
| * | |||
| * @author <a href="https://github.com/binarywang">Binary Wang</a> | |||
| * @date 2019-12-26 | |||
| */ | |||
| @RequiredArgsConstructor | |||
| public class RedpackServiceImpl implements RedpackService { | |||
| private final WxPayService payService; | |||
| @Override | |||
| public WxPaySendMiniProgramRedpackResult sendMiniProgramRedpack(WxPaySendMiniProgramRedpackRequest request) | |||
| throws WxPayException { | |||
| request.checkAndSign(this.payService.getConfig()); | |||
| String url = this.payService.getPayBaseUrl() + "/mmpaymkttransfers/sendminiprogramhb"; | |||
| String responseContent = this.payService.post(url, request.toXML(), true); | |||
| WxPaySendMiniProgramRedpackResult result = BaseWxPayResult.fromXML(responseContent, WxPaySendMiniProgramRedpackResult.class); | |||
| result.checkResult(this.payService, request.getSignType(), true); | |||
| return result; | |||
| } | |||
| @Override | |||
| public WxPaySendRedpackResult sendRedpack(WxPaySendRedpackRequest request) throws WxPayException { | |||
| request.checkAndSign(this.payService.getConfig()); | |||
| String url = this.payService.getPayBaseUrl() + "/mmpaymkttransfers/sendredpack"; | |||
| if (request.getAmtType() != null) { | |||
| //裂变红包 | |||
| url = this.payService.getPayBaseUrl() + "/mmpaymkttransfers/sendgroupredpack"; | |||
| } | |||
| String responseContent = this.payService.post(url, request.toXML(), true); | |||
| final WxPaySendRedpackResult result = BaseWxPayResult.fromXML(responseContent, WxPaySendRedpackResult.class); | |||
| result.checkResult(this.payService, request.getSignType(), true); | |||
| return result; | |||
| } | |||
| @Override | |||
| public WxPayRedpackQueryResult queryRedpack(String mchBillNo) throws WxPayException { | |||
| WxPayRedpackQueryRequest request = new WxPayRedpackQueryRequest(); | |||
| request.setMchBillNo(mchBillNo); | |||
| return this.queryRedpack(request); | |||
| } | |||
| @Override | |||
| public WxPayRedpackQueryResult queryRedpack(WxPayRedpackQueryRequest request) throws WxPayException { | |||
| request.setBillType(WxPayConstants.BillType.MCHT); | |||
| request.checkAndSign(this.payService.getConfig()); | |||
| String url = this.payService.getPayBaseUrl() + "/mmpaymkttransfers/gethbinfo"; | |||
| String responseContent = this.payService.post(url, request.toXML(), true); | |||
| WxPayRedpackQueryResult result = BaseWxPayResult.fromXML(responseContent, WxPayRedpackQueryResult.class); | |||
| result.checkResult(this.payService, request.getSignType(), true); | |||
| return result; | |||
| } | |||
| } | |||
| @@ -18,6 +18,7 @@ import com.github.binarywang.wxpay.service.WxPayService; | |||
| import com.github.binarywang.wxpay.testbase.ApiTestModule; | |||
| import com.github.binarywang.wxpay.testbase.XmlWxPayConfig; | |||
| import com.google.inject.Inject; | |||
| import lombok.extern.slf4j.Slf4j; | |||
| import org.slf4j.Logger; | |||
| import org.slf4j.LoggerFactory; | |||
| import org.testng.annotations.DataProvider; | |||
| @@ -39,10 +40,10 @@ import static org.testng.Assert.*; | |||
| * | |||
| * @author <a href="https://github.com/binarywang">Binary Wang</a> | |||
| */ | |||
| @Slf4j | |||
| @Test | |||
| @Guice(modules = ApiTestModule.class) | |||
| public class BaseWxPayServiceImplTest { | |||
| private final Logger logger = LoggerFactory.getLogger(this.getClass()); | |||
| @Inject | |||
| private WxPayService payService; | |||
| @@ -65,8 +66,8 @@ public class BaseWxPayServiceImplTest { | |||
| .build(); | |||
| request.setSignType(SignType.HMAC_SHA256); | |||
| WxPayUnifiedOrderResult result = this.payService.unifiedOrder(request); | |||
| this.logger.info(result.toString()); | |||
| this.logger.warn(this.payService.getWxApiData().toString()); | |||
| log.info(result.toString()); | |||
| log.warn(this.payService.getWxApiData().toString()); | |||
| } | |||
| /** | |||
| @@ -96,8 +97,8 @@ public class BaseWxPayServiceImplTest { | |||
| .openid(((XmlWxPayConfig) this.payService.getConfig()).getOpenid()) | |||
| .outTradeNo("1111112") | |||
| .build()); | |||
| this.logger.info(result.toString()); | |||
| this.logger.warn(this.payService.getWxApiData().toString()); | |||
| log.info(result.toString()); | |||
| log.warn(this.payService.getWxApiData().toString()); | |||
| } | |||
| /** | |||
| @@ -116,8 +117,8 @@ public class BaseWxPayServiceImplTest { | |||
| .tradeType(TradeType.APP) | |||
| .outTradeNo("1111112") | |||
| .build()); | |||
| this.logger.info(result.toString()); | |||
| this.logger.warn(this.payService.getWxApiData().toString()); | |||
| log.info(result.toString()); | |||
| log.warn(this.payService.getWxApiData().toString()); | |||
| } | |||
| /** | |||
| @@ -137,8 +138,8 @@ public class BaseWxPayServiceImplTest { | |||
| .tradeType(TradeType.NATIVE) | |||
| .outTradeNo("111111290") | |||
| .build()); | |||
| this.logger.info(result.toString()); | |||
| this.logger.warn(this.payService.getWxApiData().toString()); | |||
| log.info(result.toString()); | |||
| log.warn(this.payService.getWxApiData().toString()); | |||
| } | |||
| /** | |||
| @@ -158,8 +159,8 @@ public class BaseWxPayServiceImplTest { | |||
| */ | |||
| @Test | |||
| public void testQueryOrder() throws WxPayException { | |||
| this.logger.info(this.payService.queryOrder("11212121", null).toString()); | |||
| this.logger.info(this.payService.queryOrder(null, "11111").toString()); | |||
| log.info(this.payService.queryOrder("11212121", null).toString()); | |||
| log.info(this.payService.queryOrder(null, "11111").toString()); | |||
| } | |||
| /** | |||
| @@ -169,7 +170,7 @@ public class BaseWxPayServiceImplTest { | |||
| */ | |||
| @Test | |||
| public void testCloseOrder() throws WxPayException { | |||
| this.logger.info(this.payService.closeOrder("11212121").toString()); | |||
| log.info(this.payService.closeOrder("11212121").toString()); | |||
| } | |||
| /** | |||
| @@ -205,7 +206,7 @@ public class BaseWxPayServiceImplTest { | |||
| String tarType, String deviceInfo) throws Exception { | |||
| WxPayBillResult billResult = this.payService.downloadBill(billDate, billType, tarType, deviceInfo); | |||
| assertThat(billResult).isNotNull(); | |||
| this.logger.info(billResult.toString()); | |||
| log.info(billResult.toString()); | |||
| } | |||
| /** | |||
| @@ -248,7 +249,7 @@ public class BaseWxPayServiceImplTest { | |||
| public void testDownloadFundFlow(String billDate, String accountType, String tarType) throws Exception { | |||
| WxPayFundFlowResult fundFlowResult = this.payService.downloadFundFlow(billDate, accountType, tarType); | |||
| assertThat(fundFlowResult).isNotNull(); | |||
| this.logger.info(fundFlowResult.toString()); | |||
| log.info(fundFlowResult.toString()); | |||
| } | |||
| /** | |||
| @@ -293,7 +294,7 @@ public class BaseWxPayServiceImplTest { | |||
| .totalFee(1222) | |||
| .refundFee(111) | |||
| .build()); | |||
| this.logger.info(result.toString()); | |||
| log.info(result.toString()); | |||
| } | |||
| /** | |||
| @@ -306,20 +307,20 @@ public class BaseWxPayServiceImplTest { | |||
| WxPayRefundQueryResult result; | |||
| result = this.payService.refundQuery("1", "", "", ""); | |||
| this.logger.info(result.toString()); | |||
| log.info(result.toString()); | |||
| result = this.payService.refundQuery("", "2", "", ""); | |||
| this.logger.info(result.toString()); | |||
| log.info(result.toString()); | |||
| result = this.payService.refundQuery("", "", "3", ""); | |||
| this.logger.info(result.toString()); | |||
| log.info(result.toString()); | |||
| result = this.payService.refundQuery("", "", "", "4"); | |||
| this.logger.info(result.toString()); | |||
| log.info(result.toString()); | |||
| //测试四个参数都填的情况,应该报异常的 | |||
| result = this.payService.refundQuery("1", "2", "3", "4"); | |||
| this.logger.info(result.toString()); | |||
| log.info(result.toString()); | |||
| } | |||
| /** | |||
| @@ -332,37 +333,6 @@ public class BaseWxPayServiceImplTest { | |||
| // 请参考com.github.binarywang.wxpay.bean.notify.WxPayRefundNotifyResultTest里的单元测试 | |||
| } | |||
| /** | |||
| * Test method for {@link WxPayService#sendRedpack(WxPaySendRedpackRequest)} . | |||
| * | |||
| * @throws Exception the exception | |||
| */ | |||
| @Test | |||
| public void testSendRedpack() throws Exception { | |||
| WxPaySendRedpackRequest request = new WxPaySendRedpackRequest(); | |||
| request.setActName("abc"); | |||
| request.setClientIp("aaa"); | |||
| request.setMchBillNo("aaaa"); | |||
| request.setWishing("what"); | |||
| request.setSendName("111"); | |||
| request.setTotalAmount(1); | |||
| request.setTotalNum(1); | |||
| request.setReOpenid(((XmlWxPayConfig) this.payService.getConfig()).getOpenid()); | |||
| WxPaySendRedpackResult redpackResult = this.payService.sendRedpack(request); | |||
| this.logger.info(redpackResult.toString()); | |||
| } | |||
| /** | |||
| * Test method for {@link WxPayService#queryRedpack(String)}. | |||
| * | |||
| * @throws Exception the exception | |||
| */ | |||
| @Test | |||
| public void testQueryRedpack() throws Exception { | |||
| WxPayRedpackQueryResult redpackResult = this.payService.queryRedpack("aaaa"); | |||
| this.logger.info(redpackResult.toString()); | |||
| } | |||
| /** | |||
| * Test create scan pay qrcode mode 1. | |||
| * | |||
| @@ -375,7 +345,7 @@ public class BaseWxPayServiceImplTest { | |||
| Path qrcodeFilePath = Files.createTempFile("qrcode_", ".jpg"); | |||
| Files.write(qrcodeFilePath, bytes); | |||
| String qrcodeContent = QrcodeUtils.decodeQrcode(qrcodeFilePath.toFile()); | |||
| this.logger.info(qrcodeContent); | |||
| log.info(qrcodeContent); | |||
| assertTrue(qrcodeContent.startsWith("weixin://wxpay/bizpayurl?")); | |||
| assertTrue(qrcodeContent.contains("product_id=" + productId)); | |||
| @@ -411,7 +381,7 @@ public class BaseWxPayServiceImplTest { | |||
| .spbillCreateIp("127.0.0.1") | |||
| .authCode("aaa") | |||
| .build()); | |||
| this.logger.info(result.toString()); | |||
| log.info(result.toString()); | |||
| } | |||
| /** | |||
| @@ -446,7 +416,7 @@ public class BaseWxPayServiceImplTest { | |||
| .outTradeNo("1111") | |||
| .build()); | |||
| assertNotNull(result); | |||
| this.logger.info(result.toString()); | |||
| log.info(result.toString()); | |||
| } | |||
| /** | |||
| @@ -460,11 +430,11 @@ public class BaseWxPayServiceImplTest { | |||
| String result = this.payService.shorturl(new WxPayShorturlRequest(longUrl)); | |||
| assertNotNull(result); | |||
| this.logger.info(result); | |||
| log.info(result); | |||
| result = this.payService.shorturl(longUrl); | |||
| assertNotNull(result); | |||
| this.logger.info(result); | |||
| log.info(result); | |||
| } | |||
| /** | |||
| @@ -478,11 +448,11 @@ public class BaseWxPayServiceImplTest { | |||
| String result = this.payService.authcode2Openid(new WxPayAuthcode2OpenidRequest(authCode)); | |||
| assertNotNull(result); | |||
| this.logger.info(result); | |||
| log.info(result); | |||
| result = this.payService.authcode2Openid(authCode); | |||
| assertNotNull(result); | |||
| this.logger.info(result); | |||
| log.info(result); | |||
| } | |||
| /** | |||
| @@ -494,7 +464,7 @@ public class BaseWxPayServiceImplTest { | |||
| public void testGetSandboxSignKey() throws Exception { | |||
| final String signKey = this.payService.getSandboxSignKey(); | |||
| assertNotNull(signKey); | |||
| this.logger.info(signKey); | |||
| log.info(signKey); | |||
| } | |||
| /** | |||
| @@ -510,7 +480,7 @@ public class BaseWxPayServiceImplTest { | |||
| .partnerTradeNo("1212") | |||
| .openidCount(1) | |||
| .build()); | |||
| this.logger.info(result.toString()); | |||
| log.info(result.toString()); | |||
| } | |||
| /** | |||
| @@ -524,7 +494,7 @@ public class BaseWxPayServiceImplTest { | |||
| WxPayCouponStockQueryRequest.newBuilder() | |||
| .couponStockId("123") | |||
| .build()); | |||
| this.logger.info(result.toString()); | |||
| log.info(result.toString()); | |||
| } | |||
| /** | |||
| @@ -540,7 +510,7 @@ public class BaseWxPayServiceImplTest { | |||
| .couponId("11") | |||
| .stockId("1121") | |||
| .build()); | |||
| this.logger.info(result.toString()); | |||
| log.info(result.toString()); | |||
| } | |||
| /** | |||
| @@ -556,7 +526,7 @@ public class BaseWxPayServiceImplTest { | |||
| calendar.add(Calendar.DAY_OF_MONTH, -88); | |||
| Date beginDate = calendar.getTime(); | |||
| String result = this.payService.queryComment(beginDate, endDate, 0, 1); | |||
| this.logger.info(result); | |||
| log.info(result); | |||
| } | |||
| /** | |||
| @@ -610,15 +580,6 @@ public class BaseWxPayServiceImplTest { | |||
| //see test in testUnifiedOrder() | |||
| } | |||
| @Test | |||
| public void testSendMiniProgramRedpack() throws WxPayException { | |||
| final WxPaySendMiniProgramRedpackResult result = this.payService | |||
| .sendMiniProgramRedpack(new WxPaySendMiniProgramRedpackRequest() | |||
| .setReOpenid("ojOQA0y9o-Eb6Aep7uVTdbkJqrP4") | |||
| .setTotalAmount(1)); | |||
| System.out.println(result); | |||
| } | |||
| @Test | |||
| public void testDownloadRawBill() { | |||
| } | |||
| @@ -0,0 +1,63 @@ | |||
| package com.github.binarywang.wxpay.service.impl; | |||
| import com.github.binarywang.wxpay.bean.request.WxPaySendMiniProgramRedpackRequest; | |||
| import com.github.binarywang.wxpay.bean.request.WxPaySendRedpackRequest; | |||
| import com.github.binarywang.wxpay.bean.result.WxPayRedpackQueryResult; | |||
| import com.github.binarywang.wxpay.bean.result.WxPaySendMiniProgramRedpackResult; | |||
| import com.github.binarywang.wxpay.bean.result.WxPaySendRedpackResult; | |||
| import com.github.binarywang.wxpay.exception.WxPayException; | |||
| import com.github.binarywang.wxpay.service.WxPayService; | |||
| import com.github.binarywang.wxpay.testbase.ApiTestModule; | |||
| import com.github.binarywang.wxpay.testbase.XmlWxPayConfig; | |||
| import com.google.inject.Inject; | |||
| import lombok.extern.slf4j.Slf4j; | |||
| import org.testng.annotations.Guice; | |||
| import org.testng.annotations.Test; | |||
| /** | |||
| * 测试类. | |||
| * | |||
| * @author <a href="https://github.com/binarywang">Binary Wang</a> | |||
| * @date 2019-12-26 | |||
| */ | |||
| @Slf4j | |||
| @Test | |||
| @Guice(modules = ApiTestModule.class) | |||
| public class RedpackServiceImplTest { | |||
| @Inject | |||
| private WxPayService payService; | |||
| @Test | |||
| public void testSendRedpack() throws Exception { | |||
| WxPaySendRedpackRequest request = new WxPaySendRedpackRequest(); | |||
| request.setActName("abc"); | |||
| request.setClientIp("aaa"); | |||
| request.setMchBillNo("aaaa"); | |||
| request.setWishing("what"); | |||
| request.setSendName("111"); | |||
| request.setTotalAmount(1); | |||
| request.setTotalNum(1); | |||
| request.setReOpenid(((XmlWxPayConfig) this.payService.getConfig()).getOpenid()); | |||
| WxPaySendRedpackResult redpackResult = this.payService.getRedpackService().sendRedpack(request); | |||
| log.info(redpackResult.toString()); | |||
| } | |||
| @Test | |||
| public void testQueryRedpack() throws Exception { | |||
| WxPayRedpackQueryResult redpackResult = this.payService.getRedpackService().queryRedpack("aaaa"); | |||
| log.info(redpackResult.toString()); | |||
| } | |||
| @Test | |||
| public void testSendMiniProgramRedpack() throws WxPayException { | |||
| final WxPaySendMiniProgramRedpackResult result = this.payService.getRedpackService() | |||
| .sendMiniProgramRedpack(new WxPaySendMiniProgramRedpackRequest() | |||
| .setReOpenid("ojOQA0y9o-Eb6Aep7uVTdbkJqrP4") | |||
| .setWishing("haha") | |||
| .setMchBillNo("123") | |||
| .setActName("11") | |||
| .setSendName("111") | |||
| .setTotalAmount(1)); | |||
| System.out.println(result); | |||
| } | |||
| } | |||