package org.yeshi.utils.wx;
|
|
import java.io.InputStream;
|
import java.math.BigDecimal;
|
import java.util.HashMap;
|
import java.util.Map;
|
|
import org.yeshi.utils.HttpUtil;
|
import org.yeshi.utils.StringUtil;
|
import org.yeshi.utils.entity.wx.RedPackParams;
|
|
/**
|
* 微信支付帮助类
|
*
|
* @author Administrator
|
*
|
*/
|
public class WXPayUtil {
|
|
public static String payToOpenId(String appId, String openId, String mchId, String key, String pwd,
|
InputStream cert, String orderNo, BigDecimal money, String desc, String ip) {
|
Map<String, String> map = new HashMap<>();
|
map.put("mch_appid", appId);
|
map.put("mchid", mchId);
|
map.put("nonce_str", StringUtil.getRandomCode(32));
|
map.put("partner_trade_no", orderNo);
|
map.put("openid", openId);
|
map.put("check_name", "NO_CHECK");
|
map.put("amount", money.multiply(new BigDecimal(100)).intValue() + "");
|
map.put("desc", desc);
|
map.put("spbill_create_ip", ip);
|
map.put("sign", WXUtil.getSignMD5(map, key));
|
String entity = WXUtil.loadWXMessage(map);
|
try {
|
String result = HttpUtil.httpsPost("https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers",
|
entity, pwd, cert);
|
System.out.println(result);
|
return result;
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
return null;
|
}
|
|
|
/**
|
* 发放微信红包
|
* @param params
|
* @param pwd
|
* @param cert
|
* @return
|
*/
|
public static String redPackToOpenId(RedPackParams params, String pwd, InputStream cert) {
|
// 转化成分
|
BigDecimal money = params.getMoney();
|
money = money.multiply(new BigDecimal(100)).setScale(0, BigDecimal.ROUND_DOWN);
|
|
Map<String, String> map = new HashMap<>();
|
map.put("nonce_str", StringUtil.getRandomCode(32));
|
map.put("mch_billno", params.getBillno());
|
map.put("mch_id", params.getMchId());
|
map.put("wxappid", params.getWxappId());
|
map.put("send_name", params.getSendName());
|
map.put("re_openid", params.getOpenid());
|
map.put("total_amount", money.toString());
|
map.put("total_num", params.getTotalNum()+ "");
|
map.put("wishing", params.getWishing());
|
map.put("client_ip", params.getClientIp());
|
map.put("act_name", params.getActName());
|
map.put("remark", params.getRemark());
|
|
if (!StringUtil.isNullOrEmpty(params.getSceneId()))
|
map.put("scene_id", params.getSceneId());
|
|
if (!StringUtil.isNullOrEmpty(params.getRiskInfo()))
|
map.put("risk_info", params.getRiskInfo());
|
|
map.put("sign", WXUtil.getSignMD5(map, params.getKey()));
|
String entity = WXUtil.loadWXMessage(map);
|
try {
|
String result = HttpUtil.httpsPost("https://api.mch.weixin.qq.com/mmpaymkttransfers/sendredpack",
|
entity, pwd, cert);
|
return result;
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
return null;
|
}
|
|
|
/**
|
* 查询红包领取记录
|
* @param billno 商户订单号
|
* @param mchId 商户号
|
* @param key
|
* @param appId Appid
|
* @param pwd
|
* @param cert
|
* @return
|
*/
|
public static String getRedPackRecord(String billno, String mchId, String appId, String key,
|
String pwd, InputStream cert) {
|
Map<String, String> map = new HashMap<>();
|
map.put("mch_billno", billno);
|
map.put("mch_id", mchId);
|
map.put("wxappid", appId);
|
map.put("bill_type", "MCHT");
|
map.put("nonce_str", StringUtil.getRandomCode(32));
|
map.put("sign", WXUtil.getSignMD5(map, key));
|
String entity = WXUtil.loadWXMessage(map);
|
try {
|
String result = HttpUtil.httpsPost("https://api.mch.weixin.qq.com/mmpaymkttransfers/gethbinfo",
|
entity, pwd, cert);
|
return result;
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
return null;
|
}
|
}
|