MiniVend—电子购物车

作者:Kaare Rasmussen

当管理 ISP 时,您最终需要一个电子商务解决方案。 有许多可能的解决方案,但问题是它们要么庞大而昂贵,要么是小型免费软件,不包含所有必要的选项。 我听说过一个名为 MiniVend 的系统,它以 GNU 通用公共许可证发布,并决定试用一下。

功能

MiniVend 是一个功能齐全的电子目录系统(通常称为购物车),具有在线订购功能。 它旨在提供一个完整的界面,包括 SSL 安全性和完整的数据库支持。

MiniVend 3.0 的一些主要功能包括

  • 多目录允许一台服务器运行多个商店,因此非常适合 ISP。

  • 通过 SSL 为信用卡订购提供安全性,并通过 PGP 为订单邮件提供安全性。

  • 它具有完善的数据库集成,支持 SQL,包括 ODBC。

  • 强大的搜索功能,包括快速二进制搜索、范围搜索、数字和字母数字搜索排序(带反向、数字和不区分大小写选项等)。

  • 外观的所有方面都可以控制。 MiniVend 支持框架,页面可以即时构建或为常用项目预先构建。

  • 它非常灵活,具有销售税、折扣和运费计算、简单的价格调整等等。

  • Cookie 支持允许用户离开商店并在不丢失会话状态的情况下返回。 它与所有浏览器配合良好,并包括 Cyber​​Cash 支持。

  • 易于管理,具有自动安装和配置,以及离线和在线数据库构建。

MiniVend 是一个客户端/服务器系统。 浏览器与一个小型应用程序通信,该应用程序又通过套接字与 MiniVend 服务器通信。 因此,您不必为每个用户会话加载 MiniVend 服务器,这可能会使系统过载。

MiniVend—the Electronic Shopping Cart

图 1. MiniVend 系统

我不知道这个名字是怎么来的——它一点也不“迷你”。 这是一个功能齐全的电子商务系统,可以满足大多数人对此类系统的需求。 MiniVend 功能强大且相应地复杂。 它可以轻松地从每个目录几个项目扩展到一百万个或更多项目,并且性能出色。 如果您只有几个项目并且不打算增长,那么 MiniVend 可能有点大材小用。

电子商务的需求

关键问题是易用性和灵活性。 该系统应在无需过多管理工作的情况下完成所需的工作,并且还应以易于使用的方式包含您所有期望的功能。

必须具备的选项包括

  • 在内部和外部数据库之间交换数据的能力。 产品信息通常会保存在某种公司数据库中,手动输入数据将是繁琐的,至少可以这么说。

  • 尽可能自动化订单流程。 理想的情况是您只需将订单输入到您的系统,所有税费、运费等都由软件处理。

  • 应该提供一种处理选定客户和批量销售折扣的方法。

  • 当订单生成时,应通过电子邮件将反馈发送给客户。 这有助于捕获系统或客户造成的任何错误。

  • 支付安全性也是一个问题。 系统在向数据库发送数据和从数据库接收数据时,需要使用 SSL,或许还需要使用另一种加密协议。

  • 需要良好的文档和支持。 文档应该写得很好,以便您可以快速入门(在几个小时内); 支持应该帮助您度过任何阻碍。

我们都有不同的需求,每个人都会对电子商务系统应该包含什么有自己的偏好。 我喜欢一个只做它应该做的事情的系统:处理产品信息、搜索和订购,同时将域名注册和聊天室留给它们自己的专用工具。

我为什么选择 MiniVend

每当我在商业产品和开源产品之间进行选择时,我总是先试用免费软件。 当然,价格问题很重要,在购物车的情况下,价格可能是一个非常大的问题。 在大多数情况下,访问源代码将保证系统更加没有错误,因为用户可以查看代码并为任何现有问题提出解决方案。 毕竟,用户是知道问题出在哪里的人,他们通常更有动力去发现和纠正问题。

但是,这不仅仅是在商业系统和开源系统之间进行选择。 还有其他开源产品可用,但 MiniVend 在功能类别中脱颖而出。 它提供的功能之多以及配置之容易简直令人难以置信。 我能想到的所有配置选项以及更多选项都包含在内。

此外,MiniVend 易于与多个商家一起使用,我可以将其与我的 Apache 1.3 一起使用,没有任何问题。

安装

安装再简单不过了。 只需在您希望创建安装目录的目录中键入

su wwwrun
tar xvzf minivend-latest.tar.gz

。 此命令将解压缩最新版本的 MiniVend。 我下载的版本是 3.11,它在我尝试使用前一周左右才发布。(请参阅“资源”部分。)

用户 wwwrun 拥有 Web 服务器的 /DocumentRoot 目录。 任何具有对此目录和 /cgi-bin 目录的写入权限的用户都可以使用。

./configure

安装过程包括一个漫长的问答环节,但您可以直接按 Enter 键来回答大部分问题; MiniVend 附带合理的默认值。 MiniVend 安装完成后,您将有机会安装目录

-> /home/httpd/mvend
-> Make the simple demo now? [yes]
为目录选择一个简短的助记名称。 这将用于设置命名目录、可执行文件和目录的默认值,因此您需要经常键入此名称。 如果您是第一次进行演示,则可以使用“simple”
Catalog name? simple
其余的安装包括一些简单的问答,我不会在此处重复。 服务器名称和 /cgi-bin 位置应在您尝试安装 MiniVend 之前工作。
MiniVend—the Electronic Shopping Cart

