Opencart支付网关confirm()和update()语法

时间:2015-07-23 17:40:23

标签: php opencart payment-gateway opencart-module

我正在尝试在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');
  }
}
}

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

2 个答案:

答案 0 :(得分:1)

您需要在邮件功能

之前添加此字符串
  $this->model_checkout_order->update($order_id, $this->config->get('some-payment_order_status_id'), $comment, false);   

如果您需要发送更新

  

更改为

  

答案 1 :(得分:0)

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

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

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

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

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

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

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

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