2

我在处理新的支付网关创建时遇到了一个大问题。我遵循了一个教程,但我认为我做错了什么,因为它不能很好地工作。

我想创建一个“devis”(对不起,我不知道英文这个词......看起来像那样。

当客户购买东西时,他可以选择这种除了提供“devis”之外什么都不做的支付方式。如果订单的状态可以直接“暂停”以便在“实际付款”完成时取消暂停,那将是完美的。

我希望你明白我试图做什么,但如果你没有自由问我问题。

这是我所做的:

  • VirtoCommerce.PaymentGateways我在命名空间中创建了一个新类,该类DevisPaymentGateway继承自PaymentGatewayBase该类。在这个类中只有一种方法:ProcessPayment我在哪里做:

    payment.status = PaymentStatus.Completed.ToString();

  • 在里面SqlOrderDatabaseInitializer.cs

    我创建了一个私有SetupDevisGateway方法:

    private void SetupPaypalGateway(List<PaymentGateway> gateways)

    CreatePaymentGateways在贝宝网关之后的方法中调用它。

  • 由于您的 powershell 脚本,我部署了数据库,网关按预期创建。

  • 我通过 VirtoCommerce Manager 启用了网关支付然后我在网站上买了一些东西,我选择了可​​用的新支付,所以它似乎可以工作。
  • 当我点击继续结帐时,我有一个新的订单行,它创建为“待处理”状态,所以它是完美的......

例如,当我用贝宝买东西时,在创建新订单行时有相同的反应 BUUUT,有onBeforeUpdate一种方法可以检测到新订单行并且一些工作是异步完成的。使用新网关,该onBeforeUpdate方法似乎不再起作用了......我认为我忘记了使用 Paypal 而不是我的网关完成的一些事情,而是什么和在哪里?

我已经知道在其中写一些东西不是一个好主意,SqlOrderDatabaseInitializer.cs但我认为这不是问题......有人有解决方案吗?

谢谢

编辑: 我试图实现的解释: 销售的产品实际上是一对:“图像处理”+“图像”每个客户都可以管理相册并将照片放入其中,当他点击一个产品时(这是一个治疗)他可以选择一张专辑。所以这就是为什么我需要这个事件,当付款完成并且状态从待处理变为进行中时,我将相关信息(关于治疗,专辑......)发送到队列并且我有工作角色(每个人一个治疗)阅读这些消息并做一些工作。

我希望你能理解这个想法,但如果你不明白,请不要犹豫,问我问题

4

1 回答 1

0

你能解释一下为什么你需要那个事件吗?当这个事件被提出时你会怎么做?

以下是关于如何更改以下订单状态的一些说明:

订单状态实际上是由作业“ ProcessOrderStatusWork类”更改的,该作业只是在后台运行,并在订单处于待处理状态一段时间后将状态订单状态从“待处理”更改为“进行中”。我建议您创建“ ProcessOrderStatusWork ”类的副本并创建一个新工作(将其命名为MyProcessOrderStatusWork类),除了更改状态之外,还可以为您的付款添加自定义工作。然后,您可以注册该作业并禁用 VC 中包含的作业,因此它不会重复(通过将其添加到数据库中,类似于您使用支付网关的方式)。

它可能适用于 PayPal,因为它使用稍微不同的逻辑,因为在从 PayPal 回调时创建的订单,因此在相同的 Web 进程中执行并引发事件。

于 2014-07-23T17:03:40.770 回答