'opencart add script to checkout.php

I am using opencart as a platform for my online shop and I have to add a script to the page on which order is submitted and I don't know how to do it and what file I need to work with.

This is the script:

<?php

/*******************************************************************************
 * Pazaruvaj.com trusted shop program
 * Example code integration to the webshop
 * 
 *
 * Please note, that the example detailed below can not be simply copy-pasted
 * into your webshop’s code, it has to be customized adequately.
 *
 * Setup steps:
 * 1. Copy TrustedShop.php file to a place accessible by the webshop engine.
 * 2. Copy this example code to the page of the webshop where the e-mail address
 *    of the customer and the names of the purchased products are retrievable
 *    from the webshop engine. Generally this is the webshop’s confirmation
 *    page of the purchase.
 * 3. Customize the pasted example code according to the following:
 *    - Modify path of TrustedShop.php in require_once() in such a way that
 *      the webshop engine can use it.
 *    - Check that the proper WebAPI key is set, if not, modify it. You can find
 *      the WebAPI key on the partner portal.
 *    - Set the customer’s e-mail address.
 *    - Add the names of the purchased products.
 *    - Implement an error handling if you want (optional).
 *
 ******************************************************************************/

require_once 'TrustedShop.php';

try {

  // Provide your own WebAPI key.
  // You can find your WebAPI key on your partner portal.

  $Client = new TrustedShop('4eee39583f06aab1460277f41be9e0e7');

  // Provide the e-mail address of your customer.
  // You can retrieve the e-amil address from the webshop engine.

  $Client->SetEmail($data['email']);

  // Provide the name of the purchased products.
  // You can get the name of the products from the webshop engine.
  // The AddProduct method must be called for each of the purchased products.
  // 
  // It is optional to provide the name of the products, so if this data is not
  // available, you can leave out the AddProduct calls.

  $Client->AddProduct('Name of first purchased product');
  $Client->AddProduct('Name of second purchased product');

  // This method sends us the e-mail address and the name of the purchased
  // products set above. After the data arrived to us, we store them
  // with the time stamp and the WebAPI key.
  // This lets us know that someone has purchased at your webshop, to whom
  // we later have to send the questionnaire for evaluating your shop.
  // The "Send()" operation doesn't send immediately. It generates a HTML output, 
  // puts into source of the page and the customer's browser will send the 
  // required informations us.

  $Client->Send();

} catch (Exception $Ex) {

  // Here you can implement error handling. The error message can be obtained
  // in the manner shown below. Implementing error handling is optional.

  $ErrorMessage = $Ex->getMessage();
}

?>

and this is the included ThrustedShop.php 

<?php

class TrustedShop {

  const ServiceHost = 'www.pazaruvaj.com';

  const ServiceUrl = '/affiliation/TrustedShop.php';

  const ErrorEmail = 'Ne ste zadali email adres na klienta Vi.';

  const ErrorService = 'Zapazvaneto na dannite na klienta e neuspeshno.';

  private $WebApiKey;

  private $Email;

  private $Products = array();

  private $Protocol;

  public function __construct($WebApiKey) {
    $this->WebApiKey = $WebApiKey;
    $this->Protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off') ? 'https' : 'http';
  }

  public function SetEmail($Email) {
    $this->Email = $Email;
  }

  public function AddProduct($ProductName) {
    $this->Products[] = $ProductName;
  }

  public function Send() {
    if (empty($this->Email)) {
      throw new Exception(self::ErrorEmail);
    }

    $String = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
    $C = '';
    for ($i = 0; $i < 20; $i++) {
      $C .= $String{mt_rand(0, strlen($String) - 1)};
    }

    $Timestamp = time();
    $HashedKey = md5($this->WebApiKey . $Timestamp);

    $Query = 'HashedKey=' . $HashedKey . '&Email=' . urlencode($this->Email);
    foreach ($this->Products as $ProductName) {
      $Query .= '&Products[]=' . urlencode($ProductName);
    }
    $Query .= '&Timestamp=' . $Timestamp;

    echo '<script type="text/javascript" src="' . $this->Protocol . '://' . self::ServiceHost . '/fc.js"></script>';
    echo
      '<script type="text/javascript">',
      'function fc_request_done(C) { var I = new Image(); I.src=\'' . $this->Protocol . '://' . self::ServiceHost . self::ServiceUrl . "?" . $Query . '&C=\'+C; }',
      'set_fc("' . self::ServiceHost . '", "__aku","' . $C . '");',
      '</script>';

    echo
      '<noscript>',
      '<img src="' . $this->Protocol . '://' . self::ServiceHost . self::ServiceUrl . "?" . $Query . '&C=' . $C . '">',
      '</noscript>';
  }
}

