映月读书网 > 微信公众平台开发:从零基础到ThinkPHP5高性能框架实践 > 17.6.2 裂变红包 >

17.6.2 裂变红包

裂变红包是指一次可以发放一组红包。首先领取的用户为种子用户,种子用户领取一组红包中的一个,并可以通过社交分享将剩下的红包发给其他用户。裂变红包充分利用了人际传播的优势。

发放裂变红包的接口如下。


https:// api.mch.weixin.qq.com/mmpaymkttransfers/sendgroupredpack
  

发放裂变红包时,POST数据示例如下。


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

同时,发放裂变红包时需要带上文件证书,提高安全级别。

上述数据的参数说明如表17-8所示。

表17-8 发放裂变红包接口的参数说明

正确创建时,返回的数据示例如下。


<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>3</total_amount> 
    <send_time><![CDATA[20150227091010]]></send_time>
    <send_listid><![CDATA[1000000000201502270093647546]]></send_listid>
</xml>
  

上述数据的参数说明如表17-9所示。

表17-9 发放裂变红包接口返回参数说明

裂变红包的请求方法和普通红包基本相同,都是使用同样的SDK。发放裂变红包的代码如下。


 1 $money = 501;
 2 $sender = "方倍工作室";
 3 $obj = array;
 4 $obj['wxappid']          = APPID;
 5 $obj['mch_id']           = MCHID;
 6 $obj['mch_billno']       = MCHID.date('YmdHis').rand(1000, 9999);
 7 $obj['re_openid']        = $openid;
 8 $obj['total_amount']     = $money;
 9 $obj['amt_type']         = "ALL_RAND";
10 $obj['total_num']        = 3;
11 $obj['send_name']        = $sender;
12 $obj['wishing']          = "恭喜发财";
13 $obj['act_name']         = "猜灯谜抢红包";
14 $obj['remark']           = "猜越多得越多";
15 var_dump($obj);
16 $url = 'https:// api.mch.weixin.qq.com/mmpaymkttransfers/sendgroupredpack';
17 $wxHongBaoHelper = new WxPay;
18 $data = $wxHongBaoHelper->wxpay($url, $obj, true);
19 $res = $wxHongBaoHelper->xmlToArray($data);
20 var_dump($res);
  

用户收到裂变红包时的效果如图17-10所示。

图17-10 微信支付裂变红包