1. 微信提现到零钱代码,可直接运行,代码如下:
import java.io.File;
import java.io.FileInputStream;
import java.security.KeyStore;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.SortedMap;
import java.util.TreeMap;import javax.net.ssl.SSLContext;import org.apache.http.HttpEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.conn.ssl.SSLContexts;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.junit.Test;import com.github.wxpay.sdk.MD5Util;/*** @ClassName:    [WeiXinCashTest]   * @Description:  [微信提现到零钱]   * @Author:       [songdx]   * @CreateDate:   [2018年11月11日 下午4:32:24]   * @Version:      [v1.0]*/
public class WeiXinCashTest {@Testpublic void OldBook(){//1.0 封装参数String appid = "wx**************";  //微信公众号的appidString mch_id = "***********"; //商户号String nonce_str = "******************"; //生成随机数String partner_trade_no =  "******************"; //生成商户订单号String openid = "**********************"; // 支付给用户openidString check_name = "NO_CHECK"; //是否验证真实姓名呢String re_user_name = "小宋";   //收款用户姓名String amount = "100";              //企业付款金额,单位为分String desc = "测试开发,稍后会还给公司的";   //企业付款操作说明信息。必填。String spbill_create_ip = "127.0.0.1";     ////2.0 生成map集合SortedMap<String, String> packageParams = new TreeMap<String, String>(); packageParams.put("mch_appid", appid);         //微信公众号的appidpackageParams.put("mchid", mch_id);       //商务号packageParams.put("nonce_str",nonce_str);  //随机生成后数字,保证安全性packageParams.put("partner_trade_no",partner_trade_no); //生成商户订单号packageParams.put("openid",openid);            // 支付给用户openidpackageParams.put("check_name",check_name);    //是否验证真实姓名呢packageParams.put("re_user_name",re_user_name);//收款用户姓名packageParams.put("amount",amount);            //企业付款金额,单位为分packageParams.put("desc",desc);                //企业付款操作说明信息。必填。packageParams.put("spbill_create_ip",spbill_create_ip); //调用接口的机器Ip地址//3.0 生成签名String sign  = createSign("UTF-8",packageParams,"************************************");//4.0 封装退款对象packageParams.put("sign", sign);//5.0将当前的map结合转化成xml格式String reuqestXml = getRequestXml(packageParams);//6.0获取需要发送的url地址String wxUrl = "https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers"; //获取退款的api接口try {String weixinPost = doRefund(wxUrl, reuqestXml).toString();//7.0 解析返回的xml数据//得到解析数据后根据返回内容自行解析下即可System.out.println("解析返回的数据:"+weixinPost);} catch (Exception e) {e.printStackTrace();}}/*** @Description: 封装为xml* @param @param parameters* @param @return   * @return String  * @throws* @author songdx* @date 2018年11月11日*/public static String getRequestXml(SortedMap<String,String> parameters){StringBuffer sb = new StringBuffer();sb.append("<xml>");Set es = parameters.entrySet();Iterator it = es.iterator();while(it.hasNext()) {Map.Entry entry = (Map.Entry)it.next();String k = (String)entry.getKey();String v = (String)entry.getValue();if ("attach".equalsIgnoreCase(k)||"body".equalsIgnoreCase(k)||"sign".equalsIgnoreCase(k)) {sb.append("<"+k+">"+"<![CDATA["+v+"]]></"+k+">");}else {sb.append("<"+k+">"+v+"</"+k+">");}}sb.append("</xml>");return sb.toString();}/*** @Description: 发起退款请求* @param @param url* @param @param data* @param @return* @param @throws Exception   * @return String  * @throws* @author songdx* @date 2018年11月11日*/public String doRefund(String url,String data) throws Exception { char[] password = "**********".toCharArray();KeyStore keyStore = KeyStore.getInstance("PKCS12"); FileInputStream instream = new FileInputStream(new File("D://apiclient_cert.p12"));//P12文件目录try { keyStore.load(instream, password);//这里写密码} finally { instream.close(); } SSLContext sslcontext = SSLContexts.custom() .loadKeyMaterial(keyStore, password)//这里也是写密码的 .build(); // Allow TLSv1 protocol only SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory( sslcontext, new String[] { "TLSv1" }, null, SSLConnectionSocketFactory.BROWSER_COMPATIBLE_HOSTNAME_VERIFIER); CloseableHttpClient httpclient = HttpClients.custom() .setSSLSocketFactory(sslsf) .build(); try { HttpPost httpost = new HttpPost(url); // 设置响应头信息 httpost.addHeader("Connection", "keep-alive"); httpost.addHeader("Accept", "*/*"); httpost.addHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8"); httpost.addHeader("Host", "api.mch.weixin.qq.com"); httpost.addHeader("X-Requested-With", "XMLHttpRequest"); httpost.addHeader("Cache-Control", "max-age=0"); httpost.addHeader("User-Agent", "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0) "); httpost.setEntity(new StringEntity(data, "UTF-8")); System.out.println("请求的内容:"+data);CloseableHttpResponse response = httpclient.execute(httpost); try { HttpEntity entity = response.getEntity(); String jsonStr = EntityUtils.toString(response.getEntity(), "UTF-8"); System.out.println("微信返回的内容:"+jsonStr);EntityUtils.consume(entity); return jsonStr; } finally { response.close(); } } finally { httpclient.close(); } }     /*** 微信支付签名算法sign* @param characterEncoding* @param parameters* @return*/@SuppressWarnings("unchecked")public static String createSign(String characterEncoding,SortedMap<String,String> parameters,String key){StringBuffer sb = new StringBuffer();Set es = parameters.entrySet();//所有参与传参的参数按照accsii排序(升序)Iterator it = es.iterator();while(it.hasNext()) {Map.Entry entry = (Map.Entry)it.next();String k = (String)entry.getKey();Object v = entry.getValue();if(null != v && !"".equals(v) && !"sign".equals(k) && !"key".equals(k)) {sb.append(k + "=" + v + "&");}}sb.append("key=" + key);System.out.println("parameters=" + parameters);System.out.println("key=" + key);System.out.println("===========================================");String sign = MD5Util.MD5Encode(sb.toString(), characterEncoding).toUpperCase();System.out.println("================sign:"+sign+"=======================");return sign;}
}
注意事项:1. 在开发微信提现时也遇到很多坑和注意的地方,比如签名问题,NO_AUTH | 产品权限验证问题2. 开通条件:入驻满90天,截止今日往回推30天连续不间断保持有交易(每天可交易一分钱)3. 登录微信支付平台,地址:https://pay.weixin.qq.com/index.php4. 开通地址需前往【商户平台】->【产品中心】申请开通5. 签名错误格式和顺序问题,参照上面签名代码即可(加密形式需要注意下或采用默认)6. 提现会从“运营账户”扣款,操作时需要保证账户余额有钱,否则提示余额不足情况

【微信】微信提现到零钱相关推荐

