用PHP搭建微信公眾號淘客三合一系統
阿新 • • 發佈:2020-11-06
用PHP搭建微信公眾號淘客三合一系統
這次小編來講解一下如何在公眾號的搭建淘客三合一系統,php搭建教程接下來會講解
可以參考我上次方包部落格上與大家分享的文章:淘寶京東拼多多三合一淘客系統CMS,PHP原始碼搭建教程
教大家如何在伺服器或虛擬主機搭建三合一cms商城系統,免費搭建教程無私分享給大家!!
首先請大家看看搭建後的效果如下圖 demo:優惠多多公眾號demo:關注公眾號“網購領優惠券”,回覆商品關鍵詞,即可領取優惠券
搭建教程:
1.PHP接入微信公眾號(即php建立與公眾號通訊,並顯示通訊成功才可以)
前提
- 伺服器資源:你需要擁有一臺公網伺服器資源(阿里雲、騰訊雲或者其他雲資源)
- 伺服器環境:推薦使用LNMP環境,完美契合PHP開發。(請確保你的伺服器已經成功執行PHP,有不清楚的可以私聊樓主)
- 公眾號資源:如果沒有公眾號,先去公眾號平臺申請微信公眾平臺。一般個人只能申請訂閱號。
- 技術要求:掌握一定的程式碼能力即可
開發配置
- 登入公眾平臺後點擊
開發
->基本配置
- 獲取開發者密碼並儲存(
請儲存在只有你能看到的地方
) - 新增IP白名單(加上你的伺服器公網IP)
- 填寫伺服器配置。伺服器地址可以用IP也可以用域名,填寫你的指令碼地址(用於微信接入),token自定義,AESKEY隨機生成即可,訊息方式選安全模式。
- 當然,以上資訊請儲存到專案裡來呼叫。在這裡先別點提交!
指令碼開發
- 接下來只要把你在上一步填寫的連結地址中的介面開發完成即可。
- 可以直接copy程式碼進去。文件說明微信開發文件(文件的demo不是接入的。。)
將下面的demo複製copy到伺服器的根目錄下,注意伺服器必須搭建好php環境,並且是建立新的站點,並且埠號務必是80埠
respond.php
/** * wechat php test */ //define your token define("TOKEN", "weixin"); //此處weixin為上圖紅色字的token值 $wechatObj = new wechatCallbackapiTest(); $wechatObj->valid();
class wechatCallbackapiTest
{
public function valid()
{
$echoStr = $_GET["echostr"];
//valid signature , option
if($this->checkSignature()){
echo $echoStr;
exit;
}
}
public function responseMsg()
{
//get post data, May be due to the different environments
$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
//extract post data
if (!empty($postStr)){
$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
$fromUsername = $postObj->FromUserName;
$toUsername = $postObj->ToUserName;
$keyword = trim($postObj->Content);
$time = time();
$textTpl = "<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[%s]]></MsgType>
<Content><![CDATA[%s]]></Content>
<FuncFlag>0</FuncFlag>
</xml>";
if(!empty( $keyword ))
{
$msgType = "text";
$contentStr = "Welcome to wechat world!";
$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
echo $resultStr;
}else{
echo "Input something...";
}
}else {
echo "";
exit;
}
}
private function checkSignature()
{
$signature = $_GET["signature"];
$timestamp = $_GET["timestamp"];
$nonce = $_GET["nonce"];
$token = TOKEN;
$tmpArr = array($token, $timestamp, $nonce);
sort($tmpArr);
$tmpStr = implode( $tmpArr );
$tmpStr = sha1( $tmpStr );
if( $tmpStr == $signature ){
return true;
}else{
return false;
}
}
}
大功告成(點選提交會顯示配置成功)
- 完成上述步驟後,點選提交,就會看到配置成功啦!
可能出現的問題
token解析失敗
:說明你的介面沒有返回服務錯誤
:你的伺服器可能有問題,嘗試下自己能否訪問介面
如果還是配置失敗,請看這遍文章:https://blog.csdn.net/u012729832/article/details/79754095這裡附上配置表單,我傻逼一開始不知道什麼意思,以為填寫了url 和令牌 就可以成功 誰知道一直出現 ,token驗證失敗的資訊。
大功告成之後請看接來了內容!!
2.php如何利用公眾號搭建三合一淘客系統?
重點來了!首先把原來的respond.php刪掉,在新建一個檔案index.php檔案,把下面程式碼拷貝到伺服器站點根目錄。並且開發者—基本配置—伺服器配置 也要修改伺服器地址,請務必確保伺服器路徑正確!如下圖:
index.php
<?php
header("Content-type: text/html; charset=utf-8");
$nonce = $_GET['nonce'];
$token = 'weixin';
$timestamp = $_GET['timestamp'];
if (isset($_GET['echostr'])) {
if (bindServerCheck()) {
echo $_GET['echostr'];
}
exit();
}
responseMsg();
//訊息回覆
function responseMsg() {
//1.獲取到微信推送過來post資料(xml格式)
$postArr = file_get_contents("php://input");
//libxml_disable_entity_loader(true);
//2.處理訊息型別,並設定回覆型別和內容
$postObj = simplexml_load_string($postArr, 'SimpleXMLElement', LIBXML_NOCDATA);
//判斷該資料包是否是訂閱de事件推送
if (strtolower($postObj->MsgType) == 'event') {
//如果是關注 subscribe事件
if (strtolower($postObj->Event) == 'subscribe') {
$toUser = $postObj->FromUserName;
$fromUser = $postObj->ToUserName;
$time = time();
$msgType = 'text';
$content = '歡迎關注“網購領優惠券”,若有疑問聯絡微訊號:dafang1688~直接回復訊息,如搜尋關鍵詞:“鉛筆”,即可獲得“鉛筆的優惠券”,或者點選以下網站連結選擇自己喜歡的商品優惠券!
連結如下:
<a href="http://www.fang1688.cn:3005">淘寶天貓拼多多京東四合一商城---入口地址</a>
<a href="http://fbao.yhzu.cn/">淘寶天貓優惠券---入口地址</a>
<a href="http://www.fang1688.cn:3006">京東優惠券---入口地址</a>
<a href="https://p.pinduoduo.com/s6Cbmn5Z">拼多多優惠券---入口地址</a>
<a href="https://i.meituan.com/awp/hfe/block/a945391288b790d558b7/78716/index.html">外賣優惠券---入口地址</a>
<a href="http://www.fang1688.cn:3008/pay/hongbao.jpg">領取支付寶紅包---入口地址</a>
<a href="https://p.pinduoduo.com/dzzb98A3">1.9元包郵---入口地址</a>';
//修改為
if (is_utf8($content)) {
$content = $content;
} else {
$content = iconv('gb2312', 'UTF-8//IGNORE', $content);
}
$template = "<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[%s]]></MsgType>
<Content><![CDATA[%s]]></Content>
</xml>";
$info = sprintf($template, $toUser, $fromUser, $time, $msgType, $content);
echo $info;
}
}
if (strtolower($postObj->MsgType) == 'text') {
//如果是關注 subscribe事件
// if (strtolower($postObj->Event) == 'subscribe') {
$toUser = $postObj->FromUserName;
$fromUser = $postObj->ToUserName;
$time = time();
$msgType = 'text';
$keyword = trim($postObj->Content);