mirror of
https://gitee.com/binary/weixin-java-tools.git
synced 2025-05-02 20:02:37 +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;
|
||||
|
||||
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.coupon.WxPayCouponInfoQueryRequest;
|
||||
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.coupon.*;
|
||||
import com.github.binarywang.wxpay.bean.notify.WxPayOrderNotifyResult;
|
||||
import com.github.binarywang.wxpay.bean.notify.WxPayRefundNotifyResult;
|
||||
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.exception.WxPayException;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.Date;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* <pre>
|
||||
* 微信支付相关接口.
|
||||
@ -281,6 +276,19 @@ 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
|
||||
*/
|
||||
WxPaySendMiniProgramRedpackResult sendMiniProgramRedpack(WxPaySendMiniProgramRedpackRequest request) throws WxPayException;
|
||||
|
||||
/**
|
||||
* 发送微信红包给个人用户.
|
||||
* <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 {
|
||||
request.checkAndSign(this.getConfig());
|
||||
|
||||
|
@ -1,43 +1,14 @@
|
||||
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.wxpay.bean.coupon.WxPayCouponInfoQueryRequest;
|
||||
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.coupon.*;
|
||||
import com.github.binarywang.wxpay.bean.notify.WxPayOrderNotifyResult;
|
||||
import com.github.binarywang.wxpay.bean.notify.WxPayOrderNotifyResultTest;
|
||||
import com.github.binarywang.wxpay.bean.order.WxPayAppOrderResult;
|
||||
import com.github.binarywang.wxpay.bean.order.WxPayMpOrderResult;
|
||||
import com.github.binarywang.wxpay.bean.order.WxPayNativeOrderResult;
|
||||
import com.github.binarywang.wxpay.bean.request.WxPayAuthcode2OpenidRequest;
|
||||
import com.github.binarywang.wxpay.bean.request.WxPayMicropayRequest;
|
||||
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.bean.request.*;
|
||||
import com.github.binarywang.wxpay.bean.result.*;
|
||||
import com.github.binarywang.wxpay.constant.WxPayConstants.AccountType;
|
||||
import com.github.binarywang.wxpay.constant.WxPayConstants.BillType;
|
||||
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.XmlWxPayConfig;
|
||||
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 org.assertj.core.api.Assertions.assertThat;
|
||||
@ -461,8 +442,7 @@ public class BaseWxPayServiceImplTest {
|
||||
@Test
|
||||
public void testReverseOrder() throws Exception {
|
||||
WxPayOrderReverseResult result = this.payService.reverseOrder(
|
||||
WxPayOrderReverseRequest
|
||||
.newBuilder()
|
||||
WxPayOrderReverseRequest.newBuilder()
|
||||
.outTradeNo("1111")
|
||||
.build());
|
||||
assertNotNull(result);
|
||||
@ -541,8 +521,7 @@ public class BaseWxPayServiceImplTest {
|
||||
@Test
|
||||
public void testQueryCouponStock() throws Exception {
|
||||
WxPayCouponStockQueryResult result = this.payService.queryCouponStock(
|
||||
WxPayCouponStockQueryRequest
|
||||
.newBuilder()
|
||||
WxPayCouponStockQueryRequest.newBuilder()
|
||||
.couponStockId("123")
|
||||
.build());
|
||||
this.logger.info(result.toString());
|
||||
@ -556,8 +535,7 @@ public class BaseWxPayServiceImplTest {
|
||||
@Test
|
||||
public void testQueryCouponInfo() throws Exception {
|
||||
WxPayCouponInfoQueryResult result = this.payService.queryCouponInfo(
|
||||
WxPayCouponInfoQueryRequest
|
||||
.newBuilder()
|
||||
WxPayCouponInfoQueryRequest.newBuilder()
|
||||
.openid("ojOQA0y9o-Eb6Aep7uVTdbkJqrP4")
|
||||
.couponId("11")
|
||||
.stockId("1121")
|
||||
@ -632,4 +610,28 @@ 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() {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testTestDownloadRawBill() {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetWxPayFaceAuthInfo() {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testFacepay() {
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user