在一定的逻辑下执行发送微信红包给用户,为了加深印象记录一下,友好的方法欢迎提出!
在微信支付-->开发者文档中,能看到 现金红包-->产品说明/操作指导的文档,如下
然后,这里需要注意的地方
在这里有请求的参数,根据这个封装需要的实体类,如下:
/**
* 微信现金红包实体类
* @author apple
*
*/
public class WeixinRedPacket {
private String nonce_str;//随机字符串,不长于32位
private String sign;//签名
private String mch_billno;//商户订单号
private String mch_id;//商户号
private String wxappid;//公众账号appid
private String nick_name;//必填字段
private String send_name;//商户名称
private String re_openid;//用户openid
private String total_amount;//付款金额
private String total_num;//红包发放总人数 必须为1
private String wishing;//红包祝福语
private String client_ip;//Ip地址
private String act_name;//活动名称
private String remark;//备注
private String consume_mch_id;//资金授权商户号 服务商替特约商户发放时使用
public String getNonce_str() {
return nonce_str;
}
public void setNonce_str(String nonce_str) {
this.nonce_str = nonce_str;
}
public String getSign() {
return sign;
}
public void setSign(String sign) {
this.sign = sign;
}
public String getMch_billno() {
return mch_billno;
}
public void setMch_billno(String mch_billno) {
this.mch_billno = mch_billno;
}
public String getMch_id() {
return mch_id;
}
public void setMch_id(String mch_id) {
this.mch_id = mch_id;
}
public String getWxappid() {
return wxappid;
}
public void setWxappid(String wxappid) {
this.wxappid = wxappid;
}
public String getNick_name() {
return nick_name;
}
public void setNick_name(String nick_name) {
this.nick_name = nick_name;
}
public String getSend_name() {
return send_name;
}
public void setSend_name(String send_name) {
this.send_name = send_name;
}
public String getRe_openid() {
return re_openid;
}
public void setRe_openid(String re_openid) {
this.re_openid = re_openid;
}
public String getTotal_amount() {
return total_amount;
}
public void setTotal_amount(String total_amount) {
this.total_amount = total_amount;
}
public String getTotal_num() {
return total_num;
}
public void setTotal_num(String total_num) {
this.total_num = total_num;
}
public String getWishing() {
return wishing;
}
public void setWishing(String wishing) {
this.wishing = wishing;
}
public String getClient_ip() {
return client_ip;
}
public void setClient_ip(String client_ip) {
this.client_ip = client_ip;
}
public String getAct_name() {
return act_name;
}
public void setAct_name(String act_name) {
this.act_name = act_name;
}
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
public String getConsume_mch_id() {
return consume_mch_id;
}
public void setConsume_mch_id(String consume_mch_id) {
this.consume_mch_id = consume_mch_id;
}
}
随后,需要生成32位字符串
import java.net.InetAddress;
/**
* 生成32位字符串
* */
public class UUIDHexGeneratorutil {
private String sep = "";
private static final int IP;
private static short counter = (short) 0;
private static final int JVM = (int) (System.currentTimeMillis() >>> 8);
private static UUIDHexGeneratorutil uuidgen = new UUIDHexGeneratorutil();
static {
int ipadd;
try {
ipadd = toInt(InetAddress.getLocalHost().getAddress());
} catch (Exception e) {
ipadd = 0;
}
IP = ipadd;
}
public static UUIDHexGeneratorutil getInstance() {
return uuidgen;
}
public static int toInt(byte[] bytes) {
int result = 0;
for (int i = 0; i < 4; i++) {
result = (result << 8) - Byte.MIN_VALUE + (int) bytes[i];
}
return result;
}
protected String format(int intval) {
String formatted = Integer.toHexString(intval);
StringBuffer buf = new StringBuffer("00000000");
buf.replace(8 - formatted.length(), 8, formatted);
return buf.toString();
}
protected String format(short shortval) {
String formatted = Integer.toHexString(shortval);
StringBuffer buf = new StringBuffer("0000");
buf.replace(4 - formatted.length(), 4, formatted);
return buf.toString();
}
protected int getJVM() {
return JVM;
}
protected synchronized short getCount() {
i