微信企业付款到零钱(Java版)
订阅专栏
1.开通条件。
商户注册超过90天且,连续30天有交易,可以每天支付1元来刷,目前测试可行。随后在微信商户平台 - 产品管理自动开启,然后需要申请。
疑问:
话说是要有公众号appid才行,但是听说移动应用的appid也可以。
补充:以下均已测试。
小程序appid与对应的openid也可以,如果非同主体,可以尝试mch_id与appid绑定;
移动应用appid与对应的openid也可以,如果非同主体,可以尝试mch_id与appid绑定;
Attention:如果主体里面有括号,注意英文括号和中文括号区别;
2.此类接口使用场景。
无论是微信还是支付宝,现金红包,单笔转账,企业转账等资金支出类接口都可以用作,活动营销、招新、邀请好友发送奖励、企业内部报销、合伙人团长提现等场景。
注意点:
a.微信商户账号需要有余额;
b.根据实际业务,比如发红包,需要做并发和同步锁处理,同时建议在商户平台开启防盗刷处理;
c.调用三方接口,看好官方文档,参数获取的对,传递的对,工具类找的好,基本就ok了;
d.不支持给非实名用户付款,如果报错,请处理,并且展示给前端可理解字段;

3.必须材料准备。如果已经获取,请跳过。
像这种资金支出类的API接口,都是要请求证书的,而且要apikey,apiv3key。获取的使用最好使用IE兼容模式。
API密钥、APIV3密钥获取:微信商户平台 - 账户中心 - API安全,(这里我已经设置了,就不重新设置了,建议用UUID生成)

同时在API安全中,可以设置企业付款API 调用的IP和每日每用户转账次数

API证书获取:同样也在API安全里,申请证书。
简述:微信商户 - 账户中心 - API安全 - API证书 - 点击申请 - 下载证书工具 - 下一步一下一步静默安装 - 填写商户信息 - 复制黏贴到微信商户 - OK
本机安装位置:C:\Data\WXCertUtil\WXCertUtil
详解:
第一步,微信商户 - API证书点击申请


第二步,弹出提示需要先下载 证书工具,直接下载,然后双击安装,下一步,下一步即可。此处省略安装步骤。记得自己安装的位置即可。

第三步,打开安装好的工具,选择证书生成后的位置,默认即可,一般是同目录下的cret文件夹。然后点击申请证书。

第四步,填写商户信息,微信商户平台上可以获取(就是第一步中弹出那个提示框里面有,复制到这里即可,严格一点哦一个空格都没不能错),然后点击下一步。

第五步,将生成的证书串,复制黏贴到商户平台,如下图的证书串。然后再将微信商户平台的证书串复制到工具里面,完成即可。




最后,在微信商户平台 - API证书里面查看证书可以获取证书序列号和证书有效期,同时后续的更换证书也是在这里。


4.企业付款。(需要证书)
请求地址	https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers
请求方式	POST
需要证书	https://pay.weixin.qq.com/wiki/doc/api/tools/mch_pay.php?chapter=4_3
请求参数:
字段名	变量名	必填	示例值	类型	描述
商户账号appid	mch_appid	是	wx8888888888888888	String(128)	申请商户号的appid或商户号绑定的appid
商户号	mchid	是	1900000109	String(32)	微信支付分配的商户号
设备号	device_info	否	013467007045764	String(32)	微信支付分配的终端设备号
随机字符串	nonce_str	是	5K8264ILTKCH16CQ2502SI8ZNMTM67VS	String(32)	随机字符串,不长于32位
签名	sign	是	C380BEC2BFD727A4B6845133519F3AD6	String(32)	签名,详见签名算法
商户订单号	partner_trade_no	是	10000098201411111234567890	String(32)	商户订单号,需保持唯一性
(只能是字母或者数字,不能包含有其他字符)
用户openid	openid	是	oxTWIuGaIt6gTKsQRLau2M0yL16E	String(64)	商户appid下,某用户的openid
校验用户姓名选项	check_name	是	FORCE_CHECK	String(16)	NO_CHECK:不校验真实姓名
FORCE_CHECK:强校验真实姓名
收款用户姓名	re_user_name	否	王小王	String(64)	收款用户真实姓名。
如果check_name设置为FORCE_CHECK,则必填用户真实姓名
金额	amount	是	10099	int	企业付款金额,单位为分
企业付款备注	desc	是	理赔	String(100)	企业付款备注,必填。注意:备注中的敏感词会被转成字符*
Ip地址	spbill_create_ip	是	192.168.0.1	String(32)	该IP同在商户平台设置的IP白名单中的IP没有关联,该IP可传用户端或者服务端的IP。
返回示例:
{
	"mchid": "154547511",
	"mch_appid": "wxdfc5c46e8cee3a",
	"err_code": "AMOUNT_LIMIT",
	"return_msg": "支付失败",
	"result_code": "FAIL",
	"err_code_des": "付款金额超出限制。低于最小金额1.00元或累计超过500.00元。",
	"return_code": "SUCCESS"
}
成功示例:
{
	"nonce_str": "742ebe1739b0403cb81270aac28c1fef",
	"mchid": "5047515471",
	"partner_trade_no": "1545047571201912161339371639",
	"payment_time": "2019-12-16 13:39:46",
	"mch_appid": "wxdfc5c46e8cee32ca",
	"payment_no": "10101066994831912160041922151260",
	"return_msg": "",
	"result_code": "SUCCESS",
	"return_code": "SUCCESS"
}
成功截图:

