淘寶店鋪一鍵鋪貨軟件推薦:淘寶客助手哪個好

上一節中,我們利用大淘客的API查詢商鋪的詳情數據,裏面的數據也不是很完善,有些新產品我們還是會查詢不到,所以我們需要對它進行修改,我們這一節就暫時就放一放,我們留到下一節講解這個詳情如何修改,我們今天要說的如何是在這個淘寶客系統接入我們的微信公眾號,實現一個產品查詢的功能,比如我們輸入衣架就出現產品的信息數據。具體效果如下:

快速開發淘寶客系統-利用現有的數據接入微信公眾號
快速開發淘寶客系統-利用現有的數據接入微信公眾號

接入微信公眾號,那麼一定需要開通微信公眾號,並且也打開了開發者模式,那麼我這裡就不做詳細的介紹,具體可以在微信公眾號平台上面查看文檔了。

根據微信的開發文檔,我們要接入微信公眾號的回復需要做到以下三個步驟

1、填寫服務器配置

2、驗證服務器地址的有效性

3、依據接口文檔實現業務邏輯

我們直接跳過申請公眾號的步驟,然後看看如何驗證服務器,在微信公眾號平台後台,找到開發的基本配置,如下圖:

快速開發淘寶客系統-利用現有的數據接入微信公眾號

然後,我們需要在我們的服務器填入一個驗證服務器的PHP文件,我這裡填寫了

http://www.yeehot.com/DaoGou/weixin.php,關於這個文件,等下我回講解如何實現。

這裡的token我們可以填入我們自己的一個數據,類似密碼一樣。

快速開發淘寶客系統-利用現有的數據接入微信公眾號

上面我們有個weixin.php文件,我們這個文件需要放到我們外網的服務器進行驗證的。

那麼裏面有哪些信息,主要就是驗證信息以及回複信息

首先,我們說一下驗證信息的文件.同樣根據微信的文檔的說明,驗證微信服務器發生的數據算法主要如下:

1)將token、timestamp、nonce三個參數進行字典序排序

2)將三個參數字符串拼接成一個字符串進行sha1加密

3)開發者獲得加密後的字符串可與signature對比,標識該請求來源於微信

那麼我們可以寫一個這樣的校驗函數。注意這裡我們需要用到我們剛剛在微信後台填寫的token。

private function checkSignature()

{

$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 ){

return true;

}else{

return false;

}

}

此外,我們知道微信根據客戶端的請求而會發送很多數據到我們的服務器,然而發送驗證數據是會帶上echostr這個字段,那麼我們可以對這個字段進行判斷,判斷是驗證信息還是其他的信息。

剛剛有了這個校驗函數後,我們就可以校驗了,但是為了讓我們的代碼可以更加有重用性,我們寫了一個類,注意就是用於驗證。代碼如下:

class weixin{

public function checkWeixinInfo(){

$echostr=$_GET[“echostr”];

if($this->checkSignature()){

echo $echostr;

exit;

}

}

private function checkSignature()

{

$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 ){

return true;

}else{

return false;

}

}

}

剛剛我們說到微信會根據客戶端的不同請求而發送不同的數據到我們的服務器,那麼我們可以根據相應的邏輯而做出處理從而提取到我們的消息內容。

這裡我們根據echostr有這個參數而做出不同的處理,如果不是的話我們就判斷是接受其他消息。

我們知道微信發送的消息都是XML格式的,所以我們將POST的原始數據進行處理,例如下面

$infoobj=simplexml_load_string($data,’SimpleXMLElement’,LIBXML_NOCDATA);

然後我們可以進行數據的處理了,對於收消息我們可以看一下這裡文檔

https://mp.weixin.qq.com/wiki/10/79502792eef98d6e0c6e1739da387346.html

首先我們判斷一下數據的類型

$msg_type=trim($infoobj->MsgType);

我們由於是根據用戶輸入的文本內容來查詢數據的,所以我們可以判斷$msg_type為text類型就可以了

,然後我們就可以提起用戶的內容,這個作為我們查詢商品的關鍵詞,然後進行數據庫操作。部分代碼如下:

case “text”:

{

$content=array();

$keyword=trim($infoobj->Content);

$res1 = mysql_query(“select * from yeehot_taobaoke_product where name like ‘%$keyword%’ order by shopid asc limit 0,7”);

while ($row1 = mysql_fetch_array($res1)) {

$content[]=array(“Title”=>$row1[‘name’],”Description”=>”銷售價格:”.$row1[‘price’], “PicUrl”=>$row1[‘image’], “Url” =>$row1[‘tbk_link’]);

}

完成上面的操作,我們需要回復內容給用戶。那麼我們也需要看一下回復內容,可以看微信文檔發送的內容。

https://mp.weixin.qq.com/wiki/14/89b871b5466b19b3efa4ada8e577d45e.html

我們回復的是圖文,格式如下:

<xml>

<ToUserName><![CDATA[toUser]]></ToUserName>

<FromUserName><![CDATA[fromUser]]></FromUserName>

<CreateTime>12345678</CreateTime>

<MsgType><![CDATA[news]]></MsgType>

<ArticleCount>2</ArticleCount>

<Articles>

<item>

<Title><![CDATA[title1]]></Title>

<Description><![CDATA[description1]]></Description>

<PicUrl><![CDATA[picurl]]></PicUrl>

<Url><![CDATA[url]]></Url>

</item>

<item>

<Title><![CDATA[title]]></Title>

<Description><![CDATA[description]]></Description>

<PicUrl><![CDATA[picurl]]></PicUrl>

<Url><![CDATA[url]]></Url>

</item>

</Articles>

</xml>

那麼我們可以根據剛剛數據庫查詢的數據進行處理

$info1= “<item>

<Title><![CDATA[%s]]></Title>

<Description><![CDATA[%s]]></Description>

<PicUrl><![CDATA[%s]]></PicUrl>

<Url><![CDATA[%s]]></Url>

</item>

“;

$info_str=””;

foreach ($content as $item){

$info_str.= sprintf($info1, $item[‘Title’], $item[‘Description’], $item[‘PicUrl’], $item[‘Url’]);

}

$responsTpl = “<xml>

<ToUserName><![CDATA[%s]]></ToUserName>

<FromUserName><![CDATA[%s]]></FromUserName>

<CreateTime>%s</CreateTime>

<MsgType><![CDATA[news]]></MsgType>

<Content><![CDATA[]]></Content>

<ArticleCount>%s</ArticleCount>

<Articles>

%s

</Articles>

</xml>”;

$result =sprintf($responsTpl, $infoobj->FromUserName, $infoobj->ToUserName, time().””, count($content).””,$info_str);

然後我們將這些結果輸出給微信服務器就可以了。

原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/212138.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
投稿專員的頭像投稿專員
上一篇 2024-12-08 17:18
下一篇 2024-12-08 17:18

相關推薦

發表回復

登錄後才能評論