E commerce VirtoCommerce-创建新的支付网关

E commerce VirtoCommerce-创建新的支付网关,e-commerce,payment,shopping-cart,virtocommerce,E Commerce,Payment,Shopping Cart,Virtocommerce,我在处理新的支付网关创建时遇到了一个大问题。我遵循了一个教程,但我认为我做错了什么,因为它不能很好地工作 我想创建一个“devis”(抱歉,我不知道英文中的单词…看起来是这样的 当客户购买东西时,他可以选择这种付款方式,这种付款方式只提供“设计”。如果订单的状态可以直接为“暂停”,以便在“真正付款”完成时取消冻结,这将是完美的 我希望你已经明白我试图做什么,但如果你没有自由问我问题 以下是我所做的: 我在VirtoCommerce.PaymentGateways命名空间中创建了一个名为deve

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

我想创建一个“devis”(抱歉,我不知道英文中的单词…看起来是这样的

当客户购买东西时,他可以选择这种付款方式,这种付款方式只提供“设计”。如果订单的状态可以直接为“暂停”,以便在“真正付款”完成时取消冻结,这将是完美的

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

以下是我所做的:

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

    payment.status=PaymentStatus.Completed.ToString()

  • SqlOrderDatabaseInitializer.cs

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

    private void设置网关(列出网关)

    在paypal网关之后的
    CreatePaymentGateways
    方法中调用

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

  • 我通过以下方式启用网关支付: VirtoCommerce经理然后我在网站上买了一些东西 选择可用的新付款,使其看起来有效
  • 当我点击继续结帐,我有一个新的订单行,这是创建 具有“待定”状态,所以它是完美的
例如,当我用paypal买东西时,在创建新订单行时也有同样的反应BUUUT有
onBeforeUpdate
方法检测到新订单行,并且一些工作是异步完成的。有了新网关,
onBeforeUpdate
方法似乎不再工作了。。。 我想我忘记了贝宝做的事情,而不是我的网关,但什么和哪里

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

谢谢

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


我希望你能理解这个想法,但如果你不理解,请毫不犹豫地问我一些问题

你能解释一下你为什么需要这个活动吗?当这个活动开始时,你会怎么做

下面对如何更改以下订单的状态进行一些解释:

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


它可能适用于PayPal,因为它使用的逻辑稍有不同,因为从PayPal回拨时创建的订单,因此会在同一web进程和事件中执行。

好的,我会尝试这样做。但是你在哪里创建新作业?因为如果我删除该作业以创建另一个作业,我不明白它是如何工作的……这是一篇更详细地描述如何创建、注册作业以及它们如何工作的文章: