一.首页要开通商家转账到零钱功能,点产品设置,开启验密批量API,设置接口IP,这里的接口ip不是指用户的,而是你本机的 ip或服务器的ip

二.获取微信平台证书,注意微信平台证书和商户证书是有区别的,别弄混淆了

1.根据链接把获取平台证书的代码下载下来
https://github.com/wechatpay-apiv3/CertificateDownloader
2.可以根据github上面教程操作,我这边由于用jar包跑一直报错,所以直接修改源代码run方法,赋值变量



三. pom导入所需要的包

<dependency><groupId>com.github.wechatpay-apiv3</groupId><artifactId>wechatpay-apache-httpclient</artifactId><version>0.4.8</version></dependency>

四.接下来就是核心代码了,注意区分微信平台证书序列号和商户平台证书序列号,微信平台证书序列号是你上面保存文件下划线后面的数字,我这里把证书都放在了resources文件下面

package com.develop.utils;import cn.hutool.json.JSONUtil;
import com.develop.commons.config.WxChatConfig;
import com.wechat.pay.contrib.apache.httpclient.WechatPayHttpClientBuilder;
import com.wechat.pay.contrib.apache.httpclient.util.PemUtil;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.util.EntityUtils;
import javax.crypto.IllegalBlockSizeException;
import java.io.IOException;
import java.io.InputStream;
import java.math.BigDecimal;
import java.security.PrivateKey;
import java.util.*;
import static com.aliyun.oss.common.utils.HttpHeaders.CONTENT_TYPE;
import static com.google.common.net.HttpHeaders.ACCEPT;
import static org.springframework.util.MimeTypeUtils.APPLICATION_JSON;public class testUtils {/*** 微信通讯client** @return CloseableHttpClient*/public CloseableHttpClient getClient() {/**商户私钥文件*/InputStream privateKeyInputStream = this.getClass().getResourceAsStream("/WEB-INF/apiclient_key.pem"); //我这里把证书等文件都放在了resources文件下面/**微信平台公钥文件*/InputStream platformCertInputStream = this.getClass().getResourceAsStream("/WEB-INF/wechatpay.pem");PrivateKey merchantPrivateKey = PemUtil.loadPrivateKey(privateKeyInputStream);WechatPayHttpClientBuilder builder = WechatPayHttpClientBuilder.create().withMerchant(WxChatConfig.getMchIds() //商户号, "*****EA4D372C4271C42E5FC285019A******" //商户证书序列号, merchantPrivateKey).withWechatPay(Arrays.asList(PemUtil.loadCertificate(platformCertInputStream)));CloseableHttpClient httpClient = builder.build();return httpClient;}/*** 发起批量转账API** @throws IllegalBlockSizeException* @throws IOException*/public static void batchPay(BigDecimal amount,String note,String openid) throws Exception{CloseableHttpClient httpClient = new testUtils().getClient();Map<String, Object> map = new HashMap<>();map.put("mchid", WxChatConfig.getMchIds()); //商户号Long batchNo = NumberUtils.createBatchNo();map.put("out_batch_no", "plfk2020042013"); //批次号map.put("batch_remark", "佣金提现"); //批次备注map.put("batch_name", "佣金提现"); //批次名称map.put("total_amount", 30); //金额 以分为单位map.put("total_num", 1);  //转账总笔数List<Map> list = new ArrayList<>();Map<String, Object> subMap = new HashMap<>(4);subMap.put("out_detail_no", "x23zy545Bd5436"); //商家明细单号subMap.put("transfer_amount", 30); //金额 以分为单位subMap.put("transfer_remark", "佣金提现"); //转账备注subMap.put("openid", openid); //openid
//        subMap.put("user_name", RsaCryptoUtil.encryptOAEP("收款用户姓名", x509Certificate));list.add(subMap);map.put("transfer_detail_list", list); //转账明细列表map.put("appid", WxChatConfig.getAppIds()); //appidString body = JSONUtil.toJsonStr(map);System.out.println("请求参数:" + body);HttpPost httpPost = new HttpPost("https://api.mch.weixin.qq.com/v3/transfer/batches");httpPost.addHeader(ACCEPT, APPLICATION_JSON.toString());httpPost.addHeader(CONTENT_TYPE, APPLICATION_JSON.toString());httpPost.addHeader("Wechatpay-Serial", "***FB92373276993B22AC815***F");//微信平台证书序列号httpPost.setEntity(new StringEntity(body, "UTF-8"));CloseableHttpResponse response = httpClient.execute(httpPost);try {String bodyAsString = EntityUtils.toString(response.getEntity());System.out.println("返回参数:" + bodyAsString);} finally {response.close();}}public static void main(String[] args) {try {batchPay(BigDecimal.valueOf(0.3),"备注","openid");} catch (Exception exception) {exception.printStackTrace();}}
}

五.运行main方法,返回下面参数就成功了

返回参数:{"batch_id":"1030001027501526891912022101301451696421","create_time":"2022-10-13T15:42:43+08:00","out_batch_no":"20221013154242073"}

最后:
有什么问题可以欢迎留言私信我

微信支付-商家给小程序用户转账教程(全网最详细JAVA版)相关推荐

  1. 重磅 | 微信应用号,小程序最新开发教程

    微信应用号(小程序,应用号的新称呼)终于来了! 目前还处于内测阶段,微信只邀请了部分企业参与封测.想必大家都关心应用号的最终形态到底是什么样子?怎样将一个服务号改造成为小程序? 我们暂时以一款简单的第 ...

  2. 微信支付 服务商特约商户小程序支付 支付参数的问题

    在小程序开发中,使用特约商户进行支付遇见的几个问题,简单的归纳了一下: 服务器PPID :该参数需传输附属上绑定的微信公众号APPID mch_id:需传输服务商的商户号ID sub_appid:服务 ...

  3. 微信支付实名信息小程序授权接口能力

    官方文档地址:https://developers.weixin.qq.com/community/business/doc/000804439ac77080c8672c77451c0d?client ...

  4. 萤石微信支付对接(小程序版)

    1.萤石支付简介及流程 萤石支付,是对第三方支付平台的二次封装.考虑到的目的可能有:1.合资公司的金钱交易需要走总部财务 2.二次封装对接更加容易,与第三方支付sdk的交互都由萤石平台封装完成了. 1 ...

  5. 新版仿微信支付生活缴费小程序源码+UniAPP内核

    正文: 这是仿微信支付生活缴费微信小程序首页页面,使用 uni-app和Tailwind CSS框架制作,适配了深色模式. 程序: wwlef.lanzouq.com/iWdxI0bkl2hc 图片:

  6. 小程序微信支付c语言,小程序中使用微信支付

    同样的通知可能会多次发送给商户系统.商户系统必须能够正确处理重复的通知.你为什么要把这个多次写入呢? 微信支付为保证回调通知触达有效性,会有保障策略,在第一次通知如果网络链路返回无法连接或者状态不明, ...

  7. uni-app 微信支付 uni.requestPayment小程序支付

    JS代码部分 zhifu(){ //支付方法 //微信支付 // #ifdef MP-WEIXIN uni.showLoading({title: '加载中',}) uni.request({url: ...

  8. 最详细的小程序用户授权教程

    一.获取用户授权设置 开发者可以在小程序启动时,使用 wx.getSetting 获取用户当前的授权状态. // 获取用户信息wx.getSetting({success: res => {co ...

  9. 2021最新微信影视免授权小程序源码+自主搭建配置详细教程

    前言: 影视小程序源码分享 附安装教程,喜欢就下载吧. 不需要授权,源码文件有更相信的教程. 最新版本影视小程序 影视小程序是目前较火的靠谱推广项目,电影小程序源码搭建后好用可长久发展,微信影视小程序 ...

  10. 微信小程序自动推送当天天气情况Java版

    针对网上小程序推送天气消息进行二次优化与细节调整,更快速与方便的进行完成自己功能的开发 注意全文是在别人代码基础之上做的二次优化 教程开始: 1.注册微信测试账号 第二步: 彩虹屁平台注册 拉代码 修 ...

最新文章

  1. 学习iBatis时的一个苦逼经历
  2. 2015/Province_C_C++_C/6/奇妙的数字
  3. 设置图片元素上下垂直居中的7种css样式_赵一鸣博客
  4. 如何在linux中使用u盘,如何在Linux系统下使用U盘
  5. 废弃fastjson!大型项目迁移Gson保姆级实战
  6. pcb设计单点接地示意图_4种PCB设计中的接地方式解析
  7. webpack+ES6+Sass搭建多页面应用
  8. android listview 滑动条显示_ListView详细介绍与使用
  9. 支持多浏览器高拍仪开发控件
  10. 嵌入式技术栈之I2S
  11. 算法大亨Carl的面试简历长啥样?同款模板让你脱胎换骨
  12. 网页设计收藏站 80 个
  13. Oracle创建用户后无法登录,报错ORA-01045: user lacks CREATE SESSION privilege
  14. QChartView绘制可缩放和平移的图表QChart(此例子为折线图)
  15. java io 系列(转载skywang12345)
  16. 什么是pid控制算法_智能车运动控制 ——PID简介
  17. Flash Player 更新后视频卡问题
  18. (已更新)网络祭祀人物小程序模板
  19. 树莓派diy小型计算机,自制树莓派电脑,让树莓派不再神秘
  20. 史上最全面、最详细的Cookie总结

热门文章

  1. 即时通讯,2022即时通讯IM厂商介绍
  2. 移动端 click 300ms 延迟,如何解决
  3. bps、Bps、pps的概念和区别
  4. android开发split的方法在String中的特殊使用
  5. html职业性格测试,MBTI职业性格测试专业版
  6. 9、recoil库的基本使用
  7. 2022年最新上海机动车签字授权人模拟试题及答案
  8. 如何建立个人网站服务器篇
  9. 接呀呀云实时语音SDK总结
  10. 入门图形学:雪地特效(一)