  1. 《微信》微信商户提现到零钱

    首先下载证书,证书下载在商户号平台下载 微信提现的请求地址:WX_WITHDRAW_QPAY_URL = "https://api.mch.weixin.qq.com/mmpaymkttra ...

  2. 微信小程序开发,微信小程序轻松实现微信支付及微信提现到零钱功能

    最近做了一个小程序用到了微信支付及零钱提现功能. 准备工作,开发之前,我们需要有下面这些东西: appId 密钥(小程序配置界面) 商户号 api密钥(商家后台自己设置) 1,小程序代码实现 < ...

  3. 微信企业付款到零钱(微信提现)

    由于项目中要用到微信提现,参考网上代码和官方文档写了提现的工具类 用到的相关类库 dom4j commons-lang3 httpclient-4.4.1 具体相关流程可以看微信企业付款到零钱的开发文 ...

  4. 微信帐号被封零钱怎么办?微信针对封停帐号的零钱提取出了一个流程

    之前ytkah和大家讨论了微信解除限制的6个方法,但如果继续"作恶"的话,微信账号就会被封停,那零钱怎么办呢?微信针对封停帐号的零钱提取出了一个流程,以下是官方回复: 目前针对封停 ...

  5. 微信零钱数据在服务器,关于微信企业付款到零钱X509Certificate2读取证书信息,发布到服务器访问不到的解决方案...

