opencart将脚本添加到checkout.php



我使用opencart作为网上商店的平台,我必须在提交订单的页面上添加一个脚本,但我不知道如何执行,也不知道需要使用什么文件。

这是脚本:

<?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>';
  }
}
?>

您必须将脚本(并相应地修改它)放入catalog/model/checkout/order.php-方法confirm()。。。

这种方法是保存订单数据,将订单设置为已确认(或已付款),并向客户发送电子邮件,也可以向管理员发送电子邮件。在这种方法中,可以访问客户的电子邮件地址和产品(及其名称),以满足脚本的要求。

confirm()方法中,找到行

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

在之前添加脚本的开头:

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

现在foreach行之后添加此:

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

现在,在confirm()末尾的某个地方,在注释为// Admin Alert Email的行之前添加脚本的最后一部分:

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

应该是这样…

我知道这个主题很旧,但我有一个类似的代码,我无法实现

<?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();
}
  • 添加已购买产品的名称。

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

我使用OpenCart 2.3.0.2

最新更新