2017-02-27 11 views
0

私は現在、新しい支払いゲートウェイ用のOpenCart支払い拡張機能を構築しています。今、私は正常に支払いを行い、商店街にリダイレクトすることができますが、注文ステータスを更新するようにコードを書く方法はわかりません。OpenCartの注文状況を更新するには

私のすべての注文は今、注文の不足で表示されていると私はそれのためだと思う。私はコールバック関数を持っていないと私はそれについて行く方法を知らない。支払いが成功した場合に完了した注文ステータスを更新できるようにコードを更新したい場合や、支払いが失敗した場合でもチェックアウトにリダイレクトされますが、依然として注文ステータスが更新されます。

これは、以下の私のコードです:

<?php 
class ControllerExtensionPaymentSCPAY extends Controller { 
    public function index() { 
     $this->load->language('extension/payment/sc_pay'); 

     $data['button_confirm'] = $this->language->get('button_confirm'); 

     $data['testmode'] = $this->config->get('sc_pay_test'); 

     $order_info = $this->model_checkout_order->getOrder($this->session->data['order_id']); 
     $total = $order_info['total']; 

     $newbutton = str_replace("50", $total, $this->config->get('sc_pay_button_link')); 

     $newbutton = $newbutton . "&redirect_url=" .$this->url->link('checkout/success'); 


     if (!$this->config->get('sc_pay_test')) { 
      $data['action'] = $newbutton; 
     } 
else { 
      $data['action'] = ''; 
     } 

     $this->load->model('checkout/order'); 

     $order_info = $this->model_checkout_order->getOrder($this->session->data['order_id']); 

     if ($order_info) { 
      $data['business'] = $this->config->get('sc_pay_email'); 
      $data['item_name'] = html_entity_decode($this->config->get('config_name'), ENT_QUOTES, 'UTF-8'); 

      $data['products'] = array(); 

      foreach ($this->cart->getProducts() as $product) { 
       $option_data = array(); 

       foreach ($product['option'] as $option) { 
        if ($option['type'] != 'file') { 
         $value = $option['value']; 
        } 
else { 
         $upload_info = $this->model_tool_upload->getUploadByCode($option['value']); 

         if ($upload_info) { 
          $value = $upload_info['name']; 
         } 
else { 
          $value = ''; 
         } 
        } 

        $option_data[] = array(
         'name' => $option['name'], 
         'value' => (utf8_strlen($value) > 20 ? utf8_substr($value, 0, 20) . '..' : $value) 
        ); 
       } 

       $data['products'][] = array(
        'name'  => htmlspecialchars($product['name']), 
        'model' => htmlspecialchars($product['model']), 
        'price' => $this->currency->format($product['price'], $order_info['currency_code'], false, false), 
        'quantity' => $product['quantity'], 
        'option' => $option_data, 
        'weight' => $product['weight'] 
       ); 
      } 

      $data['discount_amount_cart'] = 0; 

      $total = $this->currency->format($order_info['total'] - $this->cart->getSubTotal(), $order_info['currency_code'], false, false); 

      if ($total > 0) { 
       $data['products'][] = array(
        'name'  => $this->language->get('text_total'), 
        'model' => '', 
        'price' => $total, 
        'quantity' => 1, 
        'option' => array(), 
        'weight' => 0 
       ); 
      } 
else { 
       $data['discount_amount_cart'] -= $total; 
      } 

      $data['currency_code'] = $order_info['currency_code']; 
      $data['first_name'] = html_entity_decode($order_info['payment_firstname'], ENT_QUOTES, 'UTF-8'); 
      $data['last_name'] = html_entity_decode($order_info['payment_lastname'], ENT_QUOTES, 'UTF-8'); 
      $data['address1'] = html_entity_decode($order_info['payment_address_1'], ENT_QUOTES, 'UTF-8'); 
      $data['address2'] = html_entity_decode($order_info['payment_address_2'], ENT_QUOTES, 'UTF-8'); 
      $data['city'] = html_entity_decode($order_info['payment_city'], ENT_QUOTES, 'UTF-8'); 
      $data['zip'] = html_entity_decode($order_info['payment_postcode'], ENT_QUOTES, 'UTF-8'); 
      $data['country'] = $order_info['payment_iso_code_2']; 
      $data['email'] = $order_info['email']; 
      $data['invoice'] = $this->session->data['order_id'] . ' - ' . html_entity_decode($order_info['payment_firstname'], ENT_QUOTES, 'UTF-8') . ' ' . html_entity_decode($order_info['payment_lastname'], ENT_QUOTES, 'UTF-8'); 
      $data['lc'] = $this->session->data['language']; 
      $data['return'] = $this->url->link('checkout/success'); 
      $data['notify_url'] = $this->url->link('extension/payment/sc_pay/callback', '', true); 
      $data['cancel_return'] = $this->url->link('checkout/checkout', '', true); 

      $data['custom'] = $this->session->data['order_id']; 

      return $this->load->view('extension/payment/sc_pay', $data); 
     } 
    } 

enter code here 

答えて

0

私はあなたがopencartの2.3.0.2バージョンを使用しているあなたのコントローラファイルから想定しています。

//some validation here 
$this->model_checkout_order->addOrderHistory($order_id, $order_status_id,print_r($callback,true),true,false); 

// if order id is not 0, it will update order status to whatever you defined in admin/payment settings (integer). if 0, it will add new order 
+0

コードをどの欄に追加する必要がありますか?私はOpencartにとても新しいです – oriolowonancy

+0

私はそれを試しましたが、私はまだ不足している注文を取得しています。あなたのコードはどのコールバック関数を参照していますか? @ rinkal – oriolowonancy

+0

コールバック関数を作成し、他の支払いゲートウェイのコントローラファイルをチェックする必要があります、あなたは助けを得るでしょう。 –

関連する問題