Drupal商城的安装和使用方法

这篇教程将会一步一步的教会你如何在自己的服务器上搭建一个这样的商城站,并且为你解释不同的配置下功能的差异。

如果你已经安装并配置好了你的Commerce电子商务网站,可以直接跳到用法部分

安装

1,我们需要从安装Commerce Kickstart发行版开始(我建议安装版本1.x,特别是如果你想要一个干净没有其他虽好但是不相关的特性的安装时,并且版本1.x是我在撰写这篇教程,以及开发和测试里面的功能时所使用的版本,所以里面的截图也都是1.x版的)。
2,选择安装Drupal的Kickstart Profile,但是不要安装测试数据。
3,开启所有Commerce Markerplace分组下的模块(几乎是所有,在本文中,不包含Chained Payment Method Example模块)。

drush en -y commerce_marketplace commerce_marketplace_cart commerce_marketplace_checkout commerce_marketplace_customer commerce_marketplace_line_item commerce_marketplace_order commerce_marketplace_payment_parallel_example commerce_marketplace_payment commerce_marketplace_product commerce_marketplace_shipping commerce_store commerce_store_ui

注意,当commerce_marketplace模块被开启之后,其为商家用户自动创建了merchant角色和一些预置的权限,你可能需要在使用这些权限设置之前,先检查一遍是否和你的需求一致。

4,在Administration » People页,让我们创建3个示例商家用户,在本文中,我们创建了Merchant 1, Merchant 2,和Merchant 3。并且为其赋予了merchant角色:

商家用户管理

5,在Administration » Store » Stores,让我们创建3个示例商店,并将他们与商店的店主关联(店主即我们刚刚创建的用户):

商店管理

6,在Administration » Store » Products,让我们创建3个示例商品,并将他们每个关联一个刚刚创建的商店:

商品管理

7,OK,让我们再创建一个不属于任何商店的商品:

不属于商店的商品

对于每一个商品,我们可以在Administration » Content » Add content » Product display创建一个相关的产品显示页(Product Display):

Product Display

9,这将为我们在网站首页提供非常基本的商品列表:

Alt text

10,开启几个模块用来提供支付功能,在这个例子中,我们将使用Authorize.NetPaypal WPS和一个自定义的线下支付来人工的定义几个额外的线下支付方法。

drush dl commerce_authnet commerce_paypal commerce_cop
drush en -y commerce_authnet commerce_paypal_wpp commerce_cop

11,在Administration » Store » Configuration » Custom Offline Payments,定义2个示例的线下支付方法:银行汇款和货到付款(请一定要填写Information字段)。

Offine Payments

