mirror of
https://gitee.com/binary/weixin-java-tools.git
synced 2025-05-04 04:37:46 +08:00
✨ #1033 微信支付增加发送小程序红包的接口
This commit is contained in:
parent
e8a9d00a36
commit
9317366def
@ -0,0 +1,112 @@
|
|||||||
|
package com.github.binarywang.wxpay.bean.request;
|
||||||
|
|
||||||
|
import com.thoughtworks.xstream.annotations.XStreamAlias;
|
||||||
|
import lombok.*;
|
||||||
|
import lombok.experimental.Accessors;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 发送小程序红包请求参数对象.
|
||||||
|
*
|
||||||
|
* @author <a href="https://github.com/binarywang">Binary Wang</a>
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
@Builder
|
||||||
|
@XStreamAlias("xml")
|
||||||
|
@Accessors(chain = true)
|
||||||
|
public class WxPaySendMiniProgramRedpackRequest extends BaseWxPayRequest {
|
||||||
|
private static final long serialVersionUID = -2035425086824987567L;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected String[] getIgnoredParamsForSign() {
|
||||||
|
return new String[]{"sign_type", "sub_appid"};
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* mch_billno.
|
||||||
|
* 商户订单号(每个订单号必须唯一)
|
||||||
|
* 组成:mch_id+yyyymmdd+10位一天内不能重复的数字。 接口根据商户订单号支持重入,如出现超时可再调用。
|
||||||
|
*/
|
||||||
|
@XStreamAlias("mch_billno")
|
||||||
|
private String mchBillNo;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* send_name.
|
||||||
|
* 商户名称
|
||||||
|
* 红包发送者名称
|
||||||
|
*/
|
||||||
|
@XStreamAlias("send_name")
|
||||||
|
private String sendName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* re_openid.
|
||||||
|
* 接受红包的用户 用户在wxappid下的openid
|
||||||
|
*/
|
||||||
|
@XStreamAlias("re_openid")
|
||||||
|
private String reOpenid;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* total_amount.
|
||||||
|
* 红包总额
|
||||||
|
*/
|
||||||
|
@XStreamAlias("total_amount")
|
||||||
|
private Integer totalAmount;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* total_num
|
||||||
|
* 红包发放总人数
|
||||||
|
*/
|
||||||
|
@XStreamAlias("total_num")
|
||||||
|
private Integer totalNum;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* wishing.
|
||||||
|
* 红包祝福语
|
||||||
|
*/
|
||||||
|
@XStreamAlias("wishing")
|
||||||
|
private String wishing;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* act_name.
|
||||||
|
* 活动名称
|
||||||
|
*/
|
||||||
|
@XStreamAlias("act_name")
|
||||||
|
private String actName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* remark.
|
||||||
|
* 备注
|
||||||
|
*/
|
||||||
|
@XStreamAlias("remark")
|
||||||
|
private String remark;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 通知用户形式 .
|
||||||
|
* 通过JSAPI方式领取红包,小程序红包固定传MINI_PROGRAM_JSAPI
|
||||||
|
*/
|
||||||
|
@XStreamAlias("notify_way")
|
||||||
|
private String notifyWay = "MINI_PROGRAM_JSAPI";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <pre>
|
||||||
|
* 发放红包使用场景,红包金额大于200时必传
|
||||||
|
* PRODUCT_1:商品促销
|
||||||
|
* PRODUCT_2:抽奖
|
||||||
|
* PRODUCT_3:虚拟物品兑奖
|
||||||
|
* PRODUCT_4:企业内部福利
|
||||||
|
* PRODUCT_5:渠道分润
|
||||||
|
* PRODUCT_6:保险回馈
|
||||||
|
* PRODUCT_7:彩票派奖
|
||||||
|
* PRODUCT_8:税务刮奖
|
||||||
|
* </pre>
|
||||||
|
*/
|
||||||
|
@XStreamAlias("scene_id")
|
||||||
|
private String sceneId;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void checkConstraints() {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,56 @@
|
|||||||
|
package com.github.binarywang.wxpay.bean.result;
|
||||||
|
|
||||||
|
import com.thoughtworks.xstream.annotations.XStreamAlias;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 发送小程序红包的返回结果
|
||||||
|
*
|
||||||
|
* @author <a href="https://github.com/binarywang">Binary Wang</a>
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@NoArgsConstructor
|
||||||
|
@XStreamAlias("xml")
|
||||||
|
public class WxPaySendMiniProgramRedpackResult extends BaseWxPayResult implements Serializable {
|
||||||
|
/**
|
||||||
|
* 商户订单号.
|
||||||
|
*/
|
||||||
|
@XStreamAlias("mch_billno")
|
||||||
|
private String mchBillNo;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 公众账号appid.
|
||||||
|
*/
|
||||||
|
@XStreamAlias("wxappid")
|
||||||
|
private String wxAppid;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 用户openid.
|
||||||
|
*/
|
||||||
|
@XStreamAlias("re_openid")
|
||||||
|
private String reOpenid;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 付款金额.
|
||||||
|
*/
|
||||||
|
@XStreamAlias("total_amount")
|
||||||
|
private int totalAmount;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 返回jaspi的入参package的值.
|
||||||
|
*/
|
||||||
|
@XStreamAlias("package")
|
||||||
|
private String packageName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 微信单号.
|
||||||
|
*/
|
||||||
|
@XStreamAlias("send_listid")
|
||||||
|
private String sendListId;
|
||||||
|
|
||||||
|
}
|
@ -1,16 +1,7 @@
|
|||||||
package com.github.binarywang.wxpay.service;
|
package com.github.binarywang.wxpay.service;
|
||||||
|
|
||||||
import java.io.File;
|
|
||||||
import java.util.Date;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
import com.github.binarywang.wxpay.bean.WxPayApiData;
|
import com.github.binarywang.wxpay.bean.WxPayApiData;
|
||||||
import com.github.binarywang.wxpay.bean.coupon.WxPayCouponInfoQueryRequest;
|
import com.github.binarywang.wxpay.bean.coupon.*;
|
||||||
import com.github.binarywang.wxpay.bean.coupon.WxPayCouponInfoQueryResult;
|
|
||||||
import com.github.binarywang.wxpay.bean.coupon.WxPayCouponSendRequest;
|
|
||||||
import com.github.binarywang.wxpay.bean.coupon.WxPayCouponSendResult;
|
|
||||||
import com.github.binarywang.wxpay.bean.coupon.WxPayCouponStockQueryRequest;
|
|
||||||
import com.github.binarywang.wxpay.bean.coupon.WxPayCouponStockQueryResult;
|
|
||||||
import com.github.binarywang.wxpay.bean.notify.WxPayOrderNotifyResult;
|
import com.github.binarywang.wxpay.bean.notify.WxPayOrderNotifyResult;
|
||||||
import com.github.binarywang.wxpay.bean.notify.WxPayRefundNotifyResult;
|
import com.github.binarywang.wxpay.bean.notify.WxPayRefundNotifyResult;
|
||||||
import com.github.binarywang.wxpay.bean.notify.WxScanPayNotifyResult;
|
import com.github.binarywang.wxpay.bean.notify.WxScanPayNotifyResult;
|
||||||
@ -19,6 +10,10 @@ import com.github.binarywang.wxpay.bean.result.*;
|
|||||||
import com.github.binarywang.wxpay.config.WxPayConfig;
|
import com.github.binarywang.wxpay.config.WxPayConfig;
|
||||||
import com.github.binarywang.wxpay.exception.WxPayException;
|
import com.github.binarywang.wxpay.exception.WxPayException;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <pre>
|
* <pre>
|
||||||
* 微信支付相关接口.
|
* 微信支付相关接口.
|
||||||
@ -281,6 +276,19 @@ public interface WxPayService {
|
|||||||
*/
|
*/
|
||||||
WxScanPayNotifyResult parseScanPayNotifyResult(String xmlData) throws WxPayException;
|
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
|
||||||
|
*/
|
||||||
|
WxPaySendMiniProgramRedpackResult sendMiniProgramRedpack(WxPaySendMiniProgramRedpackRequest request) throws WxPayException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 发送微信红包给个人用户.
|
* 发送微信红包给个人用户.
|
||||||
* <pre>
|
* <pre>
|
||||||
|
@ -182,7 +182,19 @@ public abstract class BaseWxPayServiceImpl implements WxPayService {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@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 WxPaySendRedpackResult sendRedpack(WxPaySendRedpackRequest request) throws WxPayException {
|
public WxPaySendRedpackResult sendRedpack(WxPaySendRedpackRequest request) throws WxPayException {
|
||||||
request.checkAndSign(this.getConfig());
|
request.checkAndSign(this.getConfig());
|
||||||
|
|
||||||
|
@ -1,43 +1,14 @@
|
|||||||
package com.github.binarywang.wxpay.service.impl;
|
package com.github.binarywang.wxpay.service.impl;
|
||||||
|
|
||||||
import java.nio.file.Files;
|
|
||||||
import java.nio.file.Path;
|
|
||||||
import java.util.Calendar;
|
|
||||||
import java.util.Date;
|
|
||||||
|
|
||||||
import org.slf4j.Logger;
|
|
||||||
import org.slf4j.LoggerFactory;
|
|
||||||
import org.testng.annotations.*;
|
|
||||||
|
|
||||||
import com.github.binarywang.utils.qrcode.QrcodeUtils;
|
import com.github.binarywang.utils.qrcode.QrcodeUtils;
|
||||||
import com.github.binarywang.wxpay.bean.coupon.WxPayCouponInfoQueryRequest;
|
import com.github.binarywang.wxpay.bean.coupon.*;
|
||||||
import com.github.binarywang.wxpay.bean.coupon.WxPayCouponInfoQueryResult;
|
|
||||||
import com.github.binarywang.wxpay.bean.coupon.WxPayCouponSendRequest;
|
|
||||||
import com.github.binarywang.wxpay.bean.coupon.WxPayCouponSendResult;
|
|
||||||
import com.github.binarywang.wxpay.bean.coupon.WxPayCouponStockQueryRequest;
|
|
||||||
import com.github.binarywang.wxpay.bean.coupon.WxPayCouponStockQueryResult;
|
|
||||||
import com.github.binarywang.wxpay.bean.notify.WxPayOrderNotifyResult;
|
import com.github.binarywang.wxpay.bean.notify.WxPayOrderNotifyResult;
|
||||||
import com.github.binarywang.wxpay.bean.notify.WxPayOrderNotifyResultTest;
|
import com.github.binarywang.wxpay.bean.notify.WxPayOrderNotifyResultTest;
|
||||||
import com.github.binarywang.wxpay.bean.order.WxPayAppOrderResult;
|
import com.github.binarywang.wxpay.bean.order.WxPayAppOrderResult;
|
||||||
import com.github.binarywang.wxpay.bean.order.WxPayMpOrderResult;
|
import com.github.binarywang.wxpay.bean.order.WxPayMpOrderResult;
|
||||||
import com.github.binarywang.wxpay.bean.order.WxPayNativeOrderResult;
|
import com.github.binarywang.wxpay.bean.order.WxPayNativeOrderResult;
|
||||||
import com.github.binarywang.wxpay.bean.request.WxPayAuthcode2OpenidRequest;
|
import com.github.binarywang.wxpay.bean.request.*;
|
||||||
import com.github.binarywang.wxpay.bean.request.WxPayMicropayRequest;
|
import com.github.binarywang.wxpay.bean.result.*;
|
||||||
import com.github.binarywang.wxpay.bean.request.WxPayOrderReverseRequest;
|
|
||||||
import com.github.binarywang.wxpay.bean.request.WxPayRefundRequest;
|
|
||||||
import com.github.binarywang.wxpay.bean.request.WxPayReportRequest;
|
|
||||||
import com.github.binarywang.wxpay.bean.request.WxPaySendRedpackRequest;
|
|
||||||
import com.github.binarywang.wxpay.bean.request.WxPayShorturlRequest;
|
|
||||||
import com.github.binarywang.wxpay.bean.request.WxPayUnifiedOrderRequest;
|
|
||||||
import com.github.binarywang.wxpay.bean.result.WxPayBillResult;
|
|
||||||
import com.github.binarywang.wxpay.bean.result.WxPayFundFlowResult;
|
|
||||||
import com.github.binarywang.wxpay.bean.result.WxPayMicropayResult;
|
|
||||||
import com.github.binarywang.wxpay.bean.result.WxPayOrderReverseResult;
|
|
||||||
import com.github.binarywang.wxpay.bean.result.WxPayRedpackQueryResult;
|
|
||||||
import com.github.binarywang.wxpay.bean.result.WxPayRefundQueryResult;
|
|
||||||
import com.github.binarywang.wxpay.bean.result.WxPayRefundResult;
|
|
||||||
import com.github.binarywang.wxpay.bean.result.WxPaySendRedpackResult;
|
|
||||||
import com.github.binarywang.wxpay.bean.result.WxPayUnifiedOrderResult;
|
|
||||||
import com.github.binarywang.wxpay.constant.WxPayConstants.AccountType;
|
import com.github.binarywang.wxpay.constant.WxPayConstants.AccountType;
|
||||||
import com.github.binarywang.wxpay.constant.WxPayConstants.BillType;
|
import com.github.binarywang.wxpay.constant.WxPayConstants.BillType;
|
||||||
import com.github.binarywang.wxpay.constant.WxPayConstants.SignType;
|
import com.github.binarywang.wxpay.constant.WxPayConstants.SignType;
|
||||||
@ -47,6 +18,16 @@ import com.github.binarywang.wxpay.service.WxPayService;
|
|||||||
import com.github.binarywang.wxpay.testbase.ApiTestModule;
|
import com.github.binarywang.wxpay.testbase.ApiTestModule;
|
||||||
import com.github.binarywang.wxpay.testbase.XmlWxPayConfig;
|
import com.github.binarywang.wxpay.testbase.XmlWxPayConfig;
|
||||||
import com.google.inject.Inject;
|
import com.google.inject.Inject;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
import org.testng.annotations.DataProvider;
|
||||||
|
import org.testng.annotations.Guice;
|
||||||
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
|
import java.nio.file.Files;
|
||||||
|
import java.nio.file.Path;
|
||||||
|
import java.util.Calendar;
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
import static com.github.binarywang.wxpay.constant.WxPayConstants.TarType;
|
import static com.github.binarywang.wxpay.constant.WxPayConstants.TarType;
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
@ -461,8 +442,7 @@ public class BaseWxPayServiceImplTest {
|
|||||||
@Test
|
@Test
|
||||||
public void testReverseOrder() throws Exception {
|
public void testReverseOrder() throws Exception {
|
||||||
WxPayOrderReverseResult result = this.payService.reverseOrder(
|
WxPayOrderReverseResult result = this.payService.reverseOrder(
|
||||||
WxPayOrderReverseRequest
|
WxPayOrderReverseRequest.newBuilder()
|
||||||
.newBuilder()
|
|
||||||
.outTradeNo("1111")
|
.outTradeNo("1111")
|
||||||
.build());
|
.build());
|
||||||
assertNotNull(result);
|
assertNotNull(result);
|
||||||
@ -541,8 +521,7 @@ public class BaseWxPayServiceImplTest {
|
|||||||
@Test
|
@Test
|
||||||
public void testQueryCouponStock() throws Exception {
|
public void testQueryCouponStock() throws Exception {
|
||||||
WxPayCouponStockQueryResult result = this.payService.queryCouponStock(
|
WxPayCouponStockQueryResult result = this.payService.queryCouponStock(
|
||||||
WxPayCouponStockQueryRequest
|
WxPayCouponStockQueryRequest.newBuilder()
|
||||||
.newBuilder()
|
|
||||||
.couponStockId("123")
|
.couponStockId("123")
|
||||||
.build());
|
.build());
|
||||||
this.logger.info(result.toString());
|
this.logger.info(result.toString());
|
||||||
@ -556,8 +535,7 @@ public class BaseWxPayServiceImplTest {
|
|||||||
@Test
|
@Test
|
||||||
public void testQueryCouponInfo() throws Exception {
|
public void testQueryCouponInfo() throws Exception {
|
||||||
WxPayCouponInfoQueryResult result = this.payService.queryCouponInfo(
|
WxPayCouponInfoQueryResult result = this.payService.queryCouponInfo(
|
||||||
WxPayCouponInfoQueryRequest
|
WxPayCouponInfoQueryRequest.newBuilder()
|
||||||
.newBuilder()
|
|
||||||
.openid("ojOQA0y9o-Eb6Aep7uVTdbkJqrP4")
|
.openid("ojOQA0y9o-Eb6Aep7uVTdbkJqrP4")
|
||||||
.couponId("11")
|
.couponId("11")
|
||||||
.stockId("1121")
|
.stockId("1121")
|
||||||
@ -632,4 +610,28 @@ public class BaseWxPayServiceImplTest {
|
|||||||
//see test in testUnifiedOrder()
|
//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() {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testTestDownloadRawBill() {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testGetWxPayFaceAuthInfo() {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testFacepay() {
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user