调用微信公众号现金红包接口给用户发放普通红包

功能

  1. 商户调用接口时,通过指定发送对象以及发送金额的方式发放红包。
  2. 领取到红包后,用户的资金直接进入微信零钱。
  3. 调用现金红包接口需要使用到证书,请前往商户平台下载证书。
  4. 因为发送现金红包是从商户平台余额扣款,所以商户平台的账户余额必须有充足的余额

接口

请求Url: https://api.mch.weixin.qq.com/mmpaymkttransfers/sendredpack
请求方式: POST
是否需要证书:

请求参数

nonce_str 随机字符串,长度不超32位(必选字段)
sign 签名(必选字段)
mch_billno 商户订单号,每个订单号必须唯一。接口根据商户订单号支持重入,如出现超时可再调用(必选字段)
mch_id 商户号,微信支付分配的商户号(必选字段)
wxappid 公众账号appid,微信分配的公众账号ID,接口传入的所有appid应该为公众号的appid (必选字段)
send_name 商户名称,红包发送者名称(必选字段)
re_openid 用户openid,接受红包的用户。用户在wxappid下的openid (必选字段)
total_amount 付款金额(必选字段)
total_num 红包发放总人数(必选字段)
wishing 红包祝福语(必选字段)
client_ip 调用接口的机器ip地址(必选字段)
act_name 活动名称(必选字段)
remark 备注信息(必选字段)
scene_id 发放红包使用场景,红包金额大于200时必传(非必选字段)
PRODUCT_1:商品促销
PRODUCT_2:抽奖
PRODUCT_3:虚拟物品兑奖
PRODUCT_4:企业内部福利
PRODUCT_5:渠道分润
PRODUCT_6:保险回馈
PRODUCT_7:彩票派奖
PRODUCT_8:税务刮奖
risk_info 活动信息(非必选字段)
consume_mch_id 资金授权商户号,服务商替特约商户发放时使用(非必选字段)

数据示例

<xml> 
<sign><![CDATA[E1EE61A91C8E90F299DE6AE075D60A2D]]></sign> 
<mch_billno><![CDATA[0010010404201411170000046545]]></mch_billno> 
<mch_id><![CDATA[888]]></mch_id> 
<wxappid><![CDATA[wxcbda96de0b165486]]></wxappid> 
<send_name><![CDATA[send_name]]></send_name> 
<re_openid><![CDATA[onqOjjmM1tad-3ROpncN-yUfa6uI]]></re_openid> 
<total_amount><![CDATA[200]]></total_amount> 
<total_num><![CDATA[1]]></total_num> 
<wishing><![CDATA[恭喜发财]]></wishing> 
<client_ip><![CDATA[127.0.0.1]]></client_ip> 
<act_name><![CDATA[新年红包]]></act_name> 
<remark><![CDATA[新年红包]]></remark> 
<scene_id><![CDATA[PRODUCT_2]]></scene_id> 
<consume_mch_id><![CDATA[10000097]]></consume_mch_id> 
<nonce_str><![CDATA[50780e0cca98c8c8e814883e5caa672e]]></nonce_str> 
<risk_info>posttime%3d123123412%26clientversion%3d234134%26mobile%3d122344545%26deviceid%3dIOS</risk_info> 
</xml> 

返回参数

return_code 返回状态码,此字段是通信标识,非交易标识,交易是否成功需要查看result_code来判断(必选字段)
return_msg 返回信息,为错误原因(非必选字段)
签名失败
参数格式校验错误

return_code为SUCCESS的时候返回

sign 签名(必选字段)
result_code 业务结果(必选字段)
err_code 错误代码(非必选字段)
err_code_des 错误代码描述(非必选字段)

在return_code和result_code都为SUCCESS的时候有返回

mch_billno 商户订单号,每个订单号必须唯一。
组成:mch_id+yyyymmdd+10位一天内不能重复的数字。(必选字段)
mch_id 商户号,微信支付分配的商户号(必选字段)
wxappid 公众账号,接口传入的所有appid应该为公众号的appid (必选字段)
re_openid 用户openid,接受收红包的用户(必选字段)
total_amount 付款金额(必选字段)
send_listid 微信单号,红包订单的微信单号(必选字段)

