最近在搞公司的电商项目时,客户要求加上一个微信转账的功能。由于项目中并没有对应的插件,没法,只有现学现用。我先去微信商户平台官网上读取各种文档,最终做了一个demo。最后集成到了公司的项目中,大功告成。下面,我就一步一步的带大家来了解这个微信转账功能并公布自己的demo源码。

企业转账:提供企业向用户付款的功能,支持企业通过API接口付款至目标用户(企业可根据APPID+OpenID锁定目标用户)。针对已实名认证的用户,微信支付可提供校验真实姓名一致性的可选功能。付款资金将进入目标用户的零钱(微信-我-钱包-零钱)。微信支付将做零钱入账消息通知,零钱收支明细会展示相应记录。

API接口:https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers

cert证书:需要下载证书 证书使用

请求参数:

字段名 变量名 必填 示例值 类型 描述
公众账号appid mch_appid wx8888888888888888 String 微信分配的公众账号ID(企业号corpid即为此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 商户订单号,需保持唯一性
用户openid openid oxTWIuGaIt6gTKsQRLau2M0yL16E String 商户appid下,某用户的openid
校验用户姓名选项 check_name OPTION_CHECK String NO_CHECK:不校验真实姓名
FORCE_CHECK:强校验真实姓名(未实名认证的用户会校验失败,无法转账)
OPTION_CHECK:针对已实名认证的用户才校验真实姓名(未实名认证用户不校验,可以转账成功)
收款用户姓名 re_user_name 可选 马花花 String 收款用户真实姓名。
如果check_name设置为FORCE_CHECK或OPTION_CHECK,则必填用户真实姓名
金额 amount 10099 int 企业付款金额,单位为分
企业付款描述信息 desc 理赔 String 企业付款操作说明信息。必填。
Ip地址 spbill_create_ip 192.168.0.1 String(32) 调用接口的机器Ip地址
返回参数:
字段名 变量名 必填 示例值 类型 描述
返回状态码 return_code SUCCESS String(16) SUCCESS/FAIL
此字段是通信标识,非交易标识,交易是否成功需要查看result_code来判断
返回信息 return_msg 签名失败 String(128) 返回信息,如非空,为错误原因
签名失败
参数格式校验错误

以下字段在return_code为SUCCESS的时候有返回

字段名 变量名 必填 示例值 类型 描述
商户appid mch_appid wx8888888888888888 String 微信分配的公众账号ID(企业号corpid即为此appId)
商户号 mchid 1900000109 String(32) 微信支付分配的商户号
设备号 device_info 013467007045764 String(32) 微信支付分配的终端设备号,
随机字符串 nonce_str 5K8264ILTKCH16CQ2502SI8ZNMTM67VS String(32) 随机字符串,不长于32位
业务结果 result_code SUCCESS String(16) SUCCESS/FAIL
错误代码 err_code SYSTEMERROR String(32) 错误码信息
错误代码描述 err_code_des 系统错误 String(128) 结果信息描述

以下字段在return_code 和result_code都为SUCCESS的时候有返回

字段名 变量名 必填 示例值 类型 描述
商户订单号 partner_trade_no 1217752501201407033233368018 String(32) 商户订单号,需保持唯一性
微信订单号 payment_no 1007752501201407033233368018 String 企业付款成功,返回的微信订单号
微信支付成功时间 payment_time 2015-05-19 15:26:59 String 企业付款成功时间

错误代码:转账失败的时候会返回错误代码,我们可以根据这些代码判断具体出错的内容

错误代码 描述 原因 解决方案
NOAUTH 没有权限 没有授权请求此api 请联系微信支付开通api权限
AMOUNT_LIMIT 付款金额不能小于最低限额 付款金额不能小于最低限额 每次付款金额必须大于1元
PARAM_ERROR 参数错误 参数缺失,或参数格式出错,参数不合法等 请查看err_code_des,修改设置错误的参数
OPENID_ERROR Openid错误 Openid格式错误或者不属于商家公众账号 请核对商户自身公众号appid和用户在此公众号下的openid。
NOTENOUGH 余额不足 帐号余额不足 请用户充值或更换支付卡后再支付
SYSTEMERROR 系统繁忙,请稍后再试。 系统错误,请重试 使用原单号以及原请求参数重试
NAME_MISMATCH 姓名校验出错 请求参数里填写了需要检验姓名,但是输入了错误的姓名 填写正确的用户姓名
SIGN_ERROR 签名错误 没有按照文档要求进行签名
  1. 签名前没有按照要求进行排序。
  2. 没有使用商户平台设置的密钥进行签名
  3. 参数有空格或者进行了encode后进行签名。
XML_ERROR Post内容出错 Post请求数据不是合法的xml格式内容 修改post的内容
FATAL_ERROR 两次请求参数不一致 两次请求商户单号一样,但是参数不一致 如果想重试前一次的请求,请用原参数重试,如果重新发送,请更换单号。
CA_ERROR 证书出错 请求没带证书或者带上了错误的证书
  1. 到商户平台下载证书
  2. 请求的时候带上该证书

OK,理论知识其实并没有多少。简单点来说就是我们向指定的API地址post数据,再根据返回的数据进行下一步的判断。

下面的文章会在本文理论的基础上进行具体的代码实现。

微信企业转账实例之理论介绍相关推荐

  1. 微信企业转账JAVA版(包括:1,转账个人零钱;2,转账个人银行卡;3,微信官网的SDK3.0.9存在的支付问题)

    前言: 最近公司做产品,有这样几个需求 微信退款 微信企业给用户转账到零钱 通过微信给用户转账到银行卡 支付宝退款 支付宝转账到余额 根据上述需求,本人呢,做了几天的研究与学习,在此期间不免会出现摇头 ...

  2. 微信企业付款到零钱功能介绍

    微信企业付款到零钱功能介绍 一.企业付款至零钱业务介绍 企业付款业务是为了协助商户方便地实现企业向个人付款,针对部分有开发能力的商户,通过API或网页操作,付款至目标用户(企业可根据APPID+Ope ...

  3. php 工商银行公众号支付代码_php开发微信支付企业付款实例代码

    企业付款的应用场景: 公众号向已关注用户付款,比如处理退款.财务结算等,本文主要和大家分享php开发微信支付企业付款实例代码,希望能帮助到大家. 说明 1.证书需要用自己的商户里面的证书(注意:证书路 ...

  4. 微信支付 企业转账 小程序发红包 提现 发红包 企业支付等遇到的问题

    最近公司在开发一个项目,小程序抢红包,抢到的红包用户要提现.商家需要通过微信的企业转账功能打款到微信的钱包里. 开发的时候发现有几个坑,在这里和大家分享下.首先就是微信支付的开通条件. 第一个,就是个 ...

  5. 企业微信如何设置发票抬头 管理员在企业微信设置发票抬头的方法介绍

    企业微信如何设置发票抬头?公司的发票抬头在企业微信中是由管理员在后台进行设置的,接下来的文章中小编将会带来详细的操作流程,感兴趣的朋友不要错过哦! 管理员在企业微信设置发票抬头的方法介绍 1.管理员在 ...

  6. php 微信转账,php实现微信公众号企业转账功能

    企业付款提供由商户直接付钱至用户微信零钱的能力,支持平台操作及接口调用两种方式,资金到账速度快,使用及查询方便.主要用来解决合理的商户对用户付款需求,比如:保险理赔.彩票兑换等等. 特点发起方式灵活, ...

  7. 【微信开发】-- 企业转账到用户

    在微信公众号支付的API中没有这个接口,如果企业需要给用户转账,或者让用户提现或者给用户发红包等需要再商户平台中的产品中心分别开通. 一.开通功能 开通就是点击一下,很简单.但需要注意的是支持向用户转 ...

  8. php 微信公众号企业转账功能

    企业付款提供由商户直接付钱至用户微信零钱的能力,支持平台操作及接口调用两种方式,资金到账速度快,使用及查询方便.主要用来解决合理的商户对用户付款需求,比如:保险理赔.彩票兑换等等. 特点 发起方式灵活 ...

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

    文章目录 一.引入jar包 二.yml里面配置支付 三.java 实现支付的步骤 (1)在controller里面写一个支付接口 (2) EntPayReq 的实体类对象 (3)业务层 WxEntPa ...

最新文章

  1. struts1生成验证码
  2. Ubuntu1404 开启定时任务 crontab
  3. Python中转换角度为弧度的radians()方法
  4. win11小组件怎么卸载 windows11卸载小组件的步骤方法
  5. 干货!博应用APP推广的三大步骤五大原则
  6. win7下chm打不开
  7. python输入两个整数求最大公约数和最小公倍数_题目:输入两个正整数m和n,求其最大公约数和最小公倍数 。...
  8. matlab 分类标签,matlab中根据分类条件产生带标签的数据(二)
  9. 【物联网】物联网关键技术与应用分析
  10. Craw the picture of the specific handle
  11. js修改对象数组⾥的对象名字
  12. 01.朴素贝叶斯介绍
  13. Python print连续输出不换行
  14. IntelliJ IDEA java开发环境
  15. Office 2007重新输入序列号激活
  16. 服务器机器人维修技术,维修机器人
  17. elementUI table隐藏行
  18. 2022家电行业舆情监控及应对分析
  19. python设计编程体验中心_树莓派DIY体验中心创业计划书
  20. python中求斐波那契数偶数和_[译] 斐波那契数列中的偶数 (Python vs. JavaScript)

热门文章

  1. 微信过期文件怎么找回?2个方法,轻松解决
  2. Linux下C++创建文件夹
  3. 【yum参数】【yum指令】【更换阿里源163源】【更换本地yum源】
  4. 【第67篇】论文翻译——CoAtNet:结合卷积和注意力 适用于所有数据大小
  5. 日本語N2文法 精華版
  6. python实现雅克比(Jacobi)迭代法
  7. Money Pro for Mac(理财应用程序)
  8. 客户端连接不上服务端(Redis)
  9. mysql修改连接字符串_修改数据库连接字符串教程
  10. 嵌入式Linux引导过程之1.3——Xloader的sys_init