Edit or Download and edit the following existing files on your X-Cart 4.1.12 install:
In cart_directory/top.inc.php
1) ADD
Code:
define('XC_TIME', time());
define('X_PAYMENT_TRANS_ALREADY_CAPTURED', 1);
define('X_PAYMENT_TRANS_ALREADY_VOIDED', 2);
define('X_PAYMENT_TRANS_ALREADY_REFUNDED', 4);
define('X_PAYMENT_TRANS_ALREADY_ACCEPTED', 8);
define('X_PAYMENT_TRANS_ALREADY_DECLINED', 16);
define('PAYMENT_NEW_STATUS', 1);
define('PAYMENT_AUTH_STATUS', 2);
define('PAYMENT_DECLINED_STATUS', 3);
define('PAYMENT_CHARGED_STATUS', 4);
define('X_USE_PAYPAL_FLOW', true);
After
Code:
$xcart_fs_default_permissions = array(
"dir" => array(
"nonprivileged" => 0777,
"privileged" => 0711
),
"file" => array(
"nonprivileged" => 0644,
"privileged" => 0644
),
"phpfile" => array(
"nonprivileged" => 0644,
"privileged" => 0600
)
);
(NOTE: Yes this is before })
In cart_directory/admin/cc_processing.php
1) ADD
Code:
if (!empty($active_modules['XPayments_Connector'])) {
func_xpay_func_load();
}
After
Code:
x_load('backoffice','crypt','tests');
2) REPLACE
Code:
$tmp = func_query_first("SELECT * FROM $sql_tbl[ccprocessors] WHERE processor='".$processor."'");
With
Code:
$where_query = '';
if (preg_match("/cc_xpc\.php_([0-9]+)/", $processor, $match)) {
$pm_id = intval($match[1]);
$processor = "cc_xpc.php";
$where_query = ' AND param01=\'' . $pm_id . '\'';
}
$tmp = func_query_first("SELECT * FROM $sql_tbl[ccprocessors] WHERE processor='".$processor."'" . $where_query);
3 ) ADD
Code:
if ($processor == 'cc_xpc.php') {
$insert_params['protocol'] = 'https';
}
After
Code:
$insert_params = array (
'payment_method' => $cc_processor,
'payment_script' => 'payment_cc.php',
'payment_template' => $template,
'active' => 'N',
'orderby' => '999',
'processor_file' => $processor
);
4) REPLACE
Code:
db_query("UPDATE $sql_tbl[ccprocessors] SET paymentid='".$paymentid."' WHERE processor='".$processor."'");
With
Code:
db_query("UPDATE $sql_tbl[ccprocessors] SET paymentid='".$paymentid."' WHERE processor='".$processor."'" . $where_query);
5) ADD
Code:
} elseif ($cc_processor == 'cc_xpc.php') {
$cc_processors = func_query("SELECT * FROM $sql_tbl[ccprocessors] WHERE paymentid>0 AND processor='cc_xpc.php'");
$smarty->assign('cc_processors', $cc_processors);
$cc_processing_module['module_name'] = 'X-Payments payment methods';
After
Code:
$conf_data[$pkey] = $cc_processing_module;
$conf_data[$akey] = func_query_first("SELECT $sql_tbl[ccprocessors].* FROM $sql_tbl[ccprocessors] WHERE $sql_tbl[ccprocessors].processor = '$asearch'");
$smarty->assign('conf_data', $conf_data);
(NOTE: Yes this is before })[/code]
In cart_directory/admin/configuration.php
1) REPLACE
Code:
$trusted_post_variables = array("gpg_key", "pgp_key");
With
Code:
$trusted_post_variables = array("gpg_key", "pgp_key", "xpc_private_key_password", "xpc_private_key", "xpc_public_key");
2) ADD
Code:
if ($option == 'XPayments_Connector') {
include $xcart_dir . '/modules/XPayments_Connector/xpc_admin.php';
}
After
Code:
if ($REQUEST_METHOD=="POST") {
require $xcart_dir."/include/safe_mode.php";
}
3) ADD
Code:
}
elseif ($option == "XML_Site_Map") {
include "./xml_sitemap.php";
After
Code:
if ($option == "User_Profiles") {
include "./user_profiles.php";
(NOTE: Yes this is before })[/code]
In cart_directory/admin/payment_methods.php
1) ADD
Code:
if (!empty($active_modules['XPayments_Connector'])) {
func_xpay_func_load();
}
After
Code:
define("IS_MULTILANGUAGE", 1);
require "./auth.php";
require $xcart_dir."/include/security.php";
x_load('backoffice','tests');
2) REPLACE
Code:
$payment_methods = func_query("SELECT pm.*,cc.module_name,cc.processor,cc.type FROM $sql_tbl[payment_methods] AS pm LEFT JOIN $sql_tbl[ccprocessors] AS cc ON (pm.paymentid=cc.paymentid OR pm.paymentid<>cc.paymentid AND pm.processor_file=cc.processor) ORDER BY pm.orderby, pm.paymentid");
With
Code:
$payment_methods = func_query("SELECT pm.*, cc.module_name, cc.processor, cc.type, cc.param01 FROM $sql_tbl[payment_methods] AS pm LEFT JOIN $sql_tbl[ccprocessors] AS cc ON (pm.paymentid=cc.paymentid OR pm.paymentid<>cc.paymentid AND pm.processor_file=cc.processor AND cc.processor != 'cc_xpc.php') ORDER BY pm.active DESC, pm.orderby, pm.paymentid");
3) ADD
Code:
if (!empty($active_modules['XPayments_Connector'])) {
foreach ($cc_module_files as $key => $value) {
if ($value['processor'] == 'cc_xpc.php') {
$cc_module_files[$key]['processor'] .= '_' . $value['param01'];
}
}
}
After
Code:
$cc_module_files = func_query("select * from $sql_tbl[ccprocessors] where paymentid='0' and processor<>'ps_paypal_pro.php' order by type,module_name");
$sb_module_files = func_query("select * from $sql_tbl[ccprocessors] where type='C' and background='Y' order by module_name");
One .tpl file to edit.
In cart_directory/skin1/admin/configuration.tpl
1) ADD
Code:
{elseif $option eq "XML_Site_Map"}
{include file="admin/main/xml_sitemap.tpl"}
After
Code:
{elseif $option eq "Search_products"}
{include file="admin/main/search_products_form.tpl"}
(NOTE: Yes this is before {else})
2) ADD
Code:
{if $option eq "XPayments_Connector"}
{include file="modules/XPayments_Connector/config_recommends.tpl"}
{/if}
After
Code:
{if $option eq "Google_Analytics"}
{$lng.google_analytics_info}
<br />
<br />
{/if}
3) ADD
Code:
{elseif $option eq "XPayments_Connector"}
{include file="modules/XPayments_Connector/config_bottom.tpl"}
After
Code:
<h3>{$lng.lbl_test_data_encryption}</h3>
<a href="test_pgp.php">{$lng.lbl_test_data_encryption_link}</a>
(NOTE: Yes this is before {/if})
YOU ARE DONE!!!!
In your X-Cart under modules click configure for X-Payments Connector
Store ID: < This is the store ID that was assigned when you set up the store in X-Payments >
X-Payments URL:
https://domain where X-Payments is/X-Payments Directory (NO Trailing /)(must be https)
Public key: < This is the public key that was assigned when you set up the store in X-Payments >
Private key: < This is the private key that was assigned when you set up the store in X-Payments >
Private key password: < This is the private key password that was assigned when you set up the store in X-Payments >
IP addresses for X-Payments callbacks: IP of server hosting X-Payments