结算流程
VirtueMart在cart对象中处理整个结账过程。购物车对象保留了购物者、产品和所选选项的所有重要信息。该数据存储在会话中。
结账过程正在处理销售合同。结账按钮表示车辆仅提供合同。但是使用确认按钮意味着购物者签署合同。这种行为反映了法律程序并遵守更新的法律。
对于登录的注册购物者登录 - 如果他们在购物车中有物品并且没有完成结帐过程 - 购物车数据被存储,并将在接下来登录时检索。在存储所有者的情况下,此功能可能具有很大的好处,因为他们的价值注册客户(无法在一次访问中完成他们的订单),不必在下次访问中再次添加所有产品。
当查看购物车时,要进行检查,以确保所有的检查要求都得到满足。
- 如果已满足所有要求,则显示“确认”按钮
- 如果项目仍然需要选择或完成(例如:Billign地址)一个“结帐”按钮显示。“checkout”按钮将引导购物者进入正确的步骤,以完成丢失的信息。
当“一页结帐”在虚拟机配置/签出选项卡中启用,客户只重定向到Billing地址输入(因为选择或输入所需的其他元素显示在签出页面)。由于用户交互,购物车可以在后台检查是否满足所有要求,并直接显示确认按钮。
运输和付款方式
购物车装载所有已发布的方法(例如Payment和Shipping)并检查配置的条件。
如果该方法及其配置/ s导致该购物车没有任何方法(例如,CART重量与任何运输方法不匹配,因此由于权重配置而粘性),它显示了与配置链接的错误消息。
当只匹配一个方法时,它将被自动选中。
如果匹配多个方法,则配置启用自动选择发货"或"启用自动选择支付”选项可用于自动选择您喜欢的方法.要确保用户从显示的选项中做出正确的选择,请不要配置这些选项。
Shopperfields显示
shopperfields具有“show in cart”属性,这使得扩展购物车用于任何目的变得很容易。如果需要两个复选框,并且选中了第二个复选框,购物车的js会在后台自动检查,如果所有的要求都满足,可以直接显示确认按钮。
对于模板和开发人员
装载的cart对象保留了所有重要的信息,并且可以在布局中访问。它通常是可用的$this->购物车。
有时,如果发生这种情况,则无法准备好推车,只需使用PrepareCartData()。
购物车更新动作现在由控制器中的“updatecart”任务处理。原因是,几乎任何选择都可能影响另一个值或决策,所以总是有必要重新计算和重载整个购物车。
在签出和进一步处理期间创建订单
当购物者在购物车中确认订单时,创建订单以便能够向支付提供商发送OrderNumber。这也确保价格固定并存储在订单表中。此订单具有“待处理”或代码“P”的内部状态。当收银员在物理商店告诉您支付的金额时,他还创建了一个完整的订单。必须对发票进行所有计算需求以及发票的方式。订单状态P是订单系统的正确运作的基础,不应用于其他东西(如果您可能会延迟遇到问题)。
不管你的支付方式是将客户导向外部支付页面,还是在你的网站内完成支付,用户都可以在没有完成支付的情况下退出该过程,因此,你的商店内的订单将保持“未决”状态。因此,密切关注Pending订单是很重要的。
如果客户没有任何原因填写付款,并且继续更改或重试,以在商店中完成其订单,请考虑使用它们上次创建的“待处理”顺序(因为这不太可能支付)是有用的。
根据用户与你的商店交互的时间,(VM认为最后一个小时是重要的-默认-有一个隐藏的配置选项,这个时间周期)如果少于这个设置的时间,“等待”订单将被删除。
如果购物车被加载或从会话中加载,VM将删除使用该orderId保存的(“Pending”)订单数据。
如果这是一个新的会话VM检查是否有一个相同的customer_number的顺序,如果在最后一个小时内创建的订单状态p,并且如果有一个,则它将被删除。
VM管理员列表中的管理员仍然可以看到未尝试的订单,但是多次尝试完成订单的次数只能在数据库中存储一个订单。
您可能有业务流程,以便联系并尝试为此类订单进行付款。
有一个隐藏的配置来优化搜索购物者的Pending订单的时间。
隐藏的配置“reuseorders”可以配置为DateInterval格式。默认格式为“PT30M for 30分钟”。(https://en.wikipedia.org/wiki/ISO_8601#Durations)
对于希望查看所有用户订单确认而不重用它们的店主,只需将as hidden config的值设置为0。这可能有助于识别潜在的支付处理程序问题,或者由于内部业务流程中的订单重用可能导致问题。