《微信服務號發(fā)送營銷紅包給關注用戶步驟及部分php代碼》要點:
本文介紹了微信服務號發(fā)送營銷紅包給關注用戶步驟及部分php代碼,希望對您有用。如果有疑問,可以聯(lián)系我們。
維易PHP培訓學院每天發(fā)布《微信服務號發(fā)送營銷紅包給關注用戶步驟及部分php代碼》等實戰(zhàn)技能,PHP、MYSQL、LINUX、APP、JS,CSS全面培養(yǎng)人才。
微信紅包
這里主要講述的是微信服務號給關注用戶發(fā)送微信紅包的相關內容;主要使用的業(yè)務場景有:1、業(yè)務員匆匆銷員的獎勵;2、現(xiàn)場會議互動抽獎;3、微信推廣轉發(fā)獎勵;4、其他等等等,大開腦洞想把.
發(fā)放紅包的大致流程:1、用戶關注公眾號;2、驗證并綁定用戶,主要是后臺系統(tǒng)錄入用戶姓名手機號等信息,在微信公眾號中根據(jù)手機短信驗證碼將用戶的openid與后臺系統(tǒng)的用戶信息綁定;3、用戶上傳相關憑證;4、后臺人工審核;5、發(fā)送紅包;6、查詢發(fā)送成果.
以上是大致的流程,但對于不同的業(yè)務場景可能有些步驟可以省略或者必要增加步驟;以上主要是針對促銷員獎勵功能的實際應用步驟.
1、申請認證服務號,然后申請微信支付功能:
微信紅包功能位置
2、點擊產(chǎn)物設置,設置微信紅包的參數(shù):
設置微信紅包的參數(shù)
3、點擊開發(fā)文檔,查看微信紅包的相關開發(fā)文檔,進行開發(fā):
開發(fā)文檔
//微信服務號單個紅包發(fā)送的功能實現(xiàn),使用了CI框架,數(shù)據(jù)庫是mysql
//數(shù)據(jù)表wx_hongbao中存放的是紅包待發(fā)送隊列
protected function _sendsinglehongbao($fid)//$fid是發(fā)送隊列表wx_hongbao的主鍵
{
//防止重新發(fā)放,只要有狀態(tài)成果都不再發(fā)送,openid不正確的也跳過
$row=$this->db->query("select * from wx_hongbao where fid='".$fid."' and LENGTH(fopenid)>10")->row_array();
if($row['fid']=='')
{
return 'checkerror:紅包記錄無或紅包信息不完整或openid差錯';
}
else
{
if($row['fsendresult']!==NULL&&$row['fsendresult']!=='')
return 'checkerror:不克不及重復發(fā)送紅包';
else
{
$fopenid=$row['fopenid'];
$famt=$row['famt']*100;
$fmemo=$row['fhongbaoname'].'-'.$row['fhongbaomemo'];
}
}
if($famt>20000)
return 'checkerror:單個紅包金額不克不及超過200元';
//檢查余額限制,wx_balance表中可以擴充類型進行控制,好比對每個用戶進行余額限制
$row=$this->db->query("select fbalanceamt from wx_balance")->row_array();
$fbalanceamt=$row['fbalanceamt'];
if(is_numeric($fdeptamt))
{
if($fbalanceamt<$famt/100)
return 'checkerror:余額不敷';
}
else
return 'checkerror:余額異常';
//檢查當天用戶接收紅包個數(shù),跨越10個則終止發(fā)送
$today=date("Y-m-d");
$starttime=strtotime($today);
$endtime=strtotime($today.' 23:59:59');
$row=$this->db->query("select count(fid) as fcount from wx_hongbao where fopenid='".$fopenid
."' and fsendresult!='返回失敗' and fsendtime>".$starttime." and fsendtime<".$endtime)->row_array();
$fcount=$row['fcount'];
if($fcount>=10)
{
return 'checkerror:用戶當天接收紅包超10個';
}
//微信紅包api調用發(fā)紅包
$MCHID='xxxxxxxxxx';//微信支付商戶號
$KEY='1ADxxxxxxxxxxxxxxxxxx75C';//本身在微信支付商戶后臺設置的API密鑰
$mch_billno=$MCHID.date("Ymd").substr('000000000'.$fid,-10);//生成訂單號
$url='https://api.mch.weixin.qq.com/mmpaymkttransfers/sendredpack';//現(xiàn)金紅包哀求地址
$data = array(
'nonce_str' => $this->createNonceStr(),
'mch_billno' =>$mch_billno, //訂單號
'mch_id' => $MCHID,
'wxappid' => $this->wx_config['appid'],
'send_name' => 'xxxx',
're_openid' => $fopenid,
'total_amount' => $famt,
'total_num' => 1, //發(fā)放送人數(shù)
'wishing' => $fmemo, //祝福語
'client_ip' => '61.xxx.xxx.xxx', //調用服務器ip
'act_name' => '員工獎勵', //活動名稱
'remark' => 'xxxx員工獎勵!', //備注
'scene_id' => 'PRODUCT_4', //發(fā)放紅包使用場景,紅包金額大于200時必傳
);
//提前更新,防止網(wǎng)絡差錯造成沒有返回信息
$this->db->query("update wx_hongbao set fsendtime=".time().",mch_billno='".$mch_billno."' where fid= ".$fid);
$data['sign'] = $this->sign($data,$KEY);
$result = $this->curl_post_ssl($url, $this->toxml($data));//哀求發(fā)送紅包
//保留接收到微信回復消息,用于異常問題排查
$filename='sendhongbao'.date ('Ymdh', time () ).'.txt';
$filePath = getcwd()."/uploadfiles/weixinmsg/".$filename;
$myfile = fopen($filePath, "a+") or die("Unable to open file!");
fwrite($myfile, $result."\r\n\r\n");
fclose($myfile);
//處理微信支付返回成果
$result = $this->fromxml($result);
if(!empty($result) && $result['return_code'] == 'SUCCESS' && $result['result_code'] == 'SUCCESS')
{
$data = array(
'return_msg'=> $result['return_msg'].'_初始狀態(tài):發(fā)送勝利',
'send_listid' => $result['send_listid'],
'fsendopenid' => $result['re_openid'],
'fsendresult'=>'發(fā)送勝利'
);
$this->db->update('wx_hongbao', $data, "fid = ".$fid." and (fsendresult='' or fsendresult is null)");
$data = array(
'fhongbaoid' => $fid,
'famt' => ($famt/100),
'fsendtime' => time(),
'fmemo'=>wxmsg:'.$result['return_msg'].',wxmcno:'.$result['mch_billno']
);
$this->db->insert('wx_log', $data);
return 'success';
}
else
{
$return_msg='失敗';
if(strstr($result['return_msg'],"請稍后使用原單號查詢發(fā)放結果"))//此種情況是微信沒有返回結果,但往往發(fā)送勝利
$return_msg='稍后查詢成果';
$data = array(
'return_msg'=> $result['return_msg'].'_初始狀態(tài):'.$return_msg,
'send_listid' => $result['send_listid'],
'fsendopenid' => $result['re_openid'],
'fsendresult'=>$return_msg
);
$this->db->update('wx_hongbao', $data, "fid = ".$fid." and (fsendresult='' or fsendresult is null)");
return 'error:紅包發(fā)送返回失敗';
}
}
備注:對于更多代碼功能歡迎交流學習,個人實際應用的項目是實現(xiàn)了匆匆銷員的獎勵.
轉載請注明本頁網(wǎng)址:
http://www.snjht.com/jiaocheng/10609.html