📄 paypaldp.php
字号:
<?php
/**
* paypaldp.php payment module class for Paypal Website Payments Pro
*
* @package paymentMethod
* @copyright Copyright 2003-2007 Zen Cart Development Team
* @copyright Portions Copyright 2003 osCommerce
* @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0
* @version $Id: paypaldp.php 7620 2007-12-11 19:12:46Z drbyte $
*/
/**
* load the communications layer code
*/
require_once(DIR_FS_CATALOG . DIR_WS_MODULES . 'payment/paypal/paypal_curl.php');
/**
* the PayPal payment module with Express Checkout
*
* currently supports US-NVP
*
*/
class paypaldp extends base {
/**
* name of this module
*
* @var string
*/
var $code;
/**
* displayed module title
*
* @var string
*/
var $title;
/**
* displayed module description
*
* @var string
*/
var $description;
/**
* module status - set based on various config and zone criteria
*
* @var string
*/
var $enabled;
/**
* the zone to which this module is restricted for use
*
* @var string
*/
var $zone;
/**
* array holding accepted DP/gateway card types
*
* @var array
*/
var $cards = array();
/**
* JS code used for gateway/DP mode
*
* @var string
*/
var $cc_type_javascript = '';
/**
* JS code used for gateway/DP mode
*
* @var string
*/
var $cc_type_check = '';
/**
* debugging flag
*
* @var boolean
*/
var $enableDebugging = false;
/**
* is DP enabled ?
*
* @var boolean
*/
var $enableDirectPayment = true;
/**
* sort order of display
*
* @var int
*/
var $sort_order = 0;
/**
* Button Source / BN code -- enables the module to work for Zen Cart
*
* @var string
*/
var $buttonSource = 'ZenCart-DP_us';
/**
* order status setting for pending orders
*
* @var int
*/
var $order_pending_status = 1;
/**
* order status setting for completed orders
*
* @var int
*/
var $order_status = DEFAULT_ORDERS_STATUS_ID;
/**
* Debug tools
*/
var $_logDir = 'includes/modules/payment/paypal/logs/';
var $_logLevel = 0;
/**
* class constructor
*/
function paypaldp() {
include_once(zen_get_file_directory(DIR_FS_CATALOG . DIR_WS_LANGUAGES . $_SESSION['language'] . '/modules/payment/', 'paypaldp.php', 'false'));
global $order;
$this->code = 'paypaldp';
$this->codeTitle = MODULE_PAYMENT_PAYPALDP_TEXT_ADMIN_TITLE_WPP;
$this->codeVersion = '1.3.8a';
$this->enableDirectPayment = true;
$this->enabled = (MODULE_PAYMENT_PAYPALDP_STATUS == 'True');
// Set the title & description text based on the mode we're in
if (IS_ADMIN_FLAG === true) {
$this->description = sprintf(MODULE_PAYMENT_PAYPALDP_TEXT_ADMIN_DESCRIPTION, ' (v' . $this->codeVersion . ')');
$this->title = MODULE_PAYMENT_PAYPALDP_TEXT_ADMIN_TITLE_WPP;
if ($this->enabled) {
if ( (MODULE_PAYMENT_PAYPALDP_MODULE_MODE == 'PayPal' && (MODULE_PAYMENT_PAYPALWPP_APISIGNATURE == '' || MODULE_PAYMENT_PAYPALWPP_APIUSERNAME == '' || MODULE_PAYMENT_PAYPALWPP_APIPASSWORD == ''))
|| (!defined('MODULE_PAYMENT_PAYPALWPP_STATUS') || MODULE_PAYMENT_PAYPALWPP_STATUS != 'True')
) $this->title .= '<span class="alert"><strong> NOT CONFIGURED YET</strong></span>';
if (MODULE_PAYMENT_PAYPALDP_SERVER =='sandbox') $this->title .= '<strong><span class="alert"> (sandbox active)</span></strong>';
if (MODULE_PAYMENT_PAYPALDP_DEBUGGING =='Log File' || MODULE_PAYMENT_PAYPALDP_DEBUGGING =='Log and Email') $this->title .= '<strong> (Debug)</strong>';
if (!function_exists('curl_init')) $this->title .= '<strong><span class="alert"> CURL NOT FOUND. Cannot Use.</span></strong>';
}
} else {
$this->description = MODULE_PAYMENT_PAYPALDP_TEXT_DESCRIPTION;
$this->title = MODULE_PAYMENT_PAYPALDP_TEXT_TITLE; //cc
}
if ((!defined('PAYPAL_OVERRIDE_CURL_WARNING') || (defined('PAYPAL_OVERRIDE_CURL_WARNING') && PAYPAL_OVERRIDE_CURL_WARNING != 'True')) && !function_exists('curl_init')) $this->enabled = false;
$this->enableDebugging = true;//(MODULE_PAYMENT_PAYPALDP_DEBUGGING == 'Log File' || MODULE_PAYMENT_PAYPALDP_DEBUGGING =='Log and Email');
$this->emailAlerts = (MODULE_PAYMENT_PAYPALDP_DEBUGGING == 'Log File' || MODULE_PAYMENT_PAYPALDP_DEBUGGING =='Log and Email' || MODULE_PAYMENT_PAYPALDP_DEBUGGING == 'Alerts Only');
$this->sort_order = MODULE_PAYMENT_PAYPALDP_SORT_ORDER;
$this->buttonSource = 'ZenCart-DP_us';
if (MODULE_PAYMENT_PAYPALDP_MODULE_MODE == 'Payflow-UK') {
$this->buttonSource = 'ZenCart-DP_uk';
}
if (MODULE_PAYMENT_PAYPALDP_MODULE_MODE == 'Payflow-US') {
$this->buttonSource = 'ZenCart-GW_us';
}
$this->order_pending_status = MODULE_PAYMENT_PAYPALDP_ORDER_PENDING_STATUS_ID;
if ((int)MODULE_PAYMENT_PAYPALDP_ORDER_STATUS_ID > 0) {
$this->order_status = MODULE_PAYMENT_PAYPALDP_ORDER_STATUS_ID;
}
// $this->new_acct_notify = MODULE_PAYMENT_PAYPALDP_NEW_ACCT_NOTIFY;
$this->zone = (int)MODULE_PAYMENT_PAYPALDP_ZONE;
if (is_object($order)) $this->update_status();
if (PROJECT_VERSION_MAJOR != '1' && substr(PROJECT_VERSION_MINOR, 0, 3) != '3.8') $this->enabled = false;
// offer credit card choices for pull-down menu -- only needed for UK version
$this->cards = array();
if (MODULE_PAYMENT_PAYPALDP_MODULE_MODE == 'Payflow-UK') {
if (CC_ENABLED_VISA=='1') $this->cards[] = array('id' => 'Visa', 'text' => 'Visa');
if (CC_ENABLED_MC=='1') $this->cards[] = array('id' => 'MasterCard', 'text' => 'MasterCard');
if (CC_ENABLED_MAESTRO=='1') $this->cards[] = array('id' => 'Maestro', 'text' => 'Maestro');
if (CC_ENABLED_SWITCH=='1') $this->cards[] = array('id' => 'Switch', 'text' => 'Switch');
if (CC_ENABLED_SOLO=='1') $this->cards[] = array('id' => 'Solo', 'text' => 'Solo');
}
// debug setup
if (!@is_writable($this->_logDir)) $this->_logDir = DIR_FS_CATALOG . $this->_logDir;
if (!@is_writable($this->_logDir)) $this->_logDir = DIR_FS_SQL_CACHE;
// Regular mode:
if ($this->enableDebugging) $this->_logLevel = PEAR_LOG_INFO;
// DEV MODE:
if (defined('PAYPAL_DEV_MODE') && PAYPAL_DEV_MODE == 'true') $this->_logLevel = PEAR_LOG_DEBUG;
$this->tableCheckup();
}
/**
* Sets payment module status based on zone restrictions etc
*/
function update_status() {
global $order, $db;
if ($this->enabled && (int)$this->zone > 0) {
$check_flag = false;
$sql = "SELECT zone_id
FROM " . TABLE_ZONES_TO_GEO_ZONES . "
WHERE geo_zone_id = :zoneId
AND zone_country_id = :countryId
ORDER BY zone_id";
$sql = $db->bindVars($sql, ':zoneId', $this->zone, 'integer');
$sql = $db->bindVars($sql, ':countryId', $order->billing['country']['id'], 'integer');
$check = $db->Execute($sql);
while (!$check->EOF) {
if ($check->fields['zone_id'] < 1) {
$check_flag = true;
break;
} elseif ($check->fields['zone_id'] == $order->billing['zone_id']) {
$check_flag = true;
break;
}
$check->MoveNext();
}
if (!$check_flag) {
$this->enabled = false;
}
// module cannot be used for purchase > $10,000 USD
$order_amount = $this->calc_order_amount($order->info['total'], 'USD');
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -