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

这篇具有很好参考价值的文章主要介绍了微信支付-商家给小程序用户转账教程(全网最详细JAVA版)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一.首页要开通商家转账到零钱功能,点产品设置,开启验密批量API,设置接口IP,这里的接口ip不是指用户的,而是你本机的 ip或服务器的ip微信支付-商家给小程序用户转账教程(全网最详细JAVA版)微信支付-商家给小程序用户转账教程(全网最详细JAVA版)
二.获取微信平台证书,注意微信平台证书和商户证书是有区别的,别弄混淆了

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

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

三. pom导入所需要的包
<dependency>
            <groupId>com.github.wechatpay-apiv3</groupId>
            <artifactId>wechatpay-apache-httpclient</artifactId>
            <version>0.4.8</version>
        </dependency>
四.接下来就是核心代码了,注意区分微信平台证书序列号和商户平台证书序列号,微信平台证书序列号是你上面保存文件下划线后面的数字,我这里把证书都放在了resources文件下面

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

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()); //appid
        String 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版)

最后:
有什么问题可以欢迎留言私信我文章来源地址https://www.toymoban.com/news/detail-508415.html

到了这里,关于微信支付-商家给小程序用户转账教程(全网最详细JAVA版)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 微信h5支付配置,商家存在未配置的参数,请联系商家解决

    对于PC端来说,只需要开通  native支付   就可以了 但手机端h5还需要配置支付域名,并且域名只需要配置一级就可以了,比如:a.test.com, b.test.com, 只需要配置 test.com 就能满足所有的二级域名了, 而不需要配置a.test.com或者b.test.com,否则只会生效第一个 登录商户平台

    2024年02月08日
    浏览(29)
  • 支付宝小程序模板开发,协助商家一键创建小程序

    关于支付宝小程序模板开发,之前写过相关的介绍,详情请看 【支付宝小程序模板开发,一整套流程】这篇文章。 和微信一样,支付宝也有通过接口创建小程序的服务。不过在对接模板开发那时候,还没开放这个接口,是一个邀请制的,没有被官方主动邀请到就没有权限调

    2024年02月13日
    浏览(33)
  • cms小猪o2o企业付款配置中微信提现配置实现商家转账到零钱(企业付款到零钱)解决:“操作失败!产品权限验证失败,请查看您当前是否具有该产品的权限“的错误提示

    在小猪o2o里面什么是商家转账到零钱功能?做什么用呢?平台收款设置里如果设置的收款方是平台而不是商户自己的话(默认),商户平台里收到客户的付款会暂存在平台的微信账户里,商户随时进行余额提现,这个提现的流程就是商家转账到零钱,一般正常设置如下(后面会提到特殊情

    2024年02月08日
    浏览(58)
  • uniapp支付宝小程序开通商家会员卡功能流程和前端代码

    支付宝官方文档 支付宝小程序商家后台要购买商家会员卡插件,是免费的,一般公司有专门的人来管这一块 购买完之后,在uni项目中manitest.json文件中写上插件代码,如果还没买就写的话,运行之后小程序会报错 从后端获取appid和complateId,complateId后端可能会返回多个,但前

    2024年02月12日
    浏览(30)
  • 微信小程序对接微信支付详细教程

    小程序 微信支付官方文档 https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=7_11index=2 https://pay.weixin.qq.com/wiki/doc/apiv3/open/pay/chapter2_8_0.shtml 前提 在进行对接微信支付之前,我们首先需要将以下几点准备好: 申请APPID 申请商户号 小程序开通微信支付,绑定已经申请好的商户号。

    2024年02月09日
    浏览(34)
  • 微信小程序JSAPI下单支付PHP前后端教程

    准备数据: 微信支付API证书,微信支付商户号,小程序appid,微信支付API证书序列号 获取微信支付api证书教程:如何下载微信支付证书(API证书)_荒~的博客-CSDN博客_微信支付证书 获取微信支付API证书序列号:点击管理证书即可看到   第一步:生成预支付交易单 参考文档:

    2024年02月11日
    浏览(39)
  • uniapp微信小程序地图实现绘制polygon(保姆级教程 全网最全!!!)

    用户需求:需要在填写表单信息时,在地图上标绘自己房屋的位置信息。 这个问题处理了很久,在网上也没有找到全面的相关案例,所以我将我的思路分享给大家,希望可以解决大家遇到的问题。如果大家有更好的思路,欢迎评论区留言,大家一起学习,共同进步! 实现最

    2024年02月04日
    浏览(42)
  • 微信小程序数字键盘(仿微信转账键盘)

    微信小程序 input 自带数字输入键盘,不过是直接调用的系统键盘,无法个性化。 代码中使用使用了 Vant Weapp Vant UI小程序版,这里就不介绍相关安装说明了,大家自行安装Vant Weapp。 json 用到的组件 wxml 结构 js 内容 wxss 样式

    2024年02月15日
    浏览(25)
  • 点大商城V2_2.5.0 全开源版 商家自营+多商户入驻 百度+支付宝+QQ+头条+小程序端+unipp开源前端安装测试教程

    播播资源安装点大商城V2_2.5.0 全开源版测试后发现后台总体体验下来比较简洁,营销功能还是挺多该有的都有了,相比上一版优化很多细节。首页和会员中心均支持DIY装修,底部菜单也一样,安装测试中目前未发现BUG,小程序整体体验测试了下也没什么问题,唯一缺点就是用

    2024年02月16日
    浏览(32)
  • 怎么做微信小程序商家店铺_分享商家店铺小程序制作

    1、实体店铺的老板们可以使用营业执照和法人绑定的微信免费开通一个微信商家店铺小程序。 2、使用微信小商店助手开通一个也是免费的小商店助手小程序。 3、购买成熟商城小程序系统,一般年2000元左右。商城小程序系统要比微信自家推出的小程序功能强大很多。 4、找

    2024年02月12日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包