📄 paypalwpp.php
字号:
$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');
if ($order_amount > 10000) $this->enabled = false;
}
}
/**
* Validate the credit card information via javascript (Number, Owner, and CVV Lengths)
*/
function javascript_validation() {
if ($this->in_special_checkout() || $this->enableDirectPayment == false) {
// if we are in express-checkout flow or if DirectPayment is disabled (ie: just mark flow) then no JS validation req'd
return false;
}
return ' if (payment_value == "' . $this->code . '") {' . "\n" .
' var cc_firstname = document.checkout_payment.paypalec_cc_firstname.value;' . "\n" .
' var cc_lastname = document.checkout_payment.paypalec_cc_lastname.value;' . "\n" .
' var cc_number = document.checkout_payment.paypalec_cc_number.value;' . "\n" .
' var cc_checkcode = document.checkout_payment.paypalwpp_cc_checkcode.value;' . "\n" .
' if (cc_firstname == "" || cc_lastname == "" || eval(cc_firstname.length) + eval(cc_lastname.length) < ' . CC_OWNER_MIN_LENGTH . ') {' . "\n" .
' error_message = error_message + "' . MODULE_PAYMENT_PAYPALWPP_TEXT_JS_CC_OWNER . '";' . "\n" .
' error = 1;' . "\n" .
' }' . "\n" .
' if (cc_number == "" || cc_number.length < ' . CC_NUMBER_MIN_LENGTH . ') {' . "\n" .
' error_message = error_message + "' . MODULE_PAYMENT_PAYPALWPP_TEXT_JS_CC_NUMBER . '";' . "\n" .
' error = 1;' . "\n" .
' }' . "\n" .
' }' . "\n";
}
/**
* Display Credit Card Information Submission Fields on the Checkout Payment Page
*/
function selection() {
global $order;
$this->cc_type_check =
'var value = document.checkout_payment.paypalec_cc_type.value;' .
'if (value == "Switch" || value == "Solo") {' .
' document.checkout_payment.paypalec_cc_issue_month.disabled = false;' .
' document.checkout_payment.paypalec_cc_issue_year.disabled = false;' .
' document.checkout_payment.paypalec_cc_checkcode.disabled = true;' .
' if (document.checkout_payment.paypalec_cc_issuenumber) document.checkout_payment.paypalec_cc_issuenumber.disabled = true;' .
'} else if (value == "Maestro") {' .
' document.checkout_payment.paypalec_cc_issuenumber.disabled = false;' .
' if (document.checkout_payment.paypalec_cc_issue_month) document.checkout_payment.paypalec_cc_issue_month.disabled = true;' .
' if (document.checkout_payment.paypalec_cc_issue_year) document.checkout_payment.paypalec_cc_issue_year.disabled = true;' .
' document.checkout_payment.paypalec_cc_checkcode.disabled = false;' .
'} else {' .
' if (document.checkout_payment.paypalec_cc_issuenumber) document.checkout_payment.paypalec_cc_issuenumber.disabled = true;' .
' document.checkout_payment.paypalec_cc_checkcode.disabled = false;' .
'}';
if (sizeof($this->cards) == 0 || $this->enableDirectPayment == false) $this->cc_type_check = '';
/**
* if we are NOT processing via the gateway, we will only display MarkFlow payment option, and no CC fields
*/
if ($this->enableDirectPayment == false) {
return array('id' => $this->code,
'module' => '<img src="' . MODULE_PAYMENT_PAYPALWPP_MARK_BUTTON_IMG . '" alt="' . MODULE_PAYMENT_PAYPALWPP_MARK_BUTTON_TXT . '" /><span style="font-size:12px; font-family: Arial, Verdana;"> ' . MODULE_PAYMENT_PAYPALWPP_MARK_BUTTON_TXT . '</span>');
}
/**
* if we ARE processing via the gateway, prepare and display both the CC fields and the PP option
*/
$expires_month = array();
$expires_year = array();
$issue_year = array();
for ($i = 1; $i < 13; $i++) {
$expires_month[] = array('id' => sprintf('%02d', $i), 'text' => strftime('%B - (%m)',mktime(0,0,0,$i,1,2000)));
}
$today = getdate();
for ($i = $today['year']; $i < $today['year'] + 10; $i++) {
$expires_year[] = array('id' => strftime('%y', mktime(0,0,0,1,1,$i)), 'text' => strftime('%Y',mktime(0,0,0,1,1,$i)));
}
$onFocus = ' onfocus="methodSelect(\'pmt-' . $this->code . '\')"';
$fieldsArray = array();
$fieldsArray[] = array('title' => MODULE_PAYMENT_PAYPALWPP_TEXT_CREDIT_CARD_FIRSTNAME,
'field' => zen_draw_input_field('paypalec_cc_firstname', $order->billing['firstname'], 'id="'.$this->code.'-cc-ownerf"'. $onFocus) .
'<script type="text/javascript">function paypalec_cc_type_check() { ' . $this->cc_type_check . ' } </script>',
'tag' => $this->code.'-cc-ownerf');
$fieldsArray[] = array('title' => MODULE_PAYMENT_PAYPALWPP_TEXT_CREDIT_CARD_LASTNAME,
'field' => zen_draw_input_field('paypalec_cc_lastname', $order->billing['lastname'], 'id="'.$this->code.'-cc-ownerl"'. $onFocus),
'tag' => $this->code.'-cc-ownerl');
if (sizeof($this->cards)>0) $fieldsArray[] = array('title' => MODULE_PAYMENT_PAYPALWPP_TEXT_CREDIT_CARD_TYPE,
'field' => zen_draw_pull_down_menu('paypalec_cc_type', $this->cards, '', 'onchange="paypalec_cc_type_check();" onblur="paypalec_cc_type_check();"' . 'id="'.$this->code.'-cc-type"'. $onFocus),
'tag' => $this->code.'-cc-type');
$fieldsArray[] = array('title' => MODULE_PAYMENT_PAYPALWPP_TEXT_CREDIT_CARD_NUMBER,
'field' => zen_draw_input_field('paypalec_cc_number', $ccnum, 'id="'.$this->code.'-cc-number"' . $onFocus),
'tag' => $this->code.'-cc-number');
$fieldsArray[] = array('title' => MODULE_PAYMENT_PAYPALWPP_TEXT_CREDIT_CARD_EXPIRES,
'field' => zen_draw_pull_down_menu('paypalec_cc_expires_month', $expires_month, '', 'id="'.$this->code.'-cc-expires-month"' . $onFocus) . ' ' . zen_draw_pull_down_menu('paypalec_cc_expires_year', $expires_year, '', 'id="'.$this->code.'-cc-expires-year"' . $onFocus),
'tag' => $this->code.'-cc-expires-month');
$fieldsArray[] = array('title' => MODULE_PAYMENT_PAYPALWPP_TEXT_CREDIT_CARD_CHECKNUMBER,
'field' => zen_draw_input_field('paypalec_cc_checkcode', '', 'size="4" maxlength="4"' . ' id="'.$this->code.'-cc-cvv"' . $onFocus) . ' <small>' . MODULE_PAYMENT_PAYPALWPP_TEXT_CREDIT_CARD_CHECKNUMBER_LOCATION . '</small><script type="text/javascript">paypalec_cc_type_check();</script>',
'tag' => $this->code.'-cc-cvv');
if (MODULE_PAYMENT_PAYPALWPP_MODULE_MODE == 'PayPal') $fieldsArray[] = array('title' => '<br /><img src="' . MODULE_PAYMENT_PAYPALWPP_MARK_BUTTON_IMG . '" alt="' . MODULE_PAYMENT_PAYPALWPP_MARK_BUTTON_TXT . '" /><span style="font-size:11px; font-family: Arial, Verdana;"> ' . MODULE_PAYMENT_PAYPALWPP_MARK_BUTTON_TXT . '</span>');
$selection = array('id' => $this->code,
'module' => MODULE_PAYMENT_PAYPALWPP_TEXT_TITLE,
'fields' => $fieldsArray);
if (MODULE_PAYMENT_PAYPALWPP_MODULE_MODE == 'Payflow-UK' && (CC_ENABLED_SOLO=='1' || CC_ENABLED_SWITCH=='1')) {
// add extra fields for Switch/Solo cards
for ($i = $today['year'] - 10; $i <= $today['year']; $i++) {
$issue_year[] = array('id' => strftime('%y',mktime(0,0,0,1,1,$i)), 'text' => strftime('%Y',mktime(0,0,0,1,1,$i)));
}
array_splice($selection['fields'], 4, 0,
array(array('title' => MODULE_PAYMENT_PAYPALWPP_TEXT_CREDIT_CARD_ISSUE,
'field' => zen_draw_pull_down_menu('paypalec_cc_issue_month', $expires_month, '', 'id="'.$this->code.'-cc-issue-month"' . $onFocus ) . ' ' . zen_draw_pull_down_menu('paypalec_cc_issue_year', $issue_year, '', 'id="'.$this->code.'-cc-issue-year"' . $onFocus),
'tag' => $this->code.'-cc-issue-month')));
}
/* @TODO -- convert this to handle Issue Number
if (MODULE_PAYMENT_PAYPALWPP_MODULE_MODE == 'Payflow-UK' && CC_ENABLED_MAESTRO=='1') {
// add extra field for Maestro cards
array_splice($selection['fields'], 4, 0,
array(array('title' => MODULE_PAYMENT_PAYPALWPP_TEXT_CREDIT_CARD_MAESTRO_ISSUENUMBER,
'field' => zen_draw_pull_down_menu('paypalec_cc_issuenumber', $expires_month, '', 'id="'.$this->code.'-cc-issue-month"' . $onFocus ),
'tag' => $this->code.'-cc-issue-month')));
}
*/
return $selection;
}
/**
* This is the credit card check done between checkout_payment and
* checkout_confirmation (called from checkout_confirmation).
* Evaluates the Credit Card Type for acceptance and the validity of the Credit Card Number & Expiration Date
*/
function pre_confirmation_check() {
// If this is an EC checkout, do nothing.
if ($this->in_special_checkout() || $this->enableDirectPayment == false) {
return false;
}
include(DIR_WS_CLASSES . 'cc_validation.php');
$cc_validation = new cc_validation();
$result = $cc_validation->validate($_POST['paypalec_cc_number'],
$_POST['paypalec_cc_expires_month'], $_POST['paypalec_cc_expires_year'],
$_POST['paypalec_cc_issue_month'], $_POST['paypalec_cc_issue_year']);
$error = '';
switch ($result) {
case -1:
$error = sprintf(TEXT_CCVAL_ERROR_UNKNOWN_CARD, substr($cc_validation->cc_number, 0, 4));
break;
case -2:
case -3:
case -4:
$error = TEXT_CCVAL_ERROR_INVALID_DATE;
break;
case false:
$error = TEXT_CCVAL_ERROR_INVALID_NUMBER;
break;
}
$_POST['paypalec_cc_checkcode'] = preg_replace('/[^0-9]/i', '', $_POST['paypalec_cc_checkcode']);
$_POST['paypalec_cc_issuenumber'] = preg_replace('/[^0-9]/i', '', $_POST['paypalec_cc_issuenumber']);
if (($result === false) || ($result < 1) ) {
$this->terminateEC(MODULE_PAYMENT_PAYPALWPP_TEXT_CARD_ERROR . '<br />' . $error, false, FILENAME_CHECKOUT_PAYMENT);
}
$this->cc_card_type = $cc_validation->cc_type;
$this->cc_card_number = $cc_validation->cc_number;
$this->cc_expiry_month = $cc_validation->cc_expiry_month;
$this->cc_expiry_year = $cc_validation->cc_expiry_year;
$this->cc_checkcode = $_POST['paypalec_cc_checkcode'];
}
/**
* Display Credit Card Information for review on the Checkout Confirmation Page
*/
function confirmation() {
if ($this->in_special_checkout() || $this->enableDirectPayment == false) {
$confirmation = array('title' => '', 'fields' => array());
} else {
$confirmation = array('title' => '',
'fields' => array(array('title' => MODULE_PAYMENT_PAYPALWPP_TEXT_CREDIT_CARD_FIRSTNAME,
'field' => $_POST['paypalec_cc_firstname']),
array('title' => MODULE_PAYMENT_PAYPALWPP_TEXT_CREDIT_CARD_LASTNAME,
'field' => $_POST['paypalec_cc_lastname']),
array('title' => MODULE_PAYMENT_PAYPALWPP_TEXT_CREDIT_CARD_TYPE,
'field' => $this->cc_card_type),
array('title' => MODULE_PAYMENT_PAYPALWPP_TEXT_CREDIT_CARD_NUMBER,
'field' => substr($_POST['paypalec_cc_number'], 0, 4) . str_repeat('X', (strlen($_POST['paypalec_cc_number']) - 8)) . substr($_POST['paypalec_cc_number'], -4)),
array('title' => MODULE_PAYMENT_PAYPALWPP_TEXT_CREDIT_CARD_EXPIRES,
'field' => strftime('%B, %Y', mktime(0,0,0,$_POST['paypalec_cc_expires_month'], 1, '20' . $_POST['paypalec_cc_expires_year'])))));
}
return $confirmation;
}
/**
* Prepare the hidden fields comprising the parameters for the Submit button on the checkout confirmation page
*/
function process_button() {
if ($this->in_special_checkout() || $this->enableDirectPayment == false) {
$process_button_string = '';
} else {
$_SESSION['paypal_ec_markflow'] = 1;
$process_button_string = zen_draw_hidden_field('ec_cc_type', $_POST['paypalec_cc_type']) .
zen_draw_hidden_field('ec_cc_expdate_month', $_POST['paypalec_cc_expires_month']) .
zen_draw_hidden_field('ec_cc_expdate_year', $_POST['paypalec_cc_expires_year']) .
zen_draw_hidden_field('ec_cc_issuedate_month', $_POST['paypalec_cc_issue_month']) .
zen_draw_hidden_field('ec_cc_issuedate_year', $_POST['paypalec_cc_issue_year']) .
zen_draw_hidden_field('ec_cc_number', $_POST['paypalec_cc_number']) .
zen_draw_hidden_field('ec_cc_checkcode', $_POST['paypalec_cc_checkcode']) .
zen_draw_hidden_field('ec_payer_firstname', $_POST['paypalec_cc_firstname']) .
zen_draw_hidden_field('ec_payer_lastname', $_POST['paypalec_cc_lastname']);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -