讀古今文學網 > 微信公眾平台開發:從零基礎到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 微信支付裂變紅包