2024年3月27日发(作者:)
现金红包API文档
修订
时间
版本号
维护人
维护内容
1 前言
1.1 业务介绍
微信红包是微信支付推出的一款基于微信客户端的免费服务应用,微信红包以微信支付
为核心安全保障,为广大用户提供安全,快捷的移动支付服务。
春节期间,微信红包以其独特的魅力,优秀的用户体验和安全的支付环境,一经推出即
受到了广大用户的热烈欢迎,有效的推动了用户对于移动支付业务的认识。
1.2 微信红包发送规则
1.2.1 发送频率规则
1.2.1.1 每分钟发送红包数量不得超过1800个;
1.2.1.2 北京时间0:00-8:00不触发红包赠送;
(如果以上规则不满足您的需求,请发邮件至wxhongbao@获取升级指引)
1.2.2 红包规则
1.2.2.1 单个红包金额介于[1.00元,200.00元]之间;
1.2.2.2 同一个红包只能发送给一个用户;
(如果以上规则不满足您的需求,请发邮件至wxhongbao@获取升级指引)
1.3
1.3.1
商户调用微信红包接口流程
微信红包接口调用流程
后台API调用:待进入联调过程时与开发进行详细沟通;
告知服务器:告知服务器接收微信红包的用户openID,告知服务器该用户获得的金额;
从商户号扣款:服务器获取信息后从对应商户号的可用余额中扣除对应的金额;
调用失败:因不符合发送规则,商户号余额不足等原因造成调用失败,反馈至调用方;
发送成功:以微信红包公众账号发送对应红包至对应用户;
后台API调用
告知服务器
从商户号扣款
是否符合条件
N
调用失败
Y
发送成功
用户领取
1.3.2 确保可用余额充足
发放现金红包将扣除商户的可用余额,请注意,可用余额并不是微信支付交易额,需要预先
充值,确保可用余额充足。查看可用余额、充值、提现请登录微信支付商户平台
(/),进入“资金管理”菜单,进行操作。
1.4 用户交互流程
调用现金红包接口,发放成功后,用户领取红包流程如下:
步骤(一):收到领取红包消息,根据用户微信版本不同,分为:
1) 微信版本在6.1及以上的用户收到企业自身微信号(调用接口时传入appid对应的商户
号)下发领取消息;如果用户未关注微信号,那么会收到由“服务通知”下发的消息
2) 微信版本在6.1以下的用户仍按原流程收取消息:由微信红包公众号下发领取消息
步骤(二):点击领取消息,拆红包
1.5
业务
现金红包
接口列表
接口
发放红包
简介
用于企业向微信用户个人发现金红包
目前支持向指定微信用户的openid发放指定金
额红包。(获取openid参见微信公众平台开发
者文档: 网页授权获取用户基本信息)
2 接口详细说明
2.1
2.1.1
发放现金红包
接口说明
用于企业向微信用户个人发现金红包
目前支持向指定微信用户的openid发放指定金额红包。(获取openid参见微信公众
平台开发者文档: 网页授权获取用户基本信息)
接口参数与用户领用实际效果对应关系如下:
如需操作请登录/
2.1.2
请求Url
是否需要证书
请求方式
接口调用请求说明
/mmpaymkttransfers/sendredpack
是(证书及使用说明见3.2.3商户证书)
POST
2.1.3
字段名
随机字符
串
签名 sign
请求参数
必
填
是
示例值
5K8264ILTKCH
16CQ2502SI8Z
NMTM67VS
是 C380BEC2BFD7
27A4B6845133
519F3AD6
String(
32)
String(
28)
商户订单号(每个订单号必须唯一)
组成: mch_id+yyyymmdd+10位一天
内不能重复的数字。
接口根据商户订单号支持重入, 如出现
超时可再调用。
生成签名方式查看3.2.1节
类型
String(
32)
说明
随机字符串,不长于32位
字段
nonce_str
商户订单
号
mch_billno 是 1
8
90
商户号
子商户号
公众账号
appid
提供方名
称
商户名称
用户
mch_id
sub_mch_id
wxappid
nick_name
send_name
re_openid
是
否
是
是
是
是
10000098
10000090
wx8888888888
888888
天虹百货
天虹百货
oxTWIuGaIt6gT
KsQRLau2M0yL
16E
String(
32)
String(
32)
String(
32)
String(
32)
String(
32)
String(
32)
int
int
int
微信支付分配的商户号
微信支付分配的子商户号,受理模式下必
填
商户appid
提供方名称
红包发送者名称
接受收红包的用户
用户在wxappid下的openid openid
付款金额
最小红包
金额
最大红包
金额
max_value
total_amou
nt
min_value
是
是
是 1000
1000
1000
付款金额,单位分
最小红包金额,单位分
最大红包金额,单位分
( 最小金额等于最大金额:
min_value=max_value
=total_amount)
红包发放
总人数
红包祝福
语
Ip地址
total_num
是
是
1
感谢您参加猜灯
谜活动,祝您元
宵节快乐!
int
String(
128)
String(
红包发放总人数
total_num=1
红包祝福语
调用接口的机器Ip地址
wishing
client_ip 是 192.168.0.1
15)
活动名称
备注
商
url
分享文案
分享链接
分享的图
片
share_conte
nt
share_url
share_imgur
l
否
否
否
户
logo_imgurl
act_name
remark
是
是
否
猜灯谜抢红包活
动
猜越多得越多,
快来抢!
/mch/im
g/
快来参加猜灯谜
活动
.
com
/mch/im
g/
String(
256)
String(
128)
String(
128)
String(
32)
String(
256)
String(
128)
活动名称
备注信息
logo的商户logo的url(暂未开放)
分享文案(暂未开放)
分享链接(暂未开放)
分享的图片url(暂未开放)
数据示例:
2.1.4
字段名
返回状态
码
返回信息
变量名
返回参数
必
填
是
示例值
SUCCESS
类型
String(
16)
说明
SUCCESS/FAIL
此字段是通信标识,非交易标识,交易是否
成功需要查看result_code来判断
返回信息,如非空,为错误原因
签名失败
参数格式校验错误
return_code
return_msg 否 签名失败
String(
128)
以下字段在return_code为SUCCESS的时候有返回
签名 sign 是 C380BEC2BF
D727A4B684
5133519F3A
D6
业务结果
错误代码
result_code
err_code
是
否
SUCCESS
SYSTEMERRO
R
错误代码
描述
商户订单
号
商户号
公众账号
appid
用户re_openid 是
openid
付款金额
发放成功
时间
微信单号
total_amou
nt
是
mch_id
wxappid
是
是
err_code_de
s
mch_billno 是 1
41111123456
7890
10000098
wx888888888
8888888
oxTWIuGaIt6
gTKsQRLau2
M0yL16E
1000 int 付款金额,单位分
String(
32)
String(
32)
String(
32)
接受收红包的用户
用户在wxappid下的openid
商户appid
否 系统错误
String(
16)
String(
32)
String(
128)
String(
28)
商户订单号(每个订单号必须唯一)
组成: mch_id+yyyymmdd+10位一天内
不能重复的数字
微信支付分配的商户号
结果信息描述
错误码信息
SUCCESS/FAIL
String(
32)
生成签名方式查看2.1节
以下字段在return_code 和result_code都为SUCCESS的时候有返回
成功示例:
失败示例:
>
2.1.5
错误代码
NOAUTH
PARAM_ERROR
OPENID_ERROR
错误码
描述
无权限
参数错误
Openid错误
解决方案
请联系微信支付开通api权限
请查看err_code_des,修改设置错误的参数
根据用户在商家公众账号上的openid,获取用户
在红包公众账号上的openid 错误。请核对商户
自身公众号appid和用户在此公众号下的
openid。
NOTENOUGH 余额不足 商户账号余额不足,请登录微信支付商户平台充
值
SYSTEMERROR
TIME _LIMITED
系统繁忙,请再试。
企业红包的发送时间受
限
SECOND_OVER_LIMITED 企业红包的按分钟发放
受限
MONEY_LIMIT
红包金额发放限制
每分钟发送红包数量不得超过1800个;(可联系
微信支付wxhongbao@调高额
度)
每个红包金额必须大于1元,小于200元(可联
系微信支付wxhongbao@调高额
度至4999元)
可用同一商户单号再次调用,只会发放一个红包。
请北京时间0:00-8:00时间之外触发红包赠送
3 接口规则
与微信支付API文档保持一致。以下内容来自微信支付API文档。
3.1
传输方式
提交方式
数据格式
字符编码
签名算法
签名要求
证书要求
判断逻辑
协议规则
为保证交易安全性,采用HTTPS传输
采用POST方法提交
提交和返回数据都为XML格式,根节点名为xml
统一采用UTF-8字符编码
MD5
请求和接收数据均需要校验签名,签名的详细方法请参考下文
调用申请退款、撤销订单接口需要商户证书
先判断协议字段返回,再判断业务返回,最后判断交易状态
3.2
3.2.1
安全规范
签名算法
签名生成的通用步骤如下:
第一步,设所有发送或者接收到的数据为集合M,将集合M内非空参数值的参数按照
参数名ASCII码从小到大排序(字典序),使用URL键值对的格式(即
key1=value1&key2=value2…)拼接成字符串stringA。
特别注意以下重要规则:
参数名ASCII码从小到大排序(字典序);
如果参数的值为空不参与签名;
参数名区分大小写;
验证调用返回或微信主动通知签名时,传送的sign参数不参与签名,将生成
的签名与该sign值作校验。
第二步,在stringA最后拼接上key=商户支付密钥得到stringSignTemp字符串,并
对stringSignTemp进行MD5运算,再将得到的字符串所有字符转换为大写,得到sign
值signValue。
举例:
假设传送的参数如下:
appid:
mch_id:
wxd930ea5d5a258f4f
10000100
1000 device_info:
Body: test
nonce_str: ibuaiVcKdpRxkhJA
第一步:对参数按照key=value的格式,并按照参数名ASCII字典序排序如下:
stringA="appid=wxd930ea5d5a258f4f&body=test&device_info=1000&mch_i
d=10000100&nonce_str=ibuaiVcKdpRxkhJA";
第二步:拼接支付密钥:
stringSignTemp="stringA&key=192006250b4c09247ec02edce69f6a2d"
sign=MD5(stringSignTemp).toUpperCase()="9A0A8659F005D6984697E2CA0A
9CF3B7"
最终得到最终发送的数据:
微信提供相关接口在线签名验证工具:链接地址。
3.2.2 生成随机数算法
微信支付API接口协议中包含固定nonce_str,主要保证签名不可预测。我们推荐生成
随机数算法如下:调用随机数生成函数,将得到的值转换为字符串。
3.2.3 商户证书
1) 获取商户证书
微信支付接口中,涉及资金回滚的接口会使用到商户证书,包括退款、撤销接口。商家
在申请微信支付成功后,收到的相应邮件通知中,附件会包含接口需要用到的证书文件,有
四个证书文件,分别说明如下。
表4.2:证书文件说明
证书附件 描述 使用场景 备注
pkcs12格式
(apiclient_cert.p12)
包含了私钥信息的
证书文件,为
p12(pfx)格式,由
微信支付签发给您
用来标识和界定您
的身份
撤销、退款申请
API中调用
windows上可以直接双
击导入系统,导入过程中
会提示输入证书密码,证
书密码默认为您的商户
ID(如:10010000)
证书pem格式从PHP等不能直
接使用p12文
件,而需要使用
您也可以使用openssl
命令来自己导出:
openssl pkcs12
-clcerts -nokeys -in
apiclient_cert.p12
-out
(apiclient_) apiclient_cert.p1
2中导出证书部分
的文件,为pem格pem,为了方便
式,请妥善保管不
要泄漏和被他人复
您使用,已为您
直接提供
制 apiclient_
证书密钥pem格式从PHP等不能直
接使用p12文
件,而需要使用
您也可以使用openssl
命令来自己导出:
openssl pkcs12
-nocerts -in
apiclient_cert.p12
-out
apiclient_
(apiclient_) apiclient_cert.p1
2中导出密钥部分
的文件,为pem格pem,为了方便
式 您使用,已为您
直接提供
CA证书() 微信支付api服务
器上也部署了证明
微信支付身份的服
务器证书,您在使
用api进行调用时
也需要验证所调用
服务器及域名的真
实性
该文件为签署
微信支付证书
的权威机构的
根证书,可以用
来验证微信支
付服务器证书
的真实性
部分工具已经内置了若
干权威机构的根证书,无
需引用该证书也可以正
常进行验证,这里提供给
您在未内置所必须根证
书的环境中载入使用
2) 使用商户证书
apiclient_cert.p12是商户证书文件,除PHP外的开发均使用此证书文件。
商户如果使用.NET环境开发,请确认Framework版本大于2.0,必须在操作系统
上双击安装证书apiclient_cert.p12后才能被正常调用。
商户证书调用或安装都需要使用到密码,该密码的值为微信商户号(mchid)
PHP开发环境请使用商户证书文件apiclient_和apiclient_ ,
是CA证书。
3) 商户证书安全
证书文件放在非web服务器虚拟目录的文件夹下,防止被他人下载。商户服务器要做
好病毒和木马防护工作,不被非法侵入者窃取证书文件。


发布评论