java开发微信公众号企业付款开发

微信企业转账JAVA版(包括:1,转账个人零钱;2,转账个人银行卡;3,微信官网的SDK3.0.9存在的支付问题) 微信企业转账(包括:1,转账个人零钱;2,转账个人银行卡) 前言: 最近公司做产品,有这样几个需求 微信退款 微信企业给用户转账到零钱 通过微信给用户转账到银行卡 支付宝退款 支付宝转账到余额 为满足上述需求做了研究,根据几天的研究个人认为微信开发文档就是一个坑,什么都只描述一部分,让我们开发人员赶到无比的迷茫,当然不包括有此类开发经验的朋友,为了避免以后不再有此类问题出现,我决定做相应的记录... 阅读详情

详情参照微信开发者文档 企业付款文档
https://pay.weixin.qq.com/wiki/doc/api/mch_pay.php?chapter=14_2
微信参数列表
java代码 定义所传递的参数

 @RequestMapping(value = "zhifu", method = RequestMethod.GET)
    public @ResponseBody String getWeixinOpenid(String code,
            HttpServletRequest request)
    {
        // 订单号 自定义 生成32位uuid
        String partner_trade_no = UUIDGenerator.getUUID();
        // 随机数
        String nonce_str = UUIDGenerator.getUUID();
        // 转账金额(分为单位)1-200
        int jine = 100;
        // 企业付款信息
        String desc = "转账";
        // ip地址
        String spbill_create_ip = "xx.xx.xx";
        // re_user_name
        String re_user_name = "xx";

        String check_name = CheckName.NO_CHECK.toString();
        String zfpath = "D:/apiclient_cert.p12";
        try
        {
            // 获取openid
            String openid = WeChatUtil.getByOpenid(appid, secret, code);
            // 付款
            boolean flag = WeChatUtil.enterprisePayment(openid, appid, mchid,
                    nonce_str, partner_trade_no, re_user_name, jine, desc,
                    spbill_create_ip, check_name, key, zfpath);
            // 成功
            if (flag)
            {
                return "SUCCESS";
            }

        }
        catch (Exception e)
        {
            System.err.println(e.getStackTrace());
        }
        return "FAIL";
    }

获取关注本公众号用户唯一标示 获取openid
java代码 获取openid 静态方法

/**
     * 获取openid
     * 
     * @description
     * @param appid
     * @param secret
     * @param code
     * @return
     * @author shaomiao
     */
    public static String getByOpenid(String appid, String secret, String code)
    {
        String url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid="
                + appid + "&secret=" + secret + "&code=" + code
                + "&grant_type=authorization_code";
        String jsonstring = WeChatUtil.getJsonString(url);
        JSONObject json1 = JSONObject.parseObject(jsonstring);
        String openid = json1.get("openid").toString();
        return openid;

    }

