/**
* 微信提现(企业付款)
*/
@RequestMapping(value = "/weixinWithdraw", method = RequestMethod.POST)
@ResponseBody
public Object weixinWithdraw(String openId,Double cashMoney, HttpServletRequest request, HttpServletResponse response) throws Exception {
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
// 参数组
String appid = WeiXinPayConfig.appid;
String mch_id = WeiXinPayConfig.mch_id;
String nonce_str = WXPayUtil.generateNonceStr();
String spbill_create_ip = WeiXinPayConfig.spbilCreateIp;
//是否校验用户姓名 NO_CHECK:不校验真实姓名 FORCE_CHECK:强校验真实姓名
String checkName = "NO_CHECK";
String partner_trade_no = cn.stylefeng.guns.core.util.StringUtils.getId();
//描述
String desc = "提现" + cashMoney + "元";
System.err.println(desc);
// 参数:开始生成第一次签名
SortedMap<Object, Object> parameters = new TreeMap<Object, Object>();
parameters.put("mch_appid", appid);
parameters.put("mchid", mch_id);
parameters.put("partner_trade_no", partner_trade_no);
parameters.put("nonce_str", nonce_str);
parameters.put("openid", openId);
parameters.put("check_name", checkName);
parameters.put("amount", cashMoney);
parameters.put("spbill_create_ip", spbill_create_ip);
parameters.put("desc", desc);
//获取sign
String sign = PayCommonUtil.createSign("UTF-8", parameters, paternerKey);//最后这个是自己在微信商户设置的32位密钥
parameters.put("sign", sign);
//转成XML
String requestXML = PayCommonUtil.getRequestXml(parameters);
try {
HttpPost httpPost=new HttpPost("https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers");
// 得指明使用UTF-8编码,否则到API服务器XML的中文不能被成功识别
httpPost.addHeader("Content-Type", "text/xml");
StringEntity stringEntity = new StringEntity(requestXML, "UTF-8");
httpPost.setEntity(stringEntity);
//加载含有证书的http请求
HttpResponse response1 = initCert(request).execute(httpPost);
HttpEntity entity = response1.getEntity();
//得到返回结果的XML
String notityXml = EntityUtils.toString(entity, "UTF-8");
System.err.println("resXml-----" + notityXml);
String resXml = "";
Map transferMap = XMLUtil.doXMLParse(notityXml);
System.out.println(transferMap);
if (transferMap.size() > 0) {
if (transferMap.get("result_code").equals("SUCCESS") && transferMap.get("return_code").equals("SUCCESS")) {
//成功需要进行的逻辑操作,
}else {
System.out.println("失败");
return new ErrorResponseData(transferMap.get("result_msg").toString());
}
}
}
System.out.println("成功");
} catch (Exception e) {
e.getMessage();
}
return new SuccessResponseData("1");
}