前段时间因公司业务需求,需要开发一个企业微信直接付款到用户微信账户的功能,然后就去微信官方文档看了一下,点击进入微信企业支付官方文档
没什么特别的地方,也算是一个普通的接口,不过除了代码外,需要特别注意的地方就是调用这个接口需要微信商户端的证书,这是微信官方对商户证书描述的文档
需要注意的有三步:
1.对参数进行排序并拼接
2.对拼接出来的字符串进行签名
3.调用接口时带上证书
接下来直接上代码
/**
*所需要传入的参数就是要付款的金额
*/
public String pay(double amount, HttpServletRequest request) throws Exception {
String ip=request.getRemoteAddr();
int money=new Double(amount*100).intValue();
//生成随机字符串
String nonceStr=RandomGenerator.getRandomString();
Map<String,String> map=new HashMap<>(10);
map.put("amount",String.valueOf(money));
//如果需要校验收款方的姓名则将check_name改为FORCE_CHECK,
//NO_CHECK可以不传入re_user_name,如果是FORCE_CHECK则必须传入
map.put("check_name","NO_CHECK");
map.put("desc","卖家余额提现");
map.put("mch_appid",wechatAccountConfig.getMpAppId());
map.put("mchid",wechatAccountConfig.getMchId());
map.put("nonce_str",nonceStr);
//各位从自己的系统中获取所要付款的用户的openid
map.put("openid",openid);