视频搭建教程在下载文件包里。
这个系统主要针对账号售卖类,例如游戏账号售卖等,支持顾客预选账号,值得注意的是目前系统内置的支付是usdt,如需其他支付系统需要找客服开发,例如易支付。
功能介绍:
功能文档:
会员等级
首先我们就需要详细了解会员等级机制,这个机制非常重要,影响到整个系统大多数功能。
会员等级,我们只需要注意两个部分,一个是累计充值
,一个是会员折扣
- 累计充值:用户注册后,通过会员中心的充值功能进行余额充值,当他充值累计达到某个等级的门槛时,将会自动升级为这一等级。
- 会员折扣:假如我现在是LV2等级,会员折扣是10%,那么我购买一件100元的商品只需要90元,具体算法:100-(100*0.1)=90
当然,会员等级不仅仅是作为会员这么一个用途,当别人使用API对接你的时候,那么对接的人也要遵循会员等级制度,所以你可以依靠这个功能完整的实现代理机制。
商户等级
顾名思义,商户等级当然是给供货商使用的,本程序拥有完整并且非常好用的供货商机制,当然这里的供货商,也是用户本身,只不过在他身上打开了商户的功能而已。
很多人都用过商业店铺系统还有卡盟系统,当然我们的出发点是针对于个人商家而打造的本程序,所以功能有些类似这两个系统的结合。
商户等级简单划分为下面几个功能:
- 购买价格:会员中心在开通店铺时,需要花费余额来进行购买才能使用商户功能
- 商品抽成:用作与商家自主上架的商品,当成功出售时,系统将收取一定的手续费,这里划重点,下面会讲到。
- 分站提成:当商家开通分站店铺后,他在分站卖出去的主站商品,会给他一定的佣金。
- 分站权限:是否给与商家开通自己店铺的权限。
- 供货权限:商家是否可以自己创建商品分类以及上架商品来自主销售,主站也可以选择显示供货商的商品。
- 绑定域名:给与商家是否可以绑定顶级域名的权限。
显示主站商品
用户中心,我的店铺里面可以设置显示主站的商品,也可以设置不显示,不显示的情况下,就是这个商家只卖自己上架的商品,也就是通过供货权限来进行添加商品分类以及上架商品。
子域名
商家想要卖主站的商品或者卖自己的商品,必须要绑定一个子域名,通过子域名才能访问到他的店铺。
商家在绑定子域名之前,你需要在网站设置
中的其他设置
里面配置主站域名和DNS-CNAME
。
主站域名如何配置,假如你想要abc.com当你的主站域名,那么商家绑定的子域名就是:xxx.abc.com。
这里的xxx是商家自定义的前缀,那么他绑定后,凭空想让xxx.abc.com访问到他的店铺肯定是不可能的,所以你需要到你的域名服务商哪里解析一个记录值是*
的记录到你服务器IP,比如: *.abc.com
解析至158.65.45.1
,这里的IP是你的服务器IP。
解析完成后,我们在后台设置里面的DNS-CNAME填写cname.abc.com
或者abc.com
都可以,只要是该域名指向你的服务器IP,并且没有CDN都是可以填进去的。
做完以上步骤后,很多人发现商家绑定子域名后还是无法访问子站域名,那么你还差的就是绑定域名,你的泛解析需要在你的服务器或者虚拟主机中绑定这个域名,比如你原来绑定了两个域名:www.abc.com
、abc.com
,那么你再新增一个绑定:*.abc.com
就可以了。
独立域名
商家拥有自己的域名,并且拥有绑定独立域名的权限,商家需要解析他的域名至你的
DNS-CNAME
,通过CNAME解析来完成。
商家域名解析完成后,如果访问店铺失败,那么就是你没有将你的服务器默认站点设置到你的店铺,比如宝塔网站里面就有个默认站点设置,选择你的店铺作为默认站点就可以了。
商家供货到主站
你可以给商户等级添加供货权限,这样商家添加自己的分类和商品后,你可以在
网站设置
中的其他设置
中将某个商家显示到主站,这样就实现了卡盟一样的机制。
商家自营店铺
商家绑定子域名或者独立域名后,并且在
我的店铺
中隐藏主站商品,这样就是一个独立的店铺了,实现了和商业店铺的功能。
其他
如果用户在分站注册的账号,那么就属于分站旗下的用户,该用户的消费都会触发推广返佣
三个例子
在网站设置->其他设置当中,有三个推广返佣比例,但是大家都不知道如何去计算,接下来将演示比例换算。
PS:0.8.1-beta 版本新增分站加价功能,分站加价后下方返佣规则对1级返佣无效,其他级仍然有效。
- 推广1级返佣:0.2
- 推广2级返佣:0.4
- 推广3级返佣:0.3
场景1
- 张三第一次打开你的店铺,并且注册了账号,此时是张三自己发现你的店铺的,并没有任何人推广给他,所以他没有任何上级和下级。
- 当张三经常使用你的店铺时,他在某一天推荐给了他的好兄弟王五。
- 然后王五消费了100元(登不登录都可以)
- 此时触发到了返佣机制,因为张三只有王五一个下级,所以他获得佣金:
100*0.2=20元
- 也就是得到了20元的真金白银,并且可以兑现出来(当然需要经过你的审核)
- 【本场景1级人物:张三】
场景2
- 因为王五后面也经常使用这个店铺,所以他也推荐给了他的妹妹小兰
- 小兰看到你店铺当中的商品,立马就消费了500元
- 此时又触发到了返佣机制,那么不同场景1的时候,就是这时小兰有2个上级
- 所以需要进行2次返佣,第一次返佣
500*0.2=100元
- 反给谁?当然是王五了,因为王五是小兰的直系1级,所以和张三没啥事,但是张三虽然没做什么,至少王五是张三带来的
- 所以我们又要将这100元分给张三和王五,那么剩下100元返佣公式就是
100*0.4=40元
- 因为100元是小兰反给王五的,所以这100元属于王五的,只是为了感谢张三领进门,分了拿出了40元分给了张三
- 那么最终结果就是【王五获得:60元、张三获得40元】
- 【本场景1级人物:王五】
- 【本场景2级人物:张三】
场景3
- 小兰某天和他闺蜜小桃逛街,然后推荐给小桃这个店铺
- 小桃回家后,立即打开了这个神奇的店铺,并且立马消费了200元
- 此时触发返佣机制,因为是小兰推荐给小桃的,所以公式是:
200*0.2=40元
- 但是小桃上面有3个上级,那么接下来就要开始计算三级返佣。
- 1级:
40-(40*0.4)=24元
,获得24元佣金【小兰】 - 2级:
24-(24*0.3)=16.8元
,获得16.8元佣金【王五】 - 3级:
24-16.8=7.2元
,获得7.2元佣金【张三】
看到这里,相信你已经了解返佣是如何运作的了。
介绍
很多人都想对接别人的店铺,那么我们拥有店铺共享
功能,所以这个过程是非常轻松的。
值得注意的是,我们的店铺共享系统是支持无限极套娃对接模式的。意味着对接你的人别人也可以对接他,但发货还是从最顶级的站点发货。
注册账号
到你要对接的店铺注册一个账号,注册后,在我的主页
中拿到商户ID
和商户密钥
添加店铺
回到自己的店铺后台,找到店铺共享
功能,进去后新增店铺
,此时填写你要对接店铺的地址和你刚才获取到的商户ID和密钥,点击确定后完成添加。
导入远程商品
店铺成功添加后,在操作栏有一个插头一样的图标,点击一下,可以通过这个功能把对方的商品导入到本地分类当中,导入后,商品默认是下架的,如果你想修改价格这些可以修改后再进行上架。
客户购买
客户在你的店铺下单购买后,将会通过店铺共享系统请求对接的网站通过余额
进行购买,购买后再拿到卡密或者对方是插件发货,然后保存到本地订单中显示给客户。
所以在这里有个问题,就是你必须要在对接的网站中进行一定的余额充值,方可保证能够成功通过余额下单拿到发货结果来给自己的客户显示。
代理等级
在不久前,
会员模块
中的会员等级
,已经提到了,对方或者是你都可以通过会员等级来进行实现代理等级机制,方便别人对接你,你可以很轻松的控制每个商品的代理价格。
定价同步
商品定价同步远程对接平台
这里只讲解重要的功能,其他没讲到的功能一般都能理解。
会员等级定价
每个商品都可以给每个会员等级单独定制对应的价格和批发价格,这样很方便的你就实现代理机制。
发货方式
- 自动发货:客户购买商品后,自动将卡密发给用户
- 手动发货/插件:你可以固定一些卡号密码设置在发货信息里,也可以设置一些软件下载链接或者是比较重要的付费信息设置进去,更方便的是你可以通过插件来实现发货,比如通过开发插件,来对接别人的网站,用户购买后,请求别人的网站拿到商品后返回给自己这边的用户看。
发货留言
客户购买商品后,你可以给客户留言一些信息,比如你可以让他加售后群,或者是一些必要软件的下载地址等众多作用。
邮件发送
这里请注意,请一定要先在网站设置
中的邮箱设置
里配置好并测试成功后,再使用邮件发送功能。
查询密码
开启后,前台客户需要输入查询密码才能购买,这样可以有效保证用户卡密不被盗取,但是如果用户登录后就无需输入查询密码以及联系方式。
优惠卷
让你的商品支持优惠卷折扣,使用优惠卷可以抵扣一些金额。
限时秒杀
字面意思,可以让你的商品再固定的时间可以购买,并且前台也会显示倒计时。
卡密预选
开启后,可以让用户选择自己想买的那个卡密信息,一般适用于游戏账号交易,再导入卡密的时候可以使用自动处理预选信息,处理时支持正则表达式,正则学习地址:https://www.runoob.com/regexp/regexp-syntax.html
强制登录
开启后,用户需要登录才能购买这个商品。
限购数量
开启后,用户需要登录才能购买商品,并且购买到限制的数量,将无法再次购买,一般可以用作与做活动限制每个人购买的数量。
API对接
开启后,其他网站将可以拉取这个商品到他们本地进行对接。
隐藏库存
隐藏库存后,前台将不再显示库存,而是用中文代替显示大概范围。
控件
这个功能在使用插件开发各种功能的时候尤为重要,他可以添加各种输入框到前台让用户输入信息,就算不开发插件,你也可以通过他来让用户输入一些你需要的信息。
- 在
0.8.0-beta
版本新增了下拉框
,多选框
,单选框
,文本域
,以及扩充数据
功能 - 支持
扩充数据
的控件:下拉框
,多选框
,单选框
扩充数据
使用键值对的方法来添加,,
号进行分割多个数据,例子:大熊猫=dxm,小熊猫=xxm,大狗=dg,小狗=xg
,这样的话,在前端就可以提供多个选项来进行选择了。
商品配置参数极其重要,请认真学习和理解,这将关系到您商品的扩展功能以及方便你出售各种类型的商品,本功能位于
商品管理
中的添加商品
以及修改商品
,无论是总后台或者是用户后台供货商,均支持本功能。
商品批发销售参数
很多时候,我们需要一个商品来进行批发销售,我们需要创建一个批发规则参数。假设一个场景如下:
- 商品单价为100元,也就是说单独购买一个商品需要100元一张。
- 那么我们设置为一次性购买5个或者以上,只需要90元
- 10张或以上只需要80元
- 20张或以上只需要65元
以上便是我们的思路,在商品配置参数栏目中输入规则:
[wholesale]
5=90
10=80
20=65
那么上面配置中的[wholesale]
代表批发配置节点名称,不可更改,下面的则是他的参数,=
号左边则是一次性购买多少个或以上,=
号右边则是到达这个规则时单个商品价格。
请注意,如果你想单独为某个会员等级制定独立的参数规则是完全可以的,你只需要在
会员定价
中进行相关操作即可。
商品种类参数
有时候一件商品有很多分类,比如
某讯SVIP会员
分为:月费、季费、年费, 我们就可以通过这个参数来实现。
场景1(某讯SVIP会员): 月费 20元、季费 70元、年费 150元
通过商品参数实现,复制到该参数到商品的配置参数中:
[category]
月费=20
季费=70
年费=150
场景2(某虚拟卡密):天卡 10.88元、周卡 68.88元、月卡 128.88元、年卡 488.88元
[category]
天卡=10.88
周卡=68.88
月卡=128.88
年卡=488.88
当然,值得注意的是,在添加卡密或添加优惠卷的时候,有一个商品类别输入框,你需要填写指定的种类名称,比如天卡
商品种类【批发参数】
和我们上面提到的商品批发销售参数类似,但是这个是为某些种类进行批发设定的。
我们用上的某虚拟卡密当作例子,分别为天卡
和周卡
进行批发设定:
[category_wholesale]
天卡.5=9.88
天卡.10=8.88
天卡.20=6.88
周卡.3=60.88
周卡.6=50.88
周卡.10=40.88
上面的配置参数分别给天卡5张、10张、20张设置了批发的单价,以及周卡的3张、6张、10张设置了批发的单价。
商品种类【成本参数】
本参数需要系统版本 >= 0.9.0-beta,否则设置了也无效。
[category_factory]
天卡=5
周卡=10
月卡=15
年卡=30
成本设置后将会纳入成本统计,不设置则代表你的成本为0,将不会纳入成本统计。
高级玩法
思考一下,你可以通过配置参数功能+会员单独定价以及单独配置功能,来实现你想要那些人看到那些商品种类,以及那些批发价格规则, 这无疑是一个强大的功能。
自定义支付回调域名
- 思考:什么情况下才需要自定义回调域名?
如:网站域名加了CDN,或者CDN有防火墙,导致各种原因回调慢,以及回调失败。
- 解决方案:
此时你可以绑定一个服务器IP+端口的网站访问方式,如绑定一个:123.123.123.123:41823
,然后设置自定义支付回调域名
为http://123.123.123.123:41823
,这样就绕过了CDN的防火墙,并且还可以加快回调速度,因为是直连服务器。
- 功能位于:
【网站设置】->【其他设置】
- 安全隐患:
如果你使用的是码支付、易支付这种submit方式提交from表单下单的支付平台,那么肯定存在会被【专业】人士抓包抓到你这个回调域名,但是不存在安全隐患,仅仅是泄露了服务器IP或者未使用CDN的域名,仅此而已。
如果你使用的是类似【内置-码支付】插件,或者是官方支付宝/官方微信以及使用内部request请求拿到qrcode或者是payUrl地址的支付平台,都不存在该隐患。
无论如何,自定义了回调域名,都能够提升你的回调稳定性,这也是我们推荐你设置的选项。
后台全局顶部
#[Hook(point: \App\Consts\Hook::ADMIN_VIEW_HEADER)]
可以放自定义的CSS文件链接等
<?php
class Demo extends ManagePlugin
{
#[Hook(point: \App\Consts\Hook::ADMIN_VIEW_HEADER)]
public function test(): void
{
echo '<link href="/assets/admin/css/style.css" rel="stylesheet" type="text/css"/>';
}
}
后台全局底部
#[Hook(point: \App\Consts\Hook::ADMIN_VIEW_FOOTER)]
可以放一些任意插件JS代码或者载入远程JS
<?php
class Demo
{
#[Hook(point: \App\Consts\Hook::ADMIN_VIEW_FOOTER)]
public function test(): void
{
echo '<script>alert("我是插件~")</script>';
}
}
后台全局BODY
#[Hook(point: \App\Consts\Hook::ADMIN_VIEW_BODY)]
可以放一些HTML代码或者JS代码
<?php
class Demo
{
#[Hook(point: \App\Consts\Hook::ADMIN_VIEW_BODY)]
public function test(): void
{
echo '<script>alert("我是插件~")</script>';
}
}
后台左侧菜单栏
#[Hook(point: \App\Consts\Hook::ADMIN_VIEW_MENU)]
可以制作你的插件菜单,样式可以通过F12浏览器查看后台的
<?php
class Demo
{
#[Hook(point: \App\Consts\Hook::ADMIN_VIEW_MENU)]
public function test(): void
{
echo '<div class="menu-item"><a class="menu-link"><span class="menu-title">我是插件</span></a></div>';
}
}
后台会员管理顶部
#[Hook(point: \App\Consts\Hook::ADMIN_VIEW_USER_HEADER)]
可以写一些页面级的CSS或者HTML代码等
<?php
class Demo
{
#[Hook(point: \App\Consts\Hook::ADMIN_VIEW_USER_HEADER)]
public function test(): void
{
echo '<style>*{color:red;}</style>';
}
}
后台会员管理底部
#[Hook(point: \App\Consts\Hook::ADMIN_VIEW_USER_FOOTER)]
可以写一些页面级的CSS或者HTML代码等
<?php
class Demo
{
#[Hook(point: \App\Consts\Hook::ADMIN_VIEW_USER_FOOTER)]
public function test(): void
{
echo '<script>alert("我是插件")</script>';
}
}
后台会员管理按钮区域
#[Hook(point: \App\Consts\Hook::ADMIN_VIEW_USER_TOOLBAR)]
可以造一些按钮,来实现一些功能
<?php
class Demo
{
#[Hook(point: \App\Consts\Hook::ADMIN_VIEW_USER_TOOLBAR)]
public function test(): void
{
echo ' <button class="btn btn-sm btn-light-success me-3">我是按钮</button>';
}
}
后台会员管理表格
#[Hook(point: \App\Consts\Hook::ADMIN_VIEW_USER_TABLE)]
可以在表格上做一些功能,请注意,json的结尾必须有
,
号,否则会导致报错,可以参考bootstrap table组件开发对应的功能。
<?php
class Demo
{
#[Hook(point: \App\Consts\Hook::ADMIN_VIEW_USER_TABLE)]
public function test(): void
{
echo "{
field: 'testname',
title: '插件',
formatter: function(val, item){
return '插件:' + item.username;
}
},";
}
}
写给建站新手的
当然如果你是完全不懂建站和优化的纯小白,也不愿意学习,你可以无视下面的优化教程,他并不会影响你的店铺使用,他仅仅是为了让你更快仅此而已。
店铺卡顿原因
1.session产生的文件锁
为了明白这点,我们首先要知道web server不是通过一个单线程运行你的php代码,他是多个工作线程同时运行,然后处理请求。 一般,浏览网页的用户请求是被序列化的,这也是为什么http长连接起到的作用。通过保持給请求页面的所有资源连接的打开,可以避免连接的开销。 浏览器非常聪明,并且总是试图对HTML页面的请求进行序列化。对于页面上的资产(图像、脚本等),还有另一种策略。 浏览器会从它所看到的HTML中所引用的每个唯一的主机名中并行下载多个资源。 它可以通过打开多个TCP连接或管道来实现这一点。 当一个浏览器任务它正在下载资源,它可能并行的下载这些资源给一个单一的浏览用户。 会话锁定避免这种并发性(通过阻塞)在这种情况下提供对会话数据的可靠访问。
2.session锁如何工作
这个非常简单:当你使用
session_start()
,php就是阻塞(等待)直到上一个请求的脚本通过session_write_close()
进行释放。在Linux主机上,它是依靠flock()
方法实现。这是一个警告锁机制,直到这个阻塞被释放。 注意:这部分上锁的时间不会计算在php中的max_execution_time
配置项,max_execution_time
详见set_time_limit()
3.为什么session锁是必须的
session锁防止在用以存储session数据的共享内存出现竞争条件。每一个PHP进程都会读取整个session的储存,并写回数据在它关闭之前。 这意味要可靠地储存一个登录进来的用户信息(通常在会话数据session中完成),你必须确保没有其他进程已经读取这个session数据,不然将在写入后覆盖掉你保存的数据(因为最后一次写入数据为准)
解决卡顿的幻觉,让店铺提速1000%
1.安装Redis
- 宝塔用户安装方法:打开软件商店,搜索
redis
然后进行安装,其他面板或没有使用面板的用户请自行在网络寻找安装教程。
2.为php8安装redis扩展
- 宝塔用户安装方法:打开php8管理界面,找到
安装扩展
选项,选择安装redis
扩展,其他面板或没有使用面板的用户请自行在网络寻找安装教程。
3.修改php8的配置文件
- 宝塔用户修改方法:打开php8管理界面,找到
Session配置
,将存储模式改为redis
,然后保存即可。 - 无宝塔面板的修改方法:打开php8的配置文件php.ini,修改下面的配置:
session.save_handler = redis
session.save_path = "tcp://127.0.0.1:6379"
;如果你设置了redis密码,则用下面整个配置
;session.save_path = "tcp://127.0.0.1:6379?auth=你的redis密码"
4.重启php8,然后访问你的店铺,你会感到非常惊讶,你的店铺真的提速1000%了!
暂无评论内容