    前言: 最近做了一个通过调用微信企业付款到用户零钱的功能,真的挺奇怪的,在我本地调试的时候都没有问题,但是当我发布到服务上的时候却一直无法读取到我的证书信息.读取的代码如下,使用的是微信官方文档提供的 ...

  6. 支付宝,微信的提现即时到账。【转账给支付宝用户服务】【企业付款】

    支付宝,微信的提现即时到账.[转账给支付宝用户服务][企业付款] 1.应用场景 当存在用户发起提现无需审核时 ,当用户作为服务提供者向企业提供服务时,等等场景. 企业需要向用户付款,缺又不想走繁琐的审 ...

  7. JAVA微信企业付款到零钱(十分钟搞定),附完整DEMO下载

    最近帮朋友做了一个简单的微分销系统,实现从企业付款到零钱分润的功能,简单记录一下微信提现功能开发的流程, 主要就是按规则封装好请求参数调用微信接口,涉及一些签名校验: A.接口流程 获取用户OPENI ...

  8. 电信充q币短信怎么发_移动、联通、电信话费快来领!微信小额提现免手续费方法!刚需羊毛!...

    跟着源妹薅红包羊毛官方活动,正规靠谱 一 源妹实测:现在,中国移动.联通.电信的用户都可以用你以往充值话费获得的积分来兑换相应的话费了,大部分地区都可以,方法如下: 移动用户:编辑短信HF发送到106 ...

  9. 【微信支付付款至零钱】

    微信支付付款至零钱--如何生成正确的签名sign 欢迎观看--xpx分享 注意以下几点 第一点:整理好 请求参数格式 第二点:对参数按照key=value的格式,并按照参数名ASCII字典序排序生成字 ...

最新文章

  1. python flask 部署_如何进行Python Flask项目的部署?
  2. 欢迎使用CSDN-markdown编辑器(此为使用指南,自己还不熟练有些功能的使用)
  3. Oracle - Log buffer 的相关设置
  4. 2014-05-08 总结(补充)
  5. python逻辑量有什么_Python中的逻辑运算符有什么?
  6. 鸡肉和鸡蛋–测试前解决Spring属性
  7. C++ 对引用的理解4
  8. java的equals方法_Java Date equals()方法与示例
  9. (二)马尔可夫决策过程
  10. pulse 去马赛克软件_最新黑科技...马赛克也能去了!!
  11. 未能初始化social club错误代码0_智能电表错误代码大全 报警灯常亮原因
  12. flutter版本的玩Android客户端
  13. 现在动手,建立你的灾备系统
  14. sql语句中表格缩写命名_数据库表字段命名规范
  15. STM32F103对SD卡数的读写
  16. 搜索留痕技术工具-免费搜索留痕外链工具发布
  17. 【渝粤教育】电大中专常见病药物治疗 (2)_1作业 题库
  18. wps在Linux上使用命令打开文档的方法
  19. Matlab模拟傅里叶变换
  20. 脉冲宽度调制(SPWM)Simulink仿真教程

热门文章

  1. 阿里云云盾态势感知平台被工信部认定为2018大数据产业发展试点示范项目
  2. 网表文件的生成和使用
  3. 框架标签frame以及frameset
  4. 压电陶瓷超声波换能器设计
  5. ZJNU1170 整除的尾数——初级
  6. 德福莱(线边仓、2号机台、20号机台)
  7. 7.2sinx的近似计算
  8. 一分钟了解微信公众号服务器配置自动回复
  9. 【蓝桥杯】DS18B20基本应用
  10. 云媒易:抖音短视频推广小技巧汇总