我正在建立一个 drupal 商务网站,我希望有一个功能可以让管理员处理订单并更改订单状态,然后用户会收到一个电子邮件链接,将他重定向到付款页面。八个 drupal commerce 或 ubercart 可能实现这样的事情吗?
注意:uc_payafter 在 7.x 中不起作用
最佳答案
我认为您可以结合使用 Drupal Commerce 和规则,或许还可以进行一些调整来做到这一点。
据我了解,您的情况是这样的:
- 用户下了订单但未付款。
- 管理员查看订单并批准付款。
- 用户会收到一封电子邮件,提示他付款。
- 付款订单标记为完成。
Commerce 管理员已编辑订单状态。然后,您可以在发送付款电子邮件的规则中捕获该事件。最大的挑战将是干预结帐过程,阻止用户下订单后立即付款。
为此,您必须创建两个新的订单状态。请参阅http://www.drupalcommerce.org/faq/order-states有关如何执行此操作的信息。我们将这些状态称为“等待批准”和“已批准”。
其余的应该更容易,不需要编码:
创建一个页面,通知用户他的订单将很快得到审核和批准。
创建规则来注入(inject)我们的新状态:
- 事件:保存订单之前
- 条件:对比数据,订单状态不变为购物车
- 条件:比较数据,更新后的订单状态为“已结账”
- 操作:将订单状态设置为等待批准
创建规则以阻止用户结账:
- 事件:Drupal 正在初始化
- 条件:比较数据,页面路径包含“checkout”
- 条件:比较数据,当前订单状态为等待批准
- 操作:将用户重定向到您在第 1 步中创建的信息页面
现在,当用户尝试结账时,订单会被标记为等待批准,并且用户会被引导到信息页面。管理员现在可以自由编辑订单并将其状态更改为“已批准”。我会推荐:
创建所有处于等待批准状态的订单的 View ,包括“编辑”链接。
然后,完成该过程:
创建一条规则,通知用户其订单已获批准付款:
- 事件:订单已更新
- 条件:订单状态已批准
- 操作:向用户发送电子邮件
创建允许用户付款的规则:
- 事件:Drupal 正在初始化
- 条件:比较数据,页面路径包含“checkout”
- 条件:比较数据,当前订单状态为已批准
- 操作:将订单状态更改为“结账”
从这里开始,结账过程将照常进行,直到完成。
请注意,如果用户在结账过程中的任何时候点击“取消”,订单将恢复为购物车状态,并且需要管理员再次批准。如果您不希望这种情况发生,您可以将“取消”链接主题设置为优雅的“消失”。
关于drupal - 下单后付款/不同订单状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8164471/