VirtoCommerce - 创建新的支付网关

时间:2014-07-23 07:44:54

标签: e-commerce payment shopping-cart virtocommerce

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

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

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

我希望你能理解我尝试做什么,但如果你没有自由地问我问题。

以下是我所做的:

  • 我在名为VirtoCommerce.PaymentGateways的{​​{1}}名称空间中创建了一个新类,它继承自DevisPaymentGateway类。 在这个课程中只有一个方法:PaymentGatewayBase我在哪里:

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

  • ProcessPayment

    中的
  • 我创建了一个私有的SqlOrderDatabaseInitializer.cs方法:

    SetupDevisGateway

    在paypal网关之后的private void SetupPaypalGateway(List<PaymentGateway> gateways)方法中调用。

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

  • 我启用了网关付款 VirtoCommerce Manager然后我在网站上买了一些东西 选择了新的付款方式,以便它可以使用。
  • 当我点击继续结帐时,我创建了一个新的订单行 处于“待定”状态,所以它很完美......

当我用paypal购买东西时,在创建新订单行时有相同的反应BUUUT有CreatePaymentGateways方法检测到新行并且某些工作是异步完成的。使用新网关似乎onBeforeUpdate方法不再起作用了...... 我认为我已经忘记了使用Paypal完成的事情,而不是我的网关,但不管是什么,在哪里?

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

由于

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

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

1 个答案:

答案 0 :(得分:0)

你能解释为什么需要这个活动吗?该事件被提出后你会做什么?

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

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

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