企业付款的调用公共方法
java代码
post提交 xml参数
解析回调的xml

 /**
     * 企业付款
     * 
     * @description
     * @param openid
     * @param appid
     * @param mchid 商户id
     * @param nonce_str
     * @param partner_trade_no
     * @param re_user_name
     * @param jine
     * @param desc
     * @param spbill_create_ip
     * @param check_name
     * @return
     * @author Jobs
     * @throws IOException
     * @throws ClientProtocolException
     */
    public static boolean enterprisePayment(String openid, String appid,
            String mchid, String nonce_str, String partner_trade_no,
            String re_user_name, int jine, String desc, String spbill_create_ip,
            String check_name, String key, String zfpath) throws Exception
    {
        boolean getSuccess = true;
        if (null != openid)
        {
            // zf
            Map<String, String> params_map = new LinkedHashMap<String, String>();
            StringBuffer param = new StringBuffer();
            // appid
            param.append("mch_appid=" + appid);
            // 商户id
            param.append("&mchid=" + mchid);
            // 随机字符串
            // param.append("&nonce_str="
            // + ZifwUtil.string2MD5(new Date().getTime() + ""));
            param.append("&nonce_str=" + nonce_str);
            // 订单号自定义
            param.append("&partner_trade_no=" + partner_trade_no);

            param.append("&openid=" + openid);
            // 校验用户姓名选项
            /**
             * NO_CHECK:不校验真实姓名
             * FORCE_CHECK:强校验真实姓名(未实名认证的用户会校验失败,无法转账)
             * OPTION_CHECK:针对已实名认证的用户才校验真实姓名(未实名认证用户不校验,可以转账成功)
             */
            param.append("&check_name=" + check_name);
            // 收款用户姓名
            param.append("&re_user_name=" + re_user_name);
            // 金额
            param.append("&amount=" + jine);
            // 企业付款描述信息
            param.append("&desc=" + desc);
            // Ip地址
            param.append("&spbill_create_ip=" + spbill_create_ip);

            String[] params = param.toString().split("&");
            Arrays.sort(params);
            param = new StringBuffer();
            for (String p : params)
            {
                String[] value = p.split("=");
                params_map.put(value[0], value[1]);
                param.append(value[0] + "=" + value[1] + "&");
            }

            // 签名最后
            String sign = ZifwUtil.string2MD5(param.toString() + "key=" + key)
                    .toUpperCase();
            params_map.put("sign", sign);
            String reqStr = ZifwUtil.toXml(params_map);
            // ZHENGSHU
            CloseableHttpClient httpclient = certificateValidation(zfpath,
                    mchid);

            HttpPost httppost = new HttpPost(
                    "https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers");
            StringEntity myEntity = new StringEntity(reqStr, "UTF-8");
            httppost.setEntity(myEntity);
            System.out.println("executing request" + httppost.getRequestLine());

            CloseableHttpResponse response = httpclient.execute(httppost);
            System.out.println(response.getStatusLine());

            HttpEntity resEntity = response.getEntity();
            InputStreamReader reader = new InputStreamReader(
                    resEntity.getContent(), "UTF-8");
            char[] buff = new char[1024];
            int length = 0;
            StringBuffer strhuxml = new StringBuffer();
            while ((length = reader.read(buff)) != -1)
            {
                strhuxml.append(new String(buff, 0, length));
                System.out.println(new String(buff, 0, length));
            }
            // httpclient.close();
            httpclient.getConnectionManager().shutdown();

            // String ret = ZifwUtil.post(
            // "https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers",
            // reqStr);

            // 解析传过来的xml
            Document document = DocumentHelper.parseText(strhuxml.toString());
            // 得到xml根元素
            Element root = document.getRootElement();
            // 得到根元素的所有子节点
            List<Element> elementList = root.elements();
            String errors = "";
            for (Element e : elementList)
            {

                // result_code业务
                if ("return_code".equals(e.getName())
                        && !"SUCCESS".equals(e.getText()))
                {
                    getSuccess = false;
                }
                if ("result_code".equals(e.getName())
                        && !"SUCCESS".equals(e.getText()))
                {
                    getSuccess = false;
                }
            }

        }
        return getSuccess;
    }

微信签名验证证书
验证证书公共方法

 /**
     * 验证证书公共方法
     * 
     * @description
     * @param zfpath 证书的路径
     * @param mchid 商户id
     * @return
     * @throws Exception
     * @author Jobs
     */
    // shanghuid
    // 验证证书
    @SuppressWarnings("deprecation")
    public static CloseableHttpClient certificateValidation(String zfpath,
            String mchid) throws Exception
    {
        // 指定读取证书格式为PKCS12
        KeyStore keyStore = KeyStore.getInstance("PKCS12");
        // 证书地址
        FileInputStream instream = new FileInputStream(new File(zfpath));
        try
        {
            keyStore.load(instream, mchid.toCharArray());
        }
        finally
        {
            instream.close();
        }

        // Trust own CA and all self-signed certs
        SSLContext sslcontext = SSLContexts.custom()
                .loadKeyMaterial(keyStore, mchid.toCharArray()).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();
        return httpclient;
    }

微信公共方法 字符串转xml

/**
     * 微信支付拼接xml
     * 
     * @param params
     * @return
     */
    public static String toXml(Map<String, String> params)
    {
        String xml = "<xml>";
        for (String key : params.keySet())
        {
            if ("body".equals(key) || "attach".equals(key)
                    || "sign".equals(key))
            {
                xml += "<" + key + "><![CDATA[" + params.get(key) + "]]></"
                        + key + ">";
            }
            else
            {
                xml += "<" + key + ">" + params.get(key) + "</" + key + ">";
            }
        }
        xml += "</xml>";
        return xml;
    }

微信公共方法 字符串MD5
加密
用来加密签名

/***
     * MD5加码 生成32位md5码
     */
    public static String string2MD5(String inStr)
    {
        StringBuffer buf = new StringBuffer();
        try
        {
            MessageDigest md = MessageDigest.getInstance("MD5");
            md.update(inStr.getBytes("utf-8"));
            byte b[] = md.digest();

            int i;

            for (int offset = 0; offset < b.length; offset++)
            {
                i = b[offset];
                if (i < 0)
                    i += 256;
                if (i < 16)
                    buf.append("0");
                buf.append(Integer.toHexString(i));
            }
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
        return buf.toString();
    }
java 微信公众号支付,微信提现到银行卡,微信企业付款到银行卡demo java 微信公众号支付,微信公众号提现到银行卡,企业付款到银行卡demo开发文档:https://pay.weixin.qq.com/wiki/doc/api/tools/mch_pay.php?chapter=14_1#开通条件:  1、商户号已入驻90日   2、商户号有30天连续正常交易 3、 登录微信支付商户平台-产品中心,开通企业付款。开始之前认真看一遍开发文档还是很有用的。1、 调用... 阅读详情

相关推荐

微信企业付款java demo代码

微信企业付款java demo代码,亲自用过,里面附有多种请求方式,已及xml解析方法。该方法使用md5签名,携带证书请求,微信扫码支付的也可以作为参考,保证下载本demo能实现企业付款的功能。

企业通过微信支付到个人银行卡的开发过程

由于前段时间开发需要,要实现企业通过微信支付到个人银行卡的功能,现在整理一下,里面的极大部分代码是一位大神写好的,然后自己在基础上列出了123,如果有什么不好的地方望指出,以备后期改进,谢谢!!!开发步骤:一,准备工作1.商户(企业)入驻微信,即在微信的商户平台进行注册2.获取:mch_id(商户号),key(就是你商户平台设置的密钥key)3.商户在产品中心,开通企业付款到个人银行卡功能4.获取...

weixin_40420734的博客 1万+

Java微信支付-微信企业付款到个人

微信支付企业付款到个人,包括付款 以及 查询 参考文章http://blog.youkuaiyun.com/fengshizty/article/details/53204566

企业微信开发——企业内部自建应用开发(第一篇)---环境搭建

企业微信开发从入门到精通

qq_35878240的博客 1万+

java微信企业付款到个人完整源码

简单的demo实现企业付款到个人,eclipse导出的完整源码,带jar包,适合初学者小白,大佬请无视,纯后台实现,无前端,可供参考实现流程,代码也是网上抄抄改改而来,感谢被我抄过的大佬们。

微信企业付款到零钱实战操作指南(java)

微信企业付款到零钱实战操作指南,包含了一部分代码,如有不清楚的,可以联系我。远程解决问题,需要微信企业付款到零钱php版本的,也可以联系我。

Java微信企业(批量)转账到零钱(超详细)

基于新创建的企业微信支付号,企业支付到零钱的功能改成了企业转账到零钱的功能,我们来实践操作一下,下面上步骤。

探长々 3346

Java后台微信企业转账到零钱

Java后台微信企业转账完整代码,上线项目源码不缺少关键类。

java实现微信企业付款到个人账户

微信官方提供了微信企业账户付款到微信个人零钱接口,提供企业向用户付款的功能,支持企业通过API接口付款,或通过微信支付商户平台网页功能操作付款。该接口并不是直接所有的商户都拥有,企业要开启必须满足以下两个条件: 1、商户号已入驻90日 2、商户号有30天连续正常交易 满足以上条件就可登录微信支付商户平台-产品中心,开通企业付款。 调用的链接地址:接口链接:https://api.mch...

baidu_37366055的博客 1万+

2021-8-14 EDK II编译

2021-8-14 EDK II 编译为什么要写这篇文章新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 为什么要写这篇文章 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdo

qq_45775660的博客 2949

智能车学习日记【二】————十字和斜入十字

智能车学习日记【二】————十字和斜入十字 文章目录 智能车学习日记【二】————十字和斜入十字 前言 一、普通十字补线 二、斜入十字 1.判断是否为斜入十字和斜入十字类型 2.找斜入十字拐点 总结 前言 经过了一个多月的学习,小白的我终于也是能较稳定调出了2.8m以上的四轮车,过程中也遇到了很多困难,其中就有十字补线和斜入十字补线。尤其是斜入十字也是困扰了我快一周,现在和大家分享一下我处理斜入十字的方法(我的方法其实还有很多漏洞需要改进,仅供大家参考理解一下,欢迎各位在评论区指点出可

bsefef的博客 2743

java 企业付款_java微信公众号企业付款开发

本文为大家分享了java微信公众号企业付款的开发代码,供大家参考,具体内容如下详情参照微信开发者文档 企业付款文档java代码 定义所传递的参数@RequestMapping(value = "zhifu", method = RequestMethod.GET)public @ResponseBody String getWeixinOpenid(String code,HttpServletR...

weixin_33998219的博客 280

Ubuntu技巧-Ubuntu远程访问之SSH反向代理

💡大家好,我是可夫小子,《小白玩转ChatGPT》专栏作者,关注AIGC、互联网和自媒体。要把内网的一台的Ubuntu服务器让外面也能访问,总共有三种可行的方案,前面已经介绍了两种方式,今天就来介绍更健壮稳定的方式——ssh反向代理。大概的框架图如下,今天就从服务器购买到设置,手把手的教程,让你花费100块以内,就拥有一个强大的「云服务器」。

可夫小子的频道 1153

企业付款到零钱API开发~~~ 付款到微信

更多精彩文章请关注微信公众号:Java编程指南 近日,在开发“微信企业付款到零钱”的功能。之前有过微信开发的经验,但是第一次接触“付款到零钱“这一块的业务,查询了很多的博客资料以及走了很多的弯路。也发现“企业付款到零钱”分享的博客并不多。特地写了该博客,希望对你们有帮助。个人浅薄的见解 代码下载地址如下: 链接:https://pan.baidu.com/s/1h6_ZSz5RbFARl...

Java编程指南(微信公众号同名) 862

最近爆火的 Ontology 本体是什么?一文看懂基础概念 + 落地实操

1993 Tom Gruber原版定义:本体是对领域概念化模型的显式形式化规范。1998 Studer完善通用定义:本体是共享、明确、形式化的领域概念模型规范。大白话翻译:本体就是机器能看懂的行业词典+业务规则手册。数据库只管存数据,本体只管定规则,知识图谱是规则+数据结合体。区别于普通开源本体工具,这款国产商用本体平台核心优势:业务沙盘推演、可控业务数据写回、全链路字段级数据血缘审计,适配企业生产级业务落地。

驽马不舍 368

Qt数据导出实战:从SQLite到CSV的完整流程(附内存优化技巧)

本文详细介绍了在Qt框架下,将SQLite数据库中的数据高效导出为CSV格式的完整流程。针对大数据量场景,重点分享了分块读取、流式写入等内存优化技巧,有效解决了嵌入式或资源受限环境中导出功能的内存占用与性能瓶颈问题,并提供了健壮的代码实现方案。

weixin_29313547的博客 342

Java 微信企业付款到个人钱包

Java 微信企业付款到个人钱包 希望可以帮助到你 文章目录**Java 微信企业付款到个人钱包**前言一、需要准备的配置二、开发总结 前言 微信企业付款到个人钱包,此功能模块需要提前在微信商户平台开通。因为开通需要先决条件,并不是所有商户都满足。商户需满足三个条件,可以在商户平台的产品中心,找到入口,申请开通。 1)入驻满90天 2)截至今日,回推30天有连续不断交易 3)交易需为健康交易 一、需要准备的配置 1. appid 可以是您的小程序或者公众号的appid(需要和微信的

request11的博客 1269

3、流程引擎下载安装与部署

camunda有多种使用方式,此处先使用独立平台的方式部署引擎,这种用法适合分布式,微服务化,多语言异构系统的使用方式。

leyoliu的博客 5524

java开发微信付款码支付

@[clownss] java开发微信付款码支付 微信支付–付款码支付 写在前面的话,各位大佬,晚上好!今儿是小弟第一次发表博客,我是一名刚入行的程序员,写的不好或是不对的地方,希望各位见谅。还请各位大佬能够指导,给予小弟一份帮助。谢谢大家!今天写的是我最近研究的微信付款码支付的一个小demo。 官方地址:https://pay.weixin.qq.com/wiki/doc/api/index....

weixin_42991261的博客 8899

Linux----Ubuntu系统官网下载iso镜像文件

Linux----Ubuntu系统官网下载iso镜像文件

MQ0522的博客 5万+

时频分析之短时傅里叶变换(STFT)

本文利用MATLAB自带的spectrogram函数对信号做短时傅里叶变换。首先介绍了短时傅里叶变换(STFT)的背景及意义;其次,对spectrogram函数的用法以及变量的含义做了详细的解释;最后,利用MATLAB编写程序实现了信号的STFT。

总结论文中的算法并给出论文的复现代码 7万+

java 企业付款到零钱 微信提现功能讲解

附官方地址:        微信官方api     微信公众号获取用户openid 只讲容易遇到的坑 微信api说明,请求需要双向证书。 所以需要去商户管理后台下载api证书  微信支付平台  在支付平台-&gt;账户中心-&gt;api安全 下载证书   并设置秘钥    然后在营销中心-&gt;支付后配置  查看发起提现公众号的appid  此appid一定要和获取用户openi...

qq_31896043的博客 1万+

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

java零钱换整程序_JAVA微信企业付款到零钱(十分钟搞定),

JAVA微信企业付款到零钱(十分钟搞定),最近帮朋友做了一个简单的微分销系统,实现从企业付款到零钱分润的功能,简单记录一下微信企业付款到零钱的开发过程,主要就是按规则封装好请求参数调用微信接口,涉及一些签名校验;A.接口流程1. 获取用户OPENID ,不同用户在不同公众号下的OPENID都是唯一的, 这里主要讲企业付款到零钱,已经实现微信获取用户信息的骚年可以跳过这一步https://mp.we...

weixin_39652760的博客 628

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

微信支付开发(6)--付款码支付(被扫)开发详解

用户打开付款码,商户使用扫码枪等设备扫码用户的付款码完成支付,注意此时用户的二维码是被商户扫描的。

编程副队长 7916

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

3 企业付款(Transfers)Demo

1 企业转账Demo 1.1 pingpp–java 在下载的ping++ sdk中找到TransferExample复制到你的项目中 1.2 替换参数 /* * * Ping++ Server SDK * 说明: * 以下代码只是为了方便商户测试而提供的样例代码,商户可根据自己网站需求按照技术文档编写, 并非一定要使用该代码。 * 接入企业付款流程参考开发者中心:https://www...

Skr郎 531
上一篇: uploadify上传导致session丢失解决方案
shaomiaojava
博客等级 码龄11年 0粉丝 2原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值