示例代码:
public static void transfers() {
		Map<String, String> resutlMap = null;
		try {
			//TODO 1.转账前验证
			
			//TODO 2.转账
			WXPayConfig wxPayConfig = WXPayConfigImpl.getInstance();
			WXPay wxpay = new WXPay(wxPayConfig);
			Map<String, String> reqData = new HashMap<String, String>();//只传递了必传字段,其他字段看文档
			//mch_appid mchid nonce_str sign会自动装配
			
			reqData.put("partner_trade_no", WXPayUtil.getPayNo());//商户订单号,是
			reqData.put("openid", "oio1b1JeHrOaD785ZkK21x7dolvw");//用户oio1b1JeHrOaD785ZkK21x7dolvw
			reqData.put("check_name", "NO_CHECK");//不校验真实姓名NO_CHECK,FORCE_CHECK:强校验真实姓名
			//reqData.put("re_user_name", "PGZ");//强制校验,此项必填
			reqData.put("amount", "30");//企业付款金额,单位分
			reqData.put("desc", "活动奖励");//企业付款备注
			reqData.put("spbill_create_ip","127.0.0.1");//AddressUtils.getIpAddr(request)
			resutlMap = wxpay.transfers(reqData);
			LogUtil.log("企业付款返回结果:" + JSON.toJSONString(resutlMap));
			
			//TODO 3.操作成功,保存记录,失败,提示
			String returnCode = resutlMap.get("return_code");
			String resultCode = resutlMap.get("result_code");
			if (WXPayConstants.SUCCESS.equals(returnCode) && WXPayConstants.SUCCESS.equals(resultCode)) {
				
			}else {
				
			}
		} catch (Exception e) {
			LogUtil.exception(e);
		}
5.查询企业付款到零钱(需要证书)
注意:接口文档中参数名称,大小写,比如mch_id,mchapp_id,appid,app_id,timestamp。
还有注意,请求的参数,里面到底有没有sign_type,否则可能签名sign参数错误。
请求成功返回示例:
{
	"reason": "",
	"openid": "oNicp49yn6IS4g7_OymNyWKuJ9O0",
	"payment_time": "2019-12-18 13:40:21",
	"payment_amount": "100",
	"mch_id": "1545047571",
	"detail_id": "10101066994831912180040711223260",
	"transfer_name": "",
	"transfer_time": "2019-12-18 13:40:20",
	"partner_trade_no": "201912182735191955079946240",
	"appid": "wxdfc5c46e8cee32ca",
	"result_code": "SUCCESS",
	"return_code": "SUCCESS",
	"status": "SUCCESS",
	"desc": "活动奖励"
}
额外:
1.微信企业付款到零钱官方接口文档:https://pay.weixin.qq.com/wiki/doc/api/tools/mch_pay.php?chapter=14_1
2.微信公众号网页授权获取openID:
https://developers.weixin.qq.com/doc/offiaccount/User_Management/Get_users_basic_information_UnionID.html#UinonId
https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_webpage_authorization.html
3.签名算法以及签名校验(最好用Chrome):https://pay.weixin.qq.com/wiki/doc/api/tools/mch_pay.php?chapter=4_3
4.移动应用快速获取openID,支持支付分、跳转小程序,示例apk源码下载(只需更改里面的appid与appsecret):
https://gitee.com/JaneYork/WeChatOpenSdkSample
微信企业付款到零钱(Java版)的更多相关文章
- JAVA微信企业付款到零钱(十分钟搞定),附完整DEMO下载
		
最近帮朋友做了一个简单的微分销系统,实现从企业付款到零钱分润的功能,简单记录一下微信企业付款到零钱的开发过程, 主要就是按规则封装好请求参数调用微信接口,涉及一些签名校验: A.接口流程 1. 获取用 ...
 - 关于微信企业付款到零钱X509Certificate2读取证书信息,发布到服务器访问不到的解决方案
		
前言: 最近做了一个通过调用微信企业付款到用户零钱的功能,真的挺奇怪的,在我本地调试的时候都没有问题,但是当我发布到服务上的时候却一直无法读取到我的证书信息.读取的代码如下,使用的是微信官方文档提供 ...
 - 解决问题:CA_ERROR证书出错,请登录微信支付商户平台下载证书-企业付款到零钱接口(原创)
		
这几天用到了微信企业付款到零钱这个接口,结果出现了报错:CA_ERROR, 该接口的API说明和报错提示说明:https://pay.weixin.qq.com/wiki/doc/api/tools/ ...
 - PHP微信商户支付 - 企业付款到零钱功能(即提现)技术资料汇总
		
PHP实现微信开发中提现功能(企业付款到用户零钱) 一.实现该功能目的 这几天在小程序里要实现用户从系统中提现到零钱的功能,查了一下文档可以使用 企业付款到用户零钱 来实现: 官方文档:https:/ ...
 - PHP实现微信商户支付企业付款到零钱功能代码实例
		
本文为大家分享了PHP实现微信商户支付企业付款到零钱的具体代码,供大家参考,具体内容如下 微信支付开发文档 一.开通条件 企业付款为企业提供付款至用户零钱的能力,支持通过API接口付款,或通过微信支付 ...
 - PHP实现微信企业付款到个人零钱步骤
		
微信支付企业付款到零钱功能应用广泛,比如微信红包奖励,业务结算等.通过企业向个人付款,付款资金将直接进入用户微信零钱. 一 开通条件  付款资金 企业付款到零钱资金使用商户号余额资金. 根据商户号的 ...
 - PHP实现微信提现(企业付款到零钱)
		
怎么开通企业付款到零钱? 有的商户号的产品中心是没有这个功能的,不过,该功能的pid(product id)是5,只要随便进去某一个产品,在地址栏把pid改为5. 即可进入该功能页面,进行开通,不过要 ...
 - PHP微信商户支付企业付款到零钱功能
		
一 开通条件,就是首先要在微信平台设置好. 以下微信文档里有的,我这里大概掠几项比较重要的. 付款资金 企业付款到零钱资金使用商户号余额资金. 根据商户号的账户开通情况,实际出款账户有做区别: ◆ 默 ...
 - 强开企业付款到零钱与现金红包,无需等待90/30天,2-12H即可强开通!
		
一.微信官方给出的,企业付款到零钱|现金红包开通的说明 针对入账方式为即时入账至商户号,结算周期为T+1的商户,需满足三个条件:1)入驻满90天,2)连续正常交易30天,3)保持正常健康交易.其余结算 ...
 - 第九篇 :微信公众平台开发实战Java版之如何实现自定义分享内容
		
