【问题标题】:Opencart payment gateway confirm() and update() syntaxOpencart 支付网关 confirm() 和 update() 语法
【发布时间】:2015-10-14 04:18:47
【问题描述】:

我正在尝试在 Opencart 中开发我的第一个支付网关,但在成功支付或取消支付后处理订单时遇到问题。

这是因为我找不到确认和更新函数的语法。

我在某个地方找到了这个:

$this->model_checkout_order->update(
        $order_id,
        $order_status,
        "",
        true
    );

但我只有 order_id 变量,但我不确定其他变量。比如我在哪里设置它们或者它应该包含什么?

这是我的代码(回调函数):

public function callback() {
if (isset($this->request->post['merchant_refID'])) {
  $order_id = $this->request->post['merchant_refID'];
} else {
  die('Illegal Access');
}

$this->load->model('checkout/order');
$order_info = $this->model_checkout_order->getOrder($order_id);

if ($order_info) {
  $data = array_merge($this->request->post,$this->request->get);

  //I am using mail function to verify transaction and it is working fine
  if ($data['status'] == '0') {
     mail('a@a.com','success','Success' ,'From: b@b.com');
   }else if ($data['status'] == '-22') {
     mail('a@a.com','failed','amount low' ,'From: b@b.com');
  }else if ($data['status'] == '-202') {
     mail('a@a.com','failed','bank low' ,'From: b@b.com');
  }else if ($data['status'] == '-300') {
     mail('a@a.com','failed','bank high' ,'From: b@b.com');
  }else if ($data['status'] == '-305') {
     mail('a@a.com','failed','failed' ,'From: b@b.com');
  }else if ($data['status'] == '-999') {
     mail('a@a.com','failed','other' ,'From: b@b.com');
  }
}
}

如何更新或确认我的订单?有这方面的指南吗?我真的很困惑!

【问题讨论】:

    标签: php opencart payment-gateway opencart-module


    【解决方案1】:

    你需要在邮件函数之前添加这个字符串

      $this->model_checkout_order->update($order_id, $this->config->get('some-payment_order_status_id'), $comment, false);   
    

    如果您需要发送更新

    改成

    是的

    【讨论】:

    • 你回答了我 50% 的问题。我同意你的看法!谢谢你的回答。
    【解决方案2】:

    我设法理解了工作,我发布了相同的内容。如果我错了,请纠正我,但据我所知,

    confirm() 函数必须用于确认新订单并进一步处理它。例如,如果您正在下订单并已付款。在这里,您需要使用 Confirm() 函数来提交订单并将电子邮件发送给买家。 confirm() 函数示例:

    $this->model_checkout_order->confirm($order_id, 2, $message, true);
    

    这会将 $order_id 的状态标记为 2,即(在我的情况下)处理中。您可以检查数据库中的其他状态代码(表:order_status)。

    另一方面,update() 函数用于更新订单的状态(对此不太确定)。就像你可以改变它的状态码使用:

        $this->model_checkout_order->update($order_id, 10, $message, true);
    

    在这里,它会将订单状态更改为 10,即(在我的情况下)失败。但据我所知,如果您将其用于新订单,那么它不会像 confirm() 那样向用户发送电子邮件。

    $message 显然是您要添加的消息。

    【讨论】:

    • 你能澄清一下你的答案吗?它看起来更像是笔记,而不是问题的答案。如果这里的其他人已经提供了这个答案,我建议提供归属。
    • @HunterStevens 如果您再次阅读我的问题,我要求的是 update() 和 confirm() 函数的示例。如果您再次阅读我的答案,我只是解释了这一点。另外,我自己想通了,这就是为什么我说我不确定我是否完全正确等等......荣誉!
    • 我在审核队列中遇到了您的答案,仅根据答案质量进行了评论。看到你问 Q 现在更有意义了
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-13
    • 2012-07-17
    • 1970-01-01
    • 2015-08-31
    • 2022-12-10
    • 2011-02-21
    • 2023-03-20
    相关资源
    最近更新 更多