红包可以分为普通红包和裂变红包。裂变红包:一次可以发放一组红包,首先领取的用户为种子用户,种子用户领取一组红包当中的一个,并可以通过社交分享将剩下的红包给其他用户。裂变红包充分利用了人际传播的优势。
发红包主要分为以下几大步骤:
首先设置红包相关信息
- 将发送的数据集合按ASCII码排序,然后使用url键值对的格式(即key1=value1&key2=value2…)拼接成字符串A
- 在字符串A上拼接上key得到签名字符串,然后对签名字符串进行MD5运算,最后将得到的字符串所有字符转换为大写
最后调用接口发红包。
- 由于发送红包是HTTPS连接,因此需要进行证书校验(双向证书校验)相关操作;
发送普通红包
调用接口https://api.mch.weixin.qq.com/mmpaymkttransfers/sendredpack,请求方式是POST,需要证书。
第一步:设置红包信息
从官方的文档可以看到,调用红包接口所需要的参数。具体如下:
字段名 | 字段 | 必填 | 示例值 | 类型 | 说明 |
---|---|---|---|---|---|
随机字符串 | nonce_str | 是 | 5K8264ILTKCH16CQ2502SI8ZNMTM67VS | string | 不长于32位,主要保证签名不可预测。官方推荐调用随机函数生成,将得到的值转化为字符串。 |
签名 | sign | 是 | C380BEC2BFD727A4B6845133519F3AD6 | string | |
商户订单号 | mch_billno | 是 | 10000098201411111234567890 | string | 每个订单号必须唯一 |
商户号 | mch_id | 是 | 10000098 | string | 微信支付分配的商户号 |
公众账号appid | wxappid | 是 | wx8888888888888888 | string | 微信分配的公众号id |
商户名称 | send_name | 是 | 天虹百货 | string | 红包发送者名称 |
用户openid | re_openid | 是 | oxTWIuGaIt6gTKsQRLau2M0yL16E | string | 接收红包的用户 |
付款金额 | total_amount | 是 | 1000 | int | 付款金额,单位:分 |
红包发放总人数 | total_num | 是 | 1 | int | 红包发放总人数 |
红包祝福语 | wishing | 是 | 感谢您参加灯谜活动,祝您元宵节快乐! | string | 红包祝福语 |
ip地址 | client_ip | 是 | 192.168.0.1 | string | 调用接口的机器ip地址 |
活动名称 | act_name | 是 | 猜灯谜抢红包活动 | string | 活动名称 |
备注 | remark | 是 | 猜的越多,得到越多,快来抢! | string | 备注信息 |
场景 | scene_id | 否 | PRODUCT_8 | string | 例如PRODUCT_1:商品促销,PRODUCT_2:抽奖,PRODUCT_3:虚拟物品奖,PRODUCT_4:企业内部福利,PRODUCT_5:渠道分润,PRODUCT_6:保险回馈,PRODUCT_7:彩票派奖,PRODUCT_8:税务刮奖 |
活动信息 | risk_info | 否 | posttime%3d123123412%26clientversion%3d234134%26mobile%3d122344545%26deviceid%3dIOS | string | |
资金授权商户号 | consume_mch_id | 否 | 1222000096 | string | 服务商替特约商户发放时使用 |
返回参数:
字段名 | 变量名 | 必填 | 示例值 | 类型 | 说明 |
---|---|---|---|---|---|
返回状态码 | return_code | 是 | SUCCESS | String(16) | SUCCESS/FAIL此字段是通信标识,非交易标识,交易是否成功需要查看result_code来判断 |
返回信息 | return_msg | 否 | 签名失败 | String(128) | 返回信息,如非空,为错误原因签名失败,参数格式校验错误 |
以下字段在return_code为SUCCESS的时候有返回
字段名 | 变量名 | 必填 | 示例值 | 类型 | 说明 |
---|---|---|---|---|---|
签名 | sign | 是 | C380BEC2BFD727A4B6845133519F3AD6 | string(32) | 签名方式后面会讲到 |
业务结果 | result_code | 是 | SUCCESS | string(16) | SUCCESS/FAIL |
错误代码 | err_code | 否 | SYSTEMERROR | string(32) | 错误码信息 |
错误代码描述 | err_code_des | 否 | 系统错误 | string(128) | 结果信息描述 |
第二步:实现HTTPS请求
发送裂变红包
调用接口:https://api.mch.weixin.qq.com/mmpaymkttransfers/sendgroupredpack,请求方式是POST。
请求参数相比于普通红包,多了下面字段。
字段名 | 变量名 | 必填 | 示例值 | 类型 | 描述 |
---|---|---|---|---|---|
红包金额设置方式 | amt_type | 是 | ALL_RAND | string(32) |