?>


Solution 1:[1]

You would have to place the script (and modify it accordingly) into the catalog/model/checkout/order.php - method confirm()...

This method is saving the order data and setting the order as confirmed (or paid already) and sending email to the customer and optionally to the administrator(s). In this method both the customer's email address and products (and their names) could be accessed to fulfill the script's requirements.

In the confirm() method, find the line

foreach ($order_product_query->rows as $product) {

and before add the start of the script:

require_once 'TrustedShop.php'; // make sure the path is correct here!
$Client = new TrustedShop('4eee39583f06aab1460277f41be9e0e7');
$Client->SetEmail($order_info['email']);

now after that foreach line add this:

$Client->AddProduct($product['name']);

Now somewhere at the end of confirm() before the line with comment // Admin Alert Email add the final part of the script:

try {
    $Client->Send();
} catch(Exception $e) {
    $this->log->write($e->getMessage());
}

That should be it...

Solution 2:[2]

I know that the topic is old, but I have a similar code on which I can not fulfill one of the points

<?php

/*******************************************************************************
 * Pazaruvaj.com trusted shop program
 * Example code integration to the webshop
 * Please note, that the example detailed below can not be simply copy-pasted
 * into your webshop’s code, it has to be customized adequately.
 * Setup steps:
 * 1. Copy TrustedShop.php file to a place accessible by the webshop engine.
 * 2. Copy this example code to the page of the webshop where the e-mail address
 *    of the customer and the names of the purchased products are retrievable
 *    from the webshop engine. Generally this is the webshop’s confirmation
 *    page of the purchase.
 * 3. Customize the pasted example code according to the following:
 *    - Modify path of TrustedShop.php in require_once() in such a way that
 *      the webshop engine can use it.
 *    - Check that the proper WebAPI key is set, if not, modify it. You can find
 *      the WebAPI key on the partner portal.
 *    - Set the customer’s e-mail address.
 *    - Add the names of the purchased products.
 *    - Implement an error handling if you want (optional).
 *
 ******************************************************************************/

require_once 'library/TrustedShop.php;

try {
  
  /** Provide your own WebAPI key. You can find your WebAPI key on your partner portal. */
  $Client = new TrustedShop('2471d8cc784f98ced73d82983c097f1');
  
  /** Provide the e-mail address of your customer. You can retrieve the e-amil address from the webshop engine. */
  $Client->SetEmail('$order_info['email']');

  /** Customer's cart example. */
  $Cart = array(
    'AAA111' => 'Name of first purchased product',
    'BBB222' => 'Name of second purchased product'
  );

  /** Provide the name and the identifier of the purchased products.
    * You can get those from the webshop engine.
    * It must be called for each of the purchased products. */
  foreach($Cart as $ProductIdentifier => $ProductName) {
    /** If both product name and identifier are available, you can provide them this way: */
    $Client->AddProduct($ProductName, $ProductIdentifier);
    /** If only product name is available, you can provide it with the following call: */
    $Client->AddProduct($ProductName);
    /** If neither is available, you can leave out these calls. */
  }

  /** This method perpares to send us the e-mail address and the name of the purchased products set above.
   *  It returns an HTML code snippet which must be added to the webshop's source.
   *  After the generated code is downloaded into the customer's browser it begins to send purchase information. */
  echo $Client->Prepare();
  
/** Here you can implement error handling. The error message can be obtained in the manner shown below. This step is optional. */
} catch (Exception $Ex) {
  $ErrorMessage = $Ex->getMessage();
}
  • Add the names of the purchased products.

    /** Customer's cart example. */
    $Cart = array(
      'AAA111' => 'Name of first purchased product',
      'BBB222' => 'Name of second purchased product'
    );
    

I use OpenCart 2.3.0.2

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 shadyyx
Solution 2 VanioBoy