图 2. 简单演示

当一切安装并准备就绪后,您可以使用以下命令启动 MiniVend 服务器(使用您的安装路径)

/home/httpd/mvend/bin/start
安装说明

MiniVend 是一个大型程序,这意味着它非常复杂,如果您遇到问题,支持并不总是可用。 有一个邮件列表,但在测试期间,我的任何问题都没有得到解答。 这包括关于国际化的问题以及我在一台需要它的机器上遇到的安装问题。

另一方面,我发现文档非常全面,尽管有时有点难以理解。 600KB 的 HTML 文档(见图 3)绝对是一个优点。

MiniVend—the Electronic Shopping Cart

图 3. MiniVend HTML 文档

请非常小心地为 MiniVend 服务器选择用户。 此用户必须具有对 /DocumentRoot 和 /cgi-bin 目录的写入权限,因为您将安装一个包含 HTML 页面和 CGI 脚本的演示。 但不要犯将 MiniVend 服务器和 Web 服务器作为同一用户运行的错误——这是一个要避免的安全风险。 生产系统中的最佳解决方案是创建一个新用户来处理 MiniVend 服务器。

确保敏感数据的安全是用户的责任。 您可以将 MiniVend 设置为将数据留在服务器上的任何位置,或通过电子邮件将其发送给商家,但您必须考虑如何加密数据。 MiniVend 支持 PGP 加密,因此有一种方法可以设置安全的数据传输。

在这个短暂的测试期间,我显然没有时间测试“磨损”,但一切似乎都是以易用性为目标设计的。 系统表(例如,销售税或运费值)易于调整,您可以离线或在线更新数据库,作为单个记录或一次性全部更新。

网页配置

配置网页有很多选项。 MiniVend 有一个完整的标签语言,包含 80 多个不同的函数。 您可以将代码嵌入到页面中,并使用条件语句,如 [if ...] text [else] else-text [/else][/if],从而可以根据某些计算的选择插入文本或 HTML 代码。

所有 MiniVend 命令都嵌入在方括号 ([ ]) 中的页面中。 MiniVend 在将页面交给 Web 服务器之前对其进行预处理,用它们代表的值替换命令。 最基本的命令是数据标签,它将数据库中的信息嵌入到网页中,但也有用于循环、从外部文件插入文本、插入总字段以及更多内容的命令。

MiniVend—the Electronic Shopping Cart

图 4. 配置页面的示例

图 4 中的示例是通过一个外部文件完成的,该文件保存了页面的所有文本。 我将一个字段命名为“webpage”并将其放入数据库中,然后将其插入到产品页面的模板中

[include pages/products/[item-field webpage]]

,这意味着我想在网页的此处包含一个文件。 该文件应位于 /pages/products/ 目录中,并且名称取自该产品的网页字段。

作为开发人员,我很高兴得知您甚至可以将 Perl 代码嵌入到页面中。 同时,我不得不认同文档; 这是一项很少使用的功能。 嵌入 Perl 就像使用链锯:您可以快速完成工作,但如果使用不当,可能会让您付出惨重的代价!

管理

MiniVend 的核心是产品数据库。 通常,它只是一个 ASCII 文件,字段用制表符分隔。 字段名称在第一行给出,MiniVend 使用 GDBM(GNU 数据库管理器)自动索引数据库。 如果您已经有一个真实的 SQL 数据库,您甚至可以通过 Perl 独特的 DBI 接口连接到它。

您可以使用 offline 命令在命令行更新数据库,或者如果您只想更改一条记录,则可以使用 update 命令。

可以从任何来源导入数据,前提是数据可以格式化为字段用制表符分隔。 如果您想调整系统中的所有价格,可以使用 commonadjust 功能轻松完成。

MiniVend 记录所有会话以供将来使用。 显然,某些会话数据会在一段时间后过时,因此最好在您的 crontab 文件中放置一个过期脚本

44 4 * * * /home/httpd/mvend/bin/expireall -r

。 这将防止您的会话数据库变得太大。

结论

MiniVend 非常令人印象深刻,几乎令人惊叹。 这类软件其他公司要价数千美元(或欧元),而 MiniVend 通过 GPL 免费提供。 它也是一个展示品,展示了 Perl 的多功能性。 购物车系统不是一小段代码; MiniVend 是一个功能齐全、功能强大的示例。

MiniVend 是一个大型系统,无法在一个会话中涵盖所有内容。 它有许多我甚至没有时间尝试的功能。 我在使用它时遇到了一些问题,但我坚信 MiniVend 是一个可以用于任何类型电子商务的系统。 随着我了解这些功能并研究代码,我将越来越熟悉它,并且可以使其完成我想让它做的所有事情。

如果您正在寻找一个交钥匙系统,MiniVend 不是。 另一方面,如果您正在寻找一个功能强大、灵活且易于使用的系统,那么 MiniVend 适合您。 文档很棒,源代码都在那里,如果邮件列表上的支持能够稍微扩大规模,那就没什么好担心的了。

资源

要求

Kaare Rasmussen (kar@webline.dk) 是一位软件工程师和开发人员,当工作、家庭和其他职责允许时,他负责一家名为 Webline 的丹麦小型 ISP 的软件方向。 在过去的二十年左右的时间里,Kaare 一直从事 IT 行业的几乎所有方面的工作。 在过去的五年里,他用丹麦语写了几本书——最新的一本是关于将 Intranet 与 Linux 结合使用。

加载 Disqus 评论