《微信服務(wù)號(hào)發(fā)送營銷紅包給關(guān)注用戶步驟及部分php代碼》要點(diǎn):
本文介紹了微信服務(wù)號(hào)發(fā)送營銷紅包給關(guān)注用戶步驟及部分php代碼,希望對(duì)您有用。如果有疑問,可以聯(lián)系我們。
維易PHP培訓(xùn)學(xué)院每天發(fā)布《微信服務(wù)號(hào)發(fā)送營銷紅包給關(guān)注用戶步驟及部分php代碼》等實(shí)戰(zhàn)技能,PHP、MYSQL、LINUX、APP、JS,CSS全面培養(yǎng)人才。
微信紅包
這里主要講述的是微信服務(wù)號(hào)給關(guān)注用戶發(fā)送微信紅包的相關(guān)內(nèi)容;主要使用的業(yè)務(wù)場景有:1、業(yè)務(wù)員匆匆銷員的獎(jiǎng)勵(lì);2、現(xiàn)場會(huì)議互動(dòng)抽獎(jiǎng);3、微信推廣轉(zhuǎn)發(fā)獎(jiǎng)勵(lì);4、其他等等等,大開腦洞想把.
發(fā)放紅包的大致流程:1、用戶關(guān)注公眾號(hào);2、驗(yàn)證并綁定用戶,主要是后臺(tái)系統(tǒng)錄入用戶姓名手機(jī)號(hào)等信息,在微信公眾號(hào)中根據(jù)手機(jī)短信驗(yàn)證碼將用戶的openid與后臺(tái)系統(tǒng)的用戶信息綁定;3、用戶上傳相關(guān)憑證;4、后臺(tái)人工審核;5、發(fā)送紅包;6、查詢發(fā)送成果.
以上是大致的流程,但對(duì)于不同的業(yè)務(wù)場景可能有些步驟可以省略或者必要增加步驟;以上主要是針對(duì)促銷員獎(jiǎng)勵(lì)功能的實(shí)際應(yīng)用步驟.
1、申請(qǐng)認(rèn)證服務(wù)號(hào),然后申請(qǐng)微信支付功能:
微信紅包功能位置
2、點(diǎn)擊產(chǎn)物設(shè)置,設(shè)置微信紅包的參數(shù):
設(shè)置微信紅包的參數(shù)
3、點(diǎn)擊開發(fā)文檔,查看微信紅包的相關(guān)開發(fā)文檔,進(jìn)行開發(fā):
開發(fā)文檔
//微信服務(wù)號(hào)單個(gè)紅包發(fā)送的功能實(shí)現(xiàn),使用了CI框架,數(shù)據(jù)庫是mysql
//數(shù)據(jù)表wx_hongbao中存放的是紅包待發(fā)送隊(duì)列
protected function _sendsinglehongbao($fid)//$fid是發(fā)送隊(duì)列表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差錯(cuò)';
}
else
{
if($row['fsendresult']!==NULL&&$row['fsendresult']!=='')
return 'checkerror:不克不及重復(fù)發(fā)送紅包';
else
{
$fopenid=$row['fopenid'];
$famt=$row['famt']*100;
$fmemo=$row['fhongbaoname'].'-'.$row['fhongbaomemo'];
}
}
if($famt>20000)
return 'checkerror:單個(gè)紅包金額不克不及超過200元';
//檢查余額限制,wx_balance表中可以擴(kuò)充類型進(jìn)行控制,好比對(duì)每個(gè)用戶進(jìn)行余額限制
$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:余額異常';
//檢查當(dāng)天用戶接收紅包個(gè)數(shù),跨越10個(gè)則終止發(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:用戶當(dāng)天接收紅包超10個(gè)';
}
//微信紅包api調(diào)用發(fā)紅包
$MCHID='xxxxxxxxxx';//微信支付商戶號(hào)
$KEY='1ADxxxxxxxxxxxxxxxxxx75C';//本身在微信支付商戶后臺(tái)設(shè)置的API密鑰
$mch_billno=$MCHID.date("Ymd").substr('000000000'.$fid,-10);//生成訂單號(hào)
$url='https://api.mch.weixin.qq.com/mmpaymkttransfers/sendredpack';//現(xiàn)金紅包哀求地址
$data = array(
'nonce_str' => $this->createNonceStr(),
'mch_billno' =>$mch_billno, //訂單號(hào)
'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', //調(diào)用服務(wù)器ip
'act_name' => '員工獎(jiǎng)勵(lì)', //活動(dòng)名稱
'remark' => 'xxxx員工獎(jiǎng)勵(lì)!', //備注
'scene_id' => 'PRODUCT_4', //發(fā)放紅包使用場景,紅包金額大于200時(shí)必傳
);
//提前更新,防止網(wǎng)絡(luò)差錯(cuò)造成沒有返回信息
$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ā)送紅包
//保留接收到微信回復(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'],"請(qǐng)稍后使用原單號(hào)查詢發(fā)放結(jié)果"))//此種情況是微信沒有返回結(jié)果,但往往發(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ā)送返回失敗';
}
}
備注:對(duì)于更多代碼功能歡迎交流學(xué)習(xí),個(gè)人實(shí)際應(yīng)用的項(xiàng)目是實(shí)現(xiàn)了匆匆銷員的獎(jiǎng)勵(lì).
轉(zhuǎn)載請(qǐng)注明本頁網(wǎng)址:
http://www.fzlkiss.com/jiaocheng/10609.html