2022-03-17 10:40:47 - 米境通跨境電商
我們利用大淘客的API查詢商鋪的詳情數(shù)據(jù),里面的數(shù)據(jù)也不是很完善,有些新產(chǎn)品我們還是會(huì)查詢不到,所以我們需要對(duì)它進(jìn)行修改,我們這一節(jié)就暫時(shí)就放一放,我們留到下一節(jié)講解這個(gè)詳情如何修改,我們今天要說的如何是在這個(gè)淘寶客系統(tǒng)接入我們的微信公眾號(hào),實(shí)現(xiàn)一個(gè)產(chǎn)品查詢的功能,比如我們輸入衣架就出現(xiàn)產(chǎn)品的信息數(shù)據(jù)。具體效果如下:
淘寶客助手哪個(gè)好(淘寶店鋪一鍵鋪貨軟件推薦)淘寶客助手哪個(gè)好(淘寶店鋪一鍵鋪貨軟件推薦)
接入微信公眾號(hào),那么一定需要開通微信公眾號(hào),并且也打開了開發(fā)者模式,那么我這里就不做詳細(xì)的介紹,具體可以在微信公眾號(hào)平臺(tái)上面查看文檔了。
根據(jù)微信的開發(fā)文檔,我們要接入微信公眾號(hào)的回復(fù)需要做到以下三個(gè)步驟
1、填寫服務(wù)器配置
2、驗(yàn)證服務(wù)器地址的有效性
3、依據(jù)接口文檔實(shí)現(xiàn)業(yè)務(wù)邏輯
我們直接跳過申請(qǐng)公眾號(hào)的步驟,然后看看如何驗(yàn)證服務(wù)器,在微信公眾號(hào)平臺(tái)后臺(tái),找到開發(fā)的基本配置,如下圖:
淘寶客助手哪個(gè)好(淘寶店鋪一鍵鋪貨軟件推薦)
然后,我們需要在我們的服務(wù)器填入一個(gè)驗(yàn)證服務(wù)器的PHP文件,我這里填寫了
這里的token我們可以填入我們自己的一個(gè)數(shù)據(jù),類似密碼一樣。
淘寶客助手哪個(gè)好(淘寶店鋪一鍵鋪貨軟件推薦)
上面我們有個(gè)weixin.php文件,我們這個(gè)文件需要放到我們外網(wǎng)的服務(wù)器進(jìn)行驗(yàn)證的。
那么里面有哪些信息,主要就是驗(yàn)證信息以及回復(fù)信息
首先,我們說一下驗(yàn)證信息的文件.同樣根據(jù)微信的文檔的說明,驗(yàn)證微信服務(wù)器發(fā)生的數(shù)據(jù)算法主要如下:
1)將token、timestamp、nonce三個(gè)參數(shù)進(jìn)行字典序排序
2)將三個(gè)參數(shù)字符串拼接成一個(gè)字符串進(jìn)行sha1加密
3)開發(fā)者獲得加密后的字符串可與signature對(duì)比,標(biāo)識(shí)該請(qǐng)求來源于微信
那么我們可以寫一個(gè)這樣的校驗(yàn)函數(shù)。注意這里我們需要用到我們剛剛在微信后臺(tái)填寫的token。
privatefunctioncheckSignature()
{
$signature=$_GET[“signature”];
$timestamp=$_GET[“timestamp”];
$nonce=$_GET[“nonce”];
$token=”wx111111″;
$signinfo=array();
$signinfo=array($timestamp,$nonce,$token);
sort($signinfo);
$result=sha1(implode($signinfo));
if($result==$signature){
returntrue;
}else{
returnfalse;
}
}
此外,我們知道微信根據(jù)客戶端的請(qǐng)求而會(huì)發(fā)送很多數(shù)據(jù)到我們的服務(wù)器,然而發(fā)送驗(yàn)證數(shù)據(jù)是會(huì)帶上echostr這個(gè)字段,那么我們可以對(duì)這個(gè)字段進(jìn)行判斷,判斷是驗(yàn)證信息還是其他的信息。
剛剛有了這個(gè)校驗(yàn)函數(shù)后,我們就可以校驗(yàn)了,但是為了讓我們的代碼可以更加有重用性,我們寫了一個(gè)類,注意就是用于驗(yàn)證。代碼如下:
classweixin{
publicfunctioncheckWeixinInfo(){
$echostr=$_GET[“echostr”];
if($this->checkSignature()){
echo$echostr;
exit;
}
}
privatefunctioncheckSignature()
{
$signature=$_GET[“signature”];
$timestamp=$_GET[“timestamp”];
$nonce=$_GET[“nonce”];
$token=”111″;
$signinfo=array();
$signinfo=array($timestamp,$nonce,$token);
sort($signinfo);
$result=sha1(implode($signinfo));
if($result==$signature){
returntrue;
}else{
returnfalse;
}
}
}
剛剛我們說到微信會(huì)根據(jù)客戶端的不同請(qǐng)求而發(fā)送不同的數(shù)據(jù)到我們的服務(wù)器,那么我們可以根據(jù)相應(yīng)的邏輯而做出處理從而提取到我們的消息內(nèi)容。
這里我們根據(jù)echostr有這個(gè)參數(shù)而做出不同的處理,如果不是的話我們就判斷是接受其他消息。
我們知道微信發(fā)送的消息都是XML格式的,所以我們將POST的原始數(shù)據(jù)進(jìn)行處理,例如下面
$infoobj=simplexml_load_string($data,’SimpleXMLElement’,LIBXML_NOCDATA);
然后我們可以進(jìn)行數(shù)據(jù)的處理了,對(duì)于收消息我們可以看一下這里文檔
https://mp.weixin.qq.com/wiki/10/79502792eef98d6e0c6e1739da387346.html
首先我們判斷一下數(shù)據(jù)的類型
$msg_type=trim($infoobj->MsgType);
我們由于是根據(jù)用戶輸入的文本內(nèi)容來查詢數(shù)據(jù)的,所以我們可以判斷$msg_type為text類型就可以了
,然后我們就可以提起用戶的內(nèi)容,這個(gè)作為我們查詢商品的關(guān)鍵詞,然后進(jìn)行數(shù)據(jù)庫(kù)操作。部分代碼如下:
case“text”:
{
$content=array();
$keyword=trim($infoobj->Content);
$res1=mysql_query(“select*fromyeehot_taobaoke_productwherenamelike‘%$keyword%’orderbyshopidasclimit0,7”);
while($row1=mysql_fetch_array($res1)){
$content[]=array(“Title”=>$row1[‘name’],”Description”=>”銷售價(jià)格:”.$row1[‘price’],“PicUrl”=>$row1[‘image’],“Url”=>$row1[‘tbk_link’]);
}
完成上面的操作,我們需要回復(fù)內(nèi)容給用戶。那么我們也需要看一下回復(fù)內(nèi)容,可以看微信文檔發(fā)送的內(nèi)容。
https://mp.weixin.qq.com/wiki/14/89b871b5466b19b3efa4ada8e577d45e.html
我們回復(fù)的是圖文,格式如下:
12345678
2
那么我們可以根據(jù)剛剛數(shù)據(jù)庫(kù)查詢的數(shù)據(jù)進(jìn)行處理
$info1=“
“;
$info_str=””;
foreach($contentas$item){
$info_str.=sprintf($info1,$item[‘Title’],$item[‘Description’],$item[‘PicUrl’],$item[‘Url’]);
}
$responsTpl=“
%s
%s
%s
”;
$result=sprintf($responsTpl,$infoobj->FromUserName,$infoobj->ToUserName,time().””,count($content).””,$info_str);
然后我們將這些結(jié)果輸出給微信服務(wù)器就可以了。