我在处理新的支付网关创建时遇到了一个大问题。我遵循了一个教程,但我认为我做错了什么,因为它不能很好地工作。
我想创建一个“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
但我认为这不是问题......有人有解决方案吗?
谢谢
编辑: 我试图实现的解释: 销售的产品实际上是一对:“图像处理”+“图像”每个客户都可以管理相册并将照片放入其中,当他点击一个产品时(这是一个治疗)他可以选择一张专辑。所以这就是为什么我需要这个事件,当付款完成并且状态从待处理变为进行中时,我将相关信息(关于治疗,专辑......)发送到队列并且我有工作角色(每个人一个治疗)阅读这些消息并做一些工作。
我希望你能理解这个想法,但如果你不明白,请不要犹豫,问我问题