成功示例

<xml> 
<return_code><![CDATA[SUCCESS]]></return_code> 
<return_msg><![CDATA[发放成功.]]></return_msg> 
<result_code><![CDATA[SUCCESS]]></result_code> 
<err_code><![CDATA[0]]></err_code> 
<err_code_des><![CDATA[发放成功.]]></err_code_des> 
<mch_billno><![CDATA[0010010404201411170000046545]]></mch_billno> 
<mch_id>10010404</mch_id> 
<wxappid><![CDATA[wx6fa7e3bab7e15415]]></wxappid> 
<re_openid><![CDATA[onqOjjmM1tad-3ROpncN-yUfa6uI]]></re_openid> 
<total_amount>1</total_amount> 
</xml> 

失败示例

<xml> 
<return_code><![CDATA[FAIL]]></return_code> 
<return_msg><![CDATA[系统繁忙,请稍后再试.]]></return_msg> 
<result_code><![CDATA[FAIL]]></result_code> 
<err_code><![CDATA[268458547]]></err_code> 
<err_code_des><![CDATA[系统繁忙,请稍后再试.]]></err_code_des> 
<mch_billno><![CDATA[0010010404201411170000046542]]></mch_billno> 
<mch_id>10010404</mch_id> 
<wxappid><![CDATA[wx6fa7e3bab7e15415]]></wxappid> 
<re_openid><![CDATA[onqOjjmM1tad-3ROpncN-yUfa6uI]]></re_openid> 
<total_amount>1</total_amount> 
</xml> 


附注

签名算法
假设传送的参数如下:
appid: wxd930ea5d5a258f4f
mch_id: 10000100
device_info: 1000
body: test
nonce_str: ibuaiVcKdpRxkhJA

第一步,设所有发送或者接收到的数据为集合M,将集合M内非空参数值的参数按照参数名ASCII码从小到大排序(字典序),使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA。

stringA="appid=wxd930ea5d5a258f4f&body=test&device_info=1000&mch_id=10000100&nonce_str=ibuaiVcKdpRxkhJA"; 

特别注意以下重要规则:

· 参数名ASCII码从小到大排序(字典序);
· 如果参数的值为空不参与签名;
· 参数名区分大小写;
· 验证调用返回或微信主动通知签名时,传送的sign参数不参与签名,将生成的签名与该sign值作校验。
· 微信接口可能增加字段,验证签名时必须支持增加的扩展字段

第二步,在stringA最后拼接上key得到stringSignTemp字符串,并对stringSignTemp进行MD5运算,再将得到的字符串所有字符转换为大写,得到sign值signValue。
key设置路径:微信商户平台(pay.weixin.qq.com)-->账户设置-->API安全-->密钥设置

stringSignTemp=stringA+"&key=192006250b4c09247ec02edce69f6a2d" //注:key为商户平台设置的密钥key
sign=MD5(stringSignTemp).toUpperCase()="9A0A8659F005D6984697E2CA0A9CF3B7" //注:MD5签名方式
sign=hash_hmac("sha256",stringSignTemp,key).toUpperCase()="6A9AE1657590FD6257D693A078E1C3E4BB6BA4DC30B23E0EE2496E54170DACD6" //注:HMAC-SHA256签名方式

第三步,转化为xml格式发送到微信服务器。

<xml>
<appid>wxd930ea5d5a258f4f</appid>
<mch_id>10000100</mch_id>
<device_info>1000<device_info>
<body>test</body>
<nonce_str>ibuaiVcKdpRxkhJA</nonce_str>
<sign>9A0A8659F005D6984697E2CA0A9CF3B7</sign>
<xml>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,098评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,213评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,960评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,519评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,512评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,533评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,914评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,804评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,563评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,644评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,350评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,933评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,908评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,146评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,847评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,361评论 2 342

推荐阅读更多精彩内容