ecshop甜心100多級分銷2016旗艦版+支付+推廣二維碼+APP源碼

- 價 格: ¥ 48
- 今日價格: 有特價請聯(lián)系
- 商品庫存: 59 件
- 品牌:
- 貨號:5dceab8d89ed
- 立刻聯(lián)系購買聯(lián)系商家
- 風格類型:電子商務
- 源碼類型:PHP源碼
- 服務類型:網頁/頁面設計
Ecshop甜心100多級分銷2016旗艦版模板+支付接口+推廣二維碼+APP安卓蘋果源碼+附詳細安裝調配文檔
客戶案例:
PC端:http://www.365tsm.com
端:http://www.365tsm.com/mobile/
我們將后臺面板進行了升級,升級到了非常新的模板堂面板界面,同時集成了APP安卓蘋果源碼,并針對支付方式進行了完善和修正等等!
教程展示
APP教程(包含反編譯教程)
親測演示截圖






問題錦集(論壇收集)
A. 分銷直接獲取二維碼的實現(xiàn)
1、找到文件:mobile/distribute.php 找到如下代碼
// 第三方登錄接口
elseif($action == 'oath')
在上方添加如下代碼
//推廣二維碼
elseif($action == 'qrcode')
{
include_once(ROOT_PATH . '../wechat/callback-ent.php'); //wei信接口類
$objClass = new wechatCallbackapi();
$user_id = $_GET['affiliate'];
//$user_id = $_SESSION['user_id'];
$affiliate = unserialize($GLOBALS['_CFG']['affiliate']);
$level_register_up = (float)$affiliate['config']['level_register_up'];
$rank_points = $GLOBALS['db']->getOne(SELECT rank_points FROM . $GLOBALS['ecs']->table('users').where user_id=.$_SESSION[user_id]);
//檢查分銷商權限
if($rank_points > $level_register_up || $rank_points == $level_register_up)
{
if(!empty($user_id)){
$scene_id = $user_id;
$affiliate = $user_id;
$type = 'tj';
$user_name = $db->getOne(SELECT `user_name` FROM .$GLOBALS['ecs']->table('users'). WHERE `user_id`='$scene_id');
$base_url = $db->getOne(SELECT `cfg_value` FROM `wxch_cfg` WHERE `cfg_name`='baseurl');
$scene = $user_name;
$qr_path = $db->getOne(SELECT `qr_path` FROM `wxch_qr_tianxin100` WHERE `scene_id`='$scene_id');
if(!empty($qr_path))
{
$surl = $base_url.'wechat/qrcode/'.$qr_path;
}else{
$action_name = QR_LIMIT_SCENE;
$json_arr = array('action_name'=>$action_name,'action_info'=>array('scene'=>array('scene_id'=>$scene_id)));
$filepath = json_encode($json_arr);
$objClass->access_token($db);
$ret = $db->getRow(SELECT `access_token` FROM `wxch_config`);
$access_token = $ret['access_token'];
if(strlen($access_token) >= 64)
{
$url = 'https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token='.$access_token;
$res_json = $objClass->curl_grab_page($url, $filepath);
$json = json_decode($res_json);
}
$ticket = $json->ticket;
if($ticket)
{
$ticket_url = urlencode($ticket);
$ticket_url = 'https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket='.$ticket_url;
$imageinfo = $objClass->downloadimageformweixin($ticket_url);
$time = time();
$path = '../images/qrcode/'.$time.'.jpg';
$surl = $base_url.'images/qrcode/'.$time.'.jpg';
$local_file = fopen($path,'a');
$h_path = '../images/qrcode/head/'.$time.'.jpg';
$h_local_file = fopen($h_path,'a');
$headimgurl = $db->getOne(SELECT `headimgurl` FROM `wxch_user` WHERE `uname`='$user_name');
$h_imageinfo = $objClass->downloadimageformweixin($headimgurl);
if(false !== $local_file)
{
if(false !== fwrite($local_file, $imageinfo) && false !== fwrite($h_local_file, $h_imageinfo))
{
fclose($local_file);
$insert_sql = INSERT INTO `wxch_qr` (`type`, `action_name`, `ticket`, `scene_id`, `scene`, `qr_path`, `function`, `affiliate`, `endtime`, `dateline`) VALUES ('$type', '$action_name', '$ticket', '$scene_id', '$scene', '$surl', '$function', '$affiliate', '$endtime', '$dateline');
$db->query($insert_sql);
}
}
}
$imgsrc = ../images/qrcode/.$time..jpg;
$h_imgsrc = $time..jpg;
$width = 200;
$height = 200;
$time = time();
$name = $objClass->resizejpg($imgsrc,$width,$height,$time);
//echo $name;exit;
$imgs = $name;
$width = 60;
$height = 60;
$h_time = $time._1;
$h_name = $objClass->resizejpg($h_imgsrc,$width,$height,$h_time);
$h_imgs = $h_name;
$target = '../qrcode/tianxin100.jpg';//背景圖片
$target_img = Imagecreatefromjpeg($target);
$source = Imagecreatefromjpeg($imgs);
$h_source = Imagecreatefromjpeg($h_imgs);
imagecopy($target_img,$source,165,392,0,0,200,200);
imagecopy($target_img,$h_source,60,28,0,0,60,60);
$fontfile = ../wechat/simsun.ttf;
$nickname = $db->getOne(SELECT `nickname` FROM `wxch_user` WHERE `uname`='$scene');
$textcolor = imagecolorallocate($target_img, 0, 0, 255);
imagettftext($target_img,18,0,268,59,$textcolor,$fontfile,$nickname);
imagejpeg($target_img,'../wechat/qrcode/'.$time.'.jpg');
$s_data = $time..jpg;
$surl = $base_url.'wechat/qrcode/'.$s_data;
$insert_sql = INSERT INTO `wxch_qr_tianxin100` (`qr_path`, `scene`, `scene_id`, `nickname`) VALUES ('$s_data', '$scene', '$scene_id', '$nickname');
$db->query($insert_sql);
}
}
}else{
show_message('您還不是分銷商,不能獲取二維碼', '請先購買商品獲取權限', 'distribute.php', 'error');
}
$smarty->assign('qrcode', $surl);
$smarty->display('distribute.dwt');
}
找到文件mobile/distribute.php
/* 顯示頁面的action列表 */
$ui_arr = array('register', 'login', 'profile','dianpu', 'act_dianpu', 'order_list',
修改為
/* 顯示頁面的action列表 */
$ui_arr = array('register', 'login', 'profile','dianpu', 'qrcode', 'act_dianpu', 'order_list',
2、找到文件:mobile/themes/miqinew/distribute.dwt 找到如下代碼
<li onclick=location.href='user.php?act=dianpu'><span class=icon> </span><span>修改店鋪名</span> <i></i></li>
在以上代碼下面添加代碼
<li onclick=location.href='distribute.php?act=qrcode&affiliate={$user_id}'><span class=icon> </span><span>我的二維碼</span> <i></i></li>
繼續(xù)找到 <!-- /一級分銷 S--> <!-- {if $action eq 'fenxiao1'} -->
在以上代碼上面添加代碼
<!-- 我的二維碼 S -->
<!-- {if $action eq 'qrcode'} -->
<header id=header>
<div class=header_l header_return> <a class=ico_10 href=distribute.php> 返回 </a> </div>
<h1> 我的二維碼</h1>
</header>
<div class=m-wrap>
<div class=common-wrapper>
<dl class=text-descript>
<dt>二維碼推廣三部曲:</dt>
<dd>1、長按下方二維碼圖片,保存圖片到相冊。</dd>
<dd>2、發(fā)送二維碼圖片到朋友圈或wei信好友!</dd>
<dd>3、wei信好友通過你發(fā)送出去的二維碼成功關注xxxwei信公眾號,并進入商城,自動成為你的會員。你的所有會員消費,你都可以獲得分傭提成!</dd>
</dl>
</div>
<div class=qr-img>
<img alt=我的推廣二維碼 src={$qrcode} />
</div>
</div>
<!-- {/if} -->
<!-- 我的二維碼 E -->
3、找到文件:wechat/callback-ent.php 搜索如下代碼
private function resizejpg($imgsrc,$imgwidth,$imgheight,$time)
修改為 function resizejpg($imgsrc,$imgwidth,$imgheight,$time)
繼續(xù)搜索 header(Content-type: image/jpg);
將其修改為 //header(Content-type: image/jpg);
OK,功能實現(xiàn)過程到此結束。(要 注意的是,如果你有修改過二維碼圖片、或字體等,請根據(jù)你現(xiàn)在的程序來進行修改。此版本是完全根據(jù)甜心安裝付費二維碼功能后的初始程序代碼上寫的,有很多 付費功能的私有類、方法等!請悉知。)。此功能實現(xiàn)的二維碼圖片和甜心官方提供的wei信菜單獲取到的二維碼圖片是一樣的效果,生成的圖片也是一樣的。用戶進 入商城后,只要是具有分銷商權限都可以獲取到二維碼,當然,沒有分銷商權限也是無法看到查詢菜單的。由于代碼是從別的項目上移植過來的,所以可能會有冗 余,懂的人自己去處理吧!
B.“該公眾號暫時無法提供服務”付費二維碼非常好解決方案
需要實現(xiàn)功能的幾個核心參數(shù)值分別是:access_token(原則上來講,這個是不應該考慮在內的,因為所有wei信消息功能都需要用到這個參數(shù)值,但實際上安裝后其他功能是能夠正常返回的。),ticket(用于wei信創(chuàng)建場景二維碼后取回二維碼必須用到的參數(shù)值),media_id(這個是用于取回媒體{圖片}上傳到wei信服務器后,取回媒體的核心參數(shù))。
經 過調試,前兩個參數(shù)都是沒有問題的,可以正常輸出(由于沒有接觸過wei信二次開發(fā),所以這里調試的方法,我用的是甜心的文本消息回復接口的方式來進行調試 的)。但是后面的這個media_id無論如何都無法返回,那基本上可以確定是程序在上傳二維碼到wei信服務器的過程中出現(xiàn)了問題!實際上,在程序上傳二維 碼到wei信服務器之前是有將非常終的二維碼存儲到數(shù)據(jù)庫的這么一個過程。代碼如下:
$insert_sql = INSERT INTO `wxch_qr_tianxin100` (`qr_path`,`scene`,`scene_id`, `nickname`) VALUES
('$s_data','$scene', '$scene_id','$nickname');
在上一句代碼之前還有一句代碼如下: $data=dirname(__FILE__).qrcode/.$time..jpg;
上面這一句代碼看上去是沒有任何問題的,將非常終二維碼在服務器中的非常好路徑賦值給變量$data(這個是處理二維碼上傳的關鍵變量。)輸出結果如:/www/web/xxx/xxxxqrcode/123123123.jpg;輸出的結果少了一個斜杠“/”,dirname(__FILE__) 這個PHP中的常數(shù)是取當前文件的部分路徑的意思,而它返回的結果是不包含斜杠“/”的。至于這里甜心為什么要這么寫,這里就涉及到一個問題。在Windows服務器上,我們文件的路徑格式為:abcaaa.jpg 這種格駛而在Linux服務器上,我們文件的路徑格式為:/a/b/c/aaa.jpg 這種格駛修改如下:
$data = dirname(__FILE__)./.qrcode/.$time..jpg; //這里有幾處需要修改,自己文件中搜索關鍵代碼“dirname(__FILE__)”全部修改即可。修改的文件是wechat目錄下的 callback-ent.php文件。如果你在修改完后發(fā)現(xiàn)依然不能解決問題,那就可能是你服務器的問題了,我這里針對的是Linux服務器,如果你的 是Windows服務器,就根據(jù)我上面說的,嘗試將路徑符號修改為“”。
如果還不能解決問題,那肯定問題就出現(xiàn)在回復二維碼圖片給用戶這里了!
$msgType = image;
$iipp = $_SERVER[REMOTE_ADDR];
$phone_state = $_SERVER[HTTP_USER_AGENT];
$contentStr = $json->media_id; //取回media_id
$resultStr = sprintf($imageTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
//將用戶提交信息的返回數(shù)據(jù)存入數(shù)據(jù)庫中
$this -> insert_wmessage($db, $fromUsername, $contentStr, $time, $belong);
$this -> universal($fromUsername, $base_url);
echo $resultStr;
注釋上面代碼片段中的下面這兩句代碼:
//$this -> insert_wmessage($db, $fromUsername, $contentStr, $time, $belong);
//$this -> universal($fromUsername, $base_url);
二維碼正常調出!
另外:
但是,我們只是通過注釋來測試的啊,并不知道這兩句在程序中所扮演的角色!通過跟蹤代碼,非常終,我鎖定了這句代碼:
$this -> insert_wmessage($db, $fromUsername, $contentStr, $time, $belong);
我們來取消剛剛的注釋,這段代碼的意思我已經在代碼中寫了注釋,對的,經過跟蹤 insert_wmessage() 這個函數(shù),我們得知,這是處理將用戶提交信息的返回數(shù)據(jù)存入數(shù)據(jù)庫中。簡單點說,就是用作我們在后臺管理中查看粉絲管理的消息記錄顯示用的,對應的數(shù)據(jù)表是 wxch_message。
這 時候我們打開自己的wxch_message數(shù)據(jù)表看看,應該少說有幾萬條記錄,看到這些堆積如山的消息 數(shù)據(jù)。頓時腦洞大開!由于我們知道,這些數(shù)據(jù)都是存放于我們本地服務器數(shù)據(jù)庫中的,所以如果不是非常重要的消息,我們幾乎可以忽略不管,你也可以把這些數(shù) 據(jù)理解為聊天記錄,知道了這點,所以我毫不猶豫,TRUNCATE 清空數(shù)據(jù)表再說(在mysql中執(zhí)行sql語句 TRUNCATE TABLE wxch_message 即為清空wxch_message數(shù)據(jù)表的意思)
我們再來測試取二維碼!恩,果然能正常返回二維碼了。。。其實這也應該是為什么有的壇友每次遇到二維碼取不到找到甜心修復后,過一段時間又出現(xiàn)同樣問題的根本原因了,雖然我還未仔細去研究為什么會這樣,但是情況似乎就是這樣。
問題來了,我們不能每次出現(xiàn)問題都去執(zhí)行下清空數(shù)據(jù)表吧,畢竟這些數(shù)據(jù)不單單只存放了取圖片二維碼的消息數(shù)據(jù),還有其它的!
那我給大家的建議是,如果你的消息請求較頻繁,也可以說是你wei信粉絲量較大的時候,可以將$this -> insert_wmessage($db, $fromUsername, $contentStr, $time, $belong);這句代碼注釋或刪除掉,是不會影響功能自身和其它功能使用的。因為我們取完二維碼后,在后臺所看到的,也僅僅就是一串字符(media_id)而已,所以,對于大部分壇友而言這個是可有可無的。
C.付費推廣二維碼自定義修改及普遍問題
1、首先能生成二維碼的發(fā)送指令是兩個,一個是 qrcode,另一個是 tianxin100 。這里我們動的是后面那個,打開wechatcallback-ent.php 搜索代碼: elseif ($keyword == 'tianxin100') {
從這里開始以下的就是要修改的主要區(qū)域,我們繼續(xù)搜索
$imgsrc = ../images/qrcode/.$time..jpg;
$h_imgsrc=$time..jpg;
$width = 200;
$height = 200;
$time=time();
$name=$this->resizejpg($imgsrc,$width,$height,$time);
$imgs = $name;
//處理頭像
$width = 60;
$height = 60;
前面的2個數(shù)字分別對應二維碼的長跟寬,后者下面的是頭像的長寬,這里改成需要調整的大小尺寸。由于生成的圖片采用的是壓縮格尸所以如果我們設計的宣傳圖過小的話,會導致相應生成的二維碼以及頭像也會變小,從而影響到部分機子長按圖片無法出現(xiàn)關注選項!根據(jù)反復測試,機子的屏幕尺寸不同,是直接影響著是否有選項出現(xiàn)的關鍵!我一般建議用wei信的分享封面尺寸900作為圖片寬度,這樣比較符合推送到任何平板以及當中!而在900尺寸下,二維碼生成的長寬不能低于280,否則會出現(xiàn)沒選項。
2、繼續(xù)搜索代碼部分
$target = '../qrcode/tianxin100.jpg';//背景圖片
$target_img = Imagecreatefromjpeg($target);
$source = Imagecreatefromjpeg($imgs);
$h_source = Imagecreatefromjpeg($h_imgs);
imagecopy($target_img,$source,165,392,0,0,200,200);
imagecopy($target_img,$h_source,60,28,0,0,60,60);
$fontfile = simsun.ttf;
#水印文字
$nickname = $db->getOne(SELECT `nickname` FROM `wxch_user` WHERE `wxid`='$fromUsername');
#打水印
$textcolor = imagecolorallocate($target_img, 0, 0, 255);
imagettftext($target_img,18,0,268,59,$textcolor,$fontfile,$nickname);
背景圖片,這個不用說,如果要改成其他圖片的話,可以覆蓋,又或者另存為其他圖片,但切記如果更改圖片名稱的話,代碼這里相應更改為與圖片名稱一樣的,否則會出現(xiàn)生成失敗。
imagecopy 的兩行,很不錯行對應的是二維碼生成的坐標以及大小,前面2個數(shù)字是X軸跟Y軸,非常后2個是長寬。下面一行代碼同理,那個是頭像的。有的童鞋會問,我怎么取 得X軸跟Y軸呢,其實這個并不難,這里我賣一個關子,大家可以研究一下QQ截圖那個小工具,具體我不多說了。我不能什么都白說,不是嗎。。呵呵
$textcolor 對應的數(shù)字部分,后面三個數(shù)字就是顏色,代碼是用RGB代表的。RGB哪里能看,PS調色板或者是QQ截圖工具就可以,什么還是這工具,不行,我得好好研究一下才行。
imagettftext 對應的4個數(shù)字,分別是尺寸,透明度,坐標X軸跟Y軸。。這里要注意的是,前面的尺寸不是像素,而是PHP水印特有的鎊,那怎么折算呢,這個可以去翻 http://dwz.cn/J4Isu ,另外坐標度,跟圖片不是一樣的量多方法,這個我不說了,自己好好摸索一下,還是那句,我不能什么都全說
simsun.ttf 這個替換成設計中相應的字體文件,需要就覆蓋它
好了,統(tǒng)統(tǒng)弄好后,反復測試吧!
1、 為什么生成的二維碼和頭像沒對齊
那是你的坐標量度有問題了,好好改改再生成吧。
2、為什么回復關鍵字顯示 無法提供服務
這個問題有點復雜,從代碼里看,生成的步驟是這樣的,先是判定是否有生成,如果沒有的話就會調取參數(shù),這個如果參數(shù)都OK沒改動過的話,很不錯先查生成目錄是否有讀寫權限,第二查一下wei信的參數(shù)是否填寫正確,尤其是TOKEN,千萬不要像某位童鞋一樣,幾個公眾號都指向分銷系統(tǒng)了,這樣會造成回調錯亂。第三查一下公眾號里回調地址有沒有填寫正確,沒認證的公眾號是不行的哦。第四查那個帳號是否在分銷系統(tǒng)啟用前還是后注冊的,如果是以前老系統(tǒng)的話,那由于數(shù)據(jù)表結構不同,同樣會產生數(shù)據(jù)調取失敗的。這項建議找不到原因的童鞋好好從MYSQL中去分析一下。第五才是常說的帳號有否綁定。
3、有頭像沒二維碼,或者反過來的。
前者大多跟wei信公眾號參數(shù)有問題,可以把TOKEN替換一下試試。反過來情況的那是因為數(shù)據(jù)庫中沒有頭像地址,這個去MYSQL看看,如果真沒有那可以解綁帳號再重新綁定很少。或者重新關注很少。

浙公網安備 33011002014637號