12,你应该能够在Administration » Store » Configuration » Payment methods看到这些方法(你可能还没有把所有的支付方法开启,因此在这里你可以启用所有你计划要使用的支付方法。

Payments Methods

13,目前Example支付和Example parallel支付方法不需要任何配置。而对于线下支付方法的银行转账和货到付款,如果在创建的时候填写了Information字段,则你也已经配置好他们了。

剩下的就是Authorize.Net和Paypal WPS,如果你有沙盒或测试账号,在这里将他们填写进去,如果没有,你需要先去申请。

注意,这个支付方法配置仅适用于商店被配置成把支付都发送到主商店(参考(Administration » Store » Marketplace » Payments),这是Drupal Commerce的基本模式。当支付被配置成直接发送到商家,我们就需要为每一个商店分别开启和配置所有支付方法。

14,在Administration » Store » Stores,首先编辑每个商店,为每个商店开启不同的支付方法,然后进行配置:

  • 对于第一个商店,在支付方法的垂直标签里,开启Example parallel支付方法和银行转账方法:
    Store Config
    保存以后,在商店的支付方法标签里就有两个对应的支付方法有了可点击的链接。
    Store Payments
    再次强调,Example parallel支付方式没有配置项,但是银行转账方式应该在被使用之前为这个商店单独配置(这些配置相对于全局配置是完全独立的):
    Store payment configuration
    注意当一个支付方法有配置项时,其需要在被使用前为每一个关联的商店单独配置(即使所谓的配置仅仅是保存一个空的表单)。否则在结算时其不会被显示在支付方式区块(也就是说只有启用了并且配置过的支付方法才能在支付过程中被使用)。

  • 对于2号商店,开启和配置Example parallel,PayPal WPS和货到付款(Cash on delivery)。

  • 最后,3号商店仅开启Example payment方法。

注意,我们已经为1号商店和2号商店开启了Example parallel方法,但是3号商店并没有开启。我们很快会深入探讨这一点。

15,最后,在Home » Administration » Store » Configuration » Shipping添加几个物流服务(你可能需要手动开启commerce_shipping_ui模块和commerce_flat_rate模块,如果他们还没开始的话)

举个例子:

  • 标准的运费10美元
    在配置组件的页面,我们需要一个条件用于仅当订单金额低于50美元时添加10美元的运费(否则,我们将提供免运费服务)- 这意味着添加一个数据比较条件,
    commerce-order:commerce-order-total:amount is lower than 5000:
    Shipping condition

  • 优先运输运费15美元

  • 免邮费运费0美元
    这里我们需要配置一个类似于标准运费的条件,这次要确保订单金额大于等于50美元。(这意味着commerce-order:commerce-order-total:amount is higher than 4999)

用法

1,让我们先从把上文中添加的3个商品添加导购物车开始,虽然他们属于不同的商店,但他们在购物车里是为顾客显示在一个区块当中的。

Shopping cart block

购物车页面也是同样,只是多了一列显示商品来自于哪个商店。

Shopping cart page

然后后端我们为每个商店创建一个独立的订单。

Shopping cart admin

这个示例介绍了一个订单组的概念(为订单对象起相同的名字),因此,其会知道哪几个订单需要一起被处理。

dpm order group

注意,结算流程在什么时候,以及怎样到的下一步,所有的订单都是实时更新状态的。

Checkout progress

3,现在,技术我们怎样以及何时为3个商店启用的支付方法,我们为1号商店和2号商店开启了Example Parallel支付,但3号商店没有。

这意味着我们正在下单的这3个商店没有统一的支付方式,因此系统自动让用户分别为每个订单选择不同的支付方式,需要走3遍支付流程。

这也意味着:

  • 物流运输区块不能在标准物流页面显示,从而被移除。

  • 支付区块不能显示在订单确认页的标准位置。
    Checkout review order

  • 新的结算页确认订单功能自动添加,为每个订单同时分别显示物流和支付区块。
    Checkout review 3 orders

注意,在这种场景下,物流和支付都是AJAX效果,改变数值将自动更新对应的购物车视图。

4,当商店没有公共支付方法,每个订单的支付需要分别处理,这里2个订单已经被支付了:

Guide 2 payments done

对于每一个完成的订单,你也应该会收到确认信。

5,最后,只需要支付最后一个订单,然后将会把用户带到结算完成页(目前还没有为示例专门修改,仍然显示的是刚刚完成订单的信息)。

Checkout complete

在后台,所有的3个订单状态都被正确的更新为Pending状态代表已经可以进行后续的流程。

Checkout complete admin

剧情转折 #1

让我们也为3号商店开启Example parallel支付方法,重新走一遍上面的购物流程。

注意,和之前的相比,结算流程已经改变了。

  • 物流区块又恢复为标准的专用物流页(当然作者提到这里还有些细节上的问题,在其博客上有详细说明)。

  • 支付区块又回到订单确认页,仅提供parallel支付方式,因为对于这组订单,只有这种支付方式是3个商店共有的。

  • 不再有分别确认订单的页面了。
    Guide review order parallel

这种使用场景非常接近Drupal Commerce解决方案的标准方法,主要的区别是可用的支付方式上。

剧情转折 #2

现在,让我们在Administration » Store » Marketplace » Payments再次修改支付发送到主商店,而不是商人。

所有的结算页面将获得几乎相同的配置,这时效果将和标准的Drupal Commerce方案一致。

与上一个剧情转折相比,区别是,在这个场景中不管订单组里的订单有多少,都只能选择一种支付方式,所有的订单是共享支付方式配置的。

这也意味着客户需要启用网站所有的支付方式。

Guide review order main store