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(暂未开放)

数据示例:

![CDATA[E1EE61A91C8E90F299DE6AE075D60A2D]]

![CDATA[141117]]

![CDATA[888]]

![CDATA[wxcbda96de0b165486]]

![CDATA[nick_name]]

![CDATA[send_name]]

![CDATA[onqOjjmM1tad-3ROpncN-yUfa6uI]]

![CDATA[200]]

![CDATA[200]]

![CDATA[200]]

![CDATA[1]]

![CDATA[恭喜发财]]

![CDATA[127.0.0.1]]

![CDATA[新年红包]]

![CDATA[新年红包]]

![CDATA[xx/img/]]

![CDATA[share_content]]

![CDATA[xx/img/]]

![CDATA[https:/xx/img/]]

![CDATA[50780e0cca98c8c8e814883e5caa672e]]

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的时候有返回

成功示例:

10010404

1

失败示例:

>

10010404

1

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"

最终得到最终发送的数据:

wxd930ea5d5a258f4f

10000100

1000

test

ibuaiVcKdpRxkhJA

9A0A8659F005D6984697E2CA0A9CF3B7

微信提供相关接口在线签名验证工具:链接地址。

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服务器虚拟目录的文件夹下,防止被他人下载。商户服务器要做

好病毒和木马防护工作,不被非法侵入者窃取证书文件。