微信提现(V2版本)
注意事项:
1.v2版本提现需要用到证书(证书的密码就是你的mchid)
2.发送请求的时候需要setSSLSocketFactory
1.组装好提现需要的参数
Map<String,Object> params = new HashMap<String,Object>(10);params.put("mch_appid","申请商户号的appid或商户号绑定的appid");
params.put("mchid","");
params.put("nonce_str","随机生成一个字符串");
params.put("partner_trade_no","提现用到的单号和订单号的道理一样");
params.put("openid","");
params.put("check_name","NO_CHECK");
params.put("amount","单位是分,最少提现一块,当天最多5000");
params.put("desc","备注");
String sign = getSign(params);
params.put("sign",sign );
//得到请求的参数
String xmlStr = XmlUtil.mapToXmlStr(convert, "xml");
sortMap这个方法在支付里有写到感兴趣的就去看一下
//对参数进行加密public String getSign(Map<String, Object> convert) {//转换成key=value&key1=value1String urlMap = WxUtil.sortMap(convert,"你的商户key");//加密return SecureUtil.md5(urlMap).toUpperCase();}
2.发送请求
我使用的是hutool里的HttpRequest 我直接粘源码啦,有懂的小伙伴可以讲一下HttpRequest .setSSLSocketFactory,我也不太懂害怕误导了大家。我保证复制上就能用。
try {String responseXml = HttpRequest.post("微信提现的链接").setSSLSocketFactory(SSLSocketFactoryBuilder.create().setProtocol(SSLSocketFactoryBuilder.TLSv1).setKeyManagers(WxUtil.getKeyManager("你的商户id")).setSecureRandom(new SecureRandom()).build()//上面的组装好的参数).body(xmlStr).execute().body();//返回结果Map<String, Object> responseMap = XmlUtil.xmlToMap(responseXml);if (!WxUtil.isSuccess(response)) {throw new ApiException("提现失败,请稍后重试");}//提现成功--你的逻辑部分return responseMap ;} catch (Exception e) {e.printStackTrace();LOGGER.error("catch到的错误[{}]",e.getMessage());throw new ApiException("提现失败,请稍后重试");
}
WxUtil.getKeyManager();,这里我直接放到resource下了,你也可以指定你的路径,比如:FileInputStream fileInputStream = new FileInputStream(“你的证书路径”);
/**
* certPass:你的商户id
*/
public static KeyManager[] getKeyManager(String certPass) throws Exception {//加载证书ClassPathResource cp = new ClassPathResource("resource下的证书路径");KeyStore clientStore = KeyStore.getInstance("PKCS12");clientStore.load(cp.getInputStream(), certPass.toCharArray());KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());kmf.init(clientStore, certPass.toCharArray());return kmf.getKeyManagers();}
至此已经可以提现啦。测试的话最少提现一块。
微信提现(V2版本)相关推荐
- (微信支付签名失败)微信支付v2版本踩坑-二次签名不同类型签名参数key不同
小伙伴们在做微信支付对接的时候会遇到各种各样的坑,特别是微信支付v2版本,微信支付的二次签名官方文档没有给出明显的签名参数,导致在开发中很容易碰到微信支付的这个坑(微信支付签名失败),app签名key ...
- PHP对微信支付V2版本回调以及订单查询(逻辑重制版)
PS:v2版本支付的回调以及订单的查询都已经写过了,昨天在和别人讨论时,对相关的逻辑做出了较大的修改,回调配合订单查询共同使用,提高安全防护; 小程序端JS代码: getData(){var open ...
- PHP实现微信提现V3版本2022-5更新接口:商家转账到零钱
微信官方又更新了接口... V3版本的微信商家转账到零钱的接口---俗称提现接口 注意事项 一:开通条件:需满足入驻满90天,连续正常交易30天,保持正常健康交易. 二:分为页面发起和api接口操作, ...
- 【微信支付】(亲测可用)对接app微信支付V2版本 后端代码示例
业务场景:基本上做业务的话,也是逃不开对接各种支付接口的,比如数字人民币支付.农行免密支付.支付宝支付.微信支付等等.在着手开发时候,也是遇到不少阻力,微信官方提供的接口文档很散乱,如果之前没接触过, ...
- android v2签名 微信,golang实现微信支付v2版本
一.准备阶段 配置密钥 .获取证书apiclient_key.p12 apiclient_cert.pem apiclient_key.pem 本次示例程序中,使用的是文件 apiclient_cer ...
- 微信退款 v2版本 invalid detail参数格式错误
##invalid detail参数格式错误 <return_code><![CDATA[FAIL]]></return_code> <return_msg& ...
- 微信小程序开发笔记 支付篇③——微信支付JSAPI下单和微信小程序调起支付(V2版本)
文章目录 一.前文 二.流程图 三.SpringBoot接口实现 2.1 微信调起支付所需数据 2.2 下单接口 2.3 支付回调接口 三.微信小程序实现 3.1 JSAP统一下单 3.2 小程序调起 ...
- java微信小程序支付V2版本(亲测有效)
首先微信支付需要以下的字段,关于如何去获取微信支付的字段,网上一大把,注意(像商户号等重要字段不要泄露不要泄露) MCHID(商户号) 就是商户注册之后,微信支付给你的唯一的数字 APPID(小程序的 ...
- 微信支付v3版本npm包
wechatpay-node-v3 # 微信支付v3 支持在ts和js中使用 欢迎大家加入一起完善这个api 前言 微信官方在2020-12-25正式开放了v3版本的接口,相比较旧版本v2有了不少改变 ...
最新文章
- 微服务架构实战项目Serverless的持续交付与架构案例
- Matlab读和写图像需要注意的问题
- [USACO14JAN]记录奥林比克
- 开源python-打包发布
- OpenGL shader interpolation 着色器插值的实例
- 如何定义开发完成?(Definition of Done)
- matlab fminimax 例子,Matlab应用实例(8)—fminimax
- YouTube-DNN优化原理推导
- 7-150 水仙花数 (20 分)
- 健康医疗数据库建设亟需“万象更新”式变革
- LeetCode输入字符串,倒序输出---C语言
- 【Arcpy】Arcpy核心
- Excel在数据分析和日常工作的运用
- python实现 模糊C均值聚类算法(Fuzzy-C-Means)-基于iris数据集
- html中图片椭圆,CSS3技巧之形状(椭圆)
- Android 8.0 recovery 流程分析
- 海淘转运攻略之2017年黑色星期五海淘转运公司对比推荐
- Windows Server 2016 企业CA证书的应用
- diqu地区市的wheel样式
- rabbit安装教程