第一部分:微信JS-SDK介绍 微信JS-SDK是微信公众平台面向网页开发者提供的基于微信内的网页开发工具包. 通过使用微信JS-SDK,网页开发者可借助微信高效地使用拍照.选图.语音.位置等手机系统 ...
 
随机推荐
- 从Delphi到Lazarus——Delphi转换器
			
0.前言 在Lazarus中使用Delphi编写的文件是一件很简单的事情,这是因为Lazarus可以直接打开Delphi的任何文件,甚至有些文件可以不做任何修改就可以直接使用到你的Lazarus程序中 ...
 - 使用Flex布局的几个小技巧
			
前情 Flex 是 Flexible Box 的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性,任何一个容器都可以指定为 Flex 布局,如果说目前我开发中离不开的布局方式 ...
 - WSLg 中文输入法 fcitx5
			
随着 Win11 22H2 和 WSLg 的推出,很多开启输入法的教程都过时了.记录一下最新实践: WSL 安装 Ubuntu 后,安装中文语言 sudo /usr/bin/gnome-languag ...
 - 对DenseTensor进行Transpose
			
ML.NET 是微软推出的为. NET 平台设计的深度学习库,通过这个东西(ModelBuilder)可以自己构建模型,并用于后来的推理与数据处理.虽然设计是很好的,但是由于现在的 AI 发展基本上都 ...
 - 【MyBatis】学习笔记04:配置文件模板
			
[Mybatis]学习笔记01:连接数据库,实现增删改 [Mybatis]学习笔记02:实现简单的查 [MyBatis]学习笔记03:配置文件进一步解读(非常重要) 目录 IDEA配置模板的地方 核心 ...
 - Mapstruct使用时报Unknown property xxx in result type xxx. Did you mean null
			
0.背景 使用mapstruct时出现: Unknown property "xxx" in result type xxx. Did you mean "null&qu ...
 - 开源即时通讯IM框架 MobileIMSDK v6.5 发布
			
一.更新内容简介 本次更新为次要版本更新,进行了bug修复和优化升级(更新历史详见:码云 Release Notes.Github Release Notes). MobileIMSDK 可能是市面上 ...
 - 2020年了,Android后台保活还有戏吗?看我如何优雅的实现!
			
1.引言 对于移动端IM应用和消息推送应用的开发者来说,Android后台保活这件事是再熟悉不过了. 自从Android P(即Android 8.0)出现以后,Android已经从系统层面将后台保活 ...
 - 推荐几个不错的 Linux 服务器管理工具
			
前言 选择一款好的 Linux 服务器管理工具能够极大地提高运维效率,保障业务连续性.今天大姚给大家分享3款不错的 Linux 服务器管理工具,希望可以帮助到有需要的同学. 1Panel 1Panel ...
 - 利用坦克PWA3快速为应用配置域名:以Gogs为例
			
全文概述 本文介绍了如何利用坦克PWA3平台快速为Gogs应用配置域名的过程.随着互联网技术的发展,自托管Git服务变得越来越受欢迎,其中Gogs凭借其轻量级和易于安装的特点受到众多开发者的青睐.为提 ...