Permalink
Browse files

Address Verification System (AVS).

  • Loading branch information...
1 parent c697c81 commit 2e37b629aedc7efaeac2144ca8139052271b632f ethem committed Jan 5, 2006
Showing with 74 additions and 29 deletions.
  1. +10 −0 enrol/authorize/config.html
  2. +15 −0 enrol/authorize/enrol.html
  3. +47 −28 enrol/authorize/enrol.php
  4. +2 −1 lang/en/enrol_authorize.php
@@ -91,6 +91,16 @@
</tr>
<tr valign="top">
+ <td align="right">an_avs:</td>
+ <td>
+ <input type="checkbox" value="1" name="an_avs" <?php if (!empty($frm->an_avs)) echo "checked=\"true\"" ?> />
+ </td>
+ <td>
+ <?php print_string("adminavs", "enrol_authorize") ?>
+ </td>
+</tr>
+
+<tr valign="top">
<td align="right">an_test:</td>
<td>
<input type="checkbox" value="1" name="an_test" <?php if (!empty($frm->an_test)) echo "checked=\"true\"" ?> />
View
@@ -56,6 +56,21 @@
<td align="left"><input type="text" name="cvv" size="4" maxlength="4" value="<?php p($form->cvv) ?>" />
<font size=1><?php print_string("ccvvhelp", "enrol_authorize") ?></font></td>
</tr>
+<?php if (!empty($CFG->an_avs)) { /* Address Verification System */ ?>
+<tr>
+ <td align="right"><?php print_string("address") ?>: </td>
+ <td align="left"><input type="text" name="ccaddress" size="32" value="<?php p($useraddress) ?>" /></td>
+</tr>
+<tr>
+ <td align="right"><?php print_string("city") ?> / <?php print_string("state") ?>: </td>
+ <td align="left"><input type="text" name="cccity" size="16" value="<?php p($usercity) ?>" /> /
+ <input type="text" name="ccstate" size="2" maxlength="2" value="<?php p($form->ccstate) ?>" /></td>
+</tr>
+<tr>
+ <td align="right"><?php print_string("country") ?>: </td>
+ <td align="left"><?php choose_from_menu(get_list_of_countries(), "cccountry", $usercountry, get_string("selectacountry")."..."); ?></td>
+</tr>
+<?php } ?>
<tr>
<td align="right"><?php print_string("zipcode", "enrol_authorize") ?>: </td>
<td align="left"><input type="text" name="cczip" size="5" value="<?php p($form->cczip) ?>" /></td>
View
@@ -13,21 +13,21 @@
require_once("$CFG->dirroot/enrol/enrol.class.php");
class enrolment_plugin extends enrolment_base {
-
+
var $ccerrormsg;
/// Override: print_entry()
function print_entry($course) {
global $CFG, $USER, $form;
-
+
if ($this->zero_cost($course) || isguest()) {
parent::print_entry($course);
return;
}
-
+
// check paid?
$this->check_paid();
-
+
// I want to paid on SSL.
if (empty($_SERVER['HTTPS'])) {
if (empty($CFG->loginhttps)) {
@@ -40,23 +40,27 @@ function print_entry($course) {
}
}
- $formvars = array('password', 'ccfirstname','cclastname','cc','ccexpiremm','ccexpireyyyy','cctype','cvv','cczip');
+ $formvars = array('password', 'ccfirstname','cclastname','cc','ccexpiremm','ccexpireyyyy','cctype','cvv',
+ 'ccaddress', 'cccity', 'ccstate', 'cccountry', 'cczip');
foreach ($formvars as $var) {
if (!isset($form->$var)) {
$form->$var = '';
}
}
-
+
$teacher = get_teacher($course->id);
+ $cost = $this->get_course_cost($course);
$strloginto = get_string("loginto", "", $course->shortname);
$strcourses = get_string("courses");
$userfirstname = empty($form->ccfirstname) ? $USER->firstname : $form->ccfirstname;
$userlastname = empty($form->cclastname) ? $USER->lastname : $form->cclastname;
- $cost = $this->get_course_cost($course);
+ $useraddress = empty($form->ccaddress) ? $USER->address : $form->ccaddress;
+ $usercity = empty($form->cccity) ? $USER->city : $form->cccity;
+ $usercountry = empty($form->cccountry) ? $USER->country : $form->cccountry;
print_header($strloginto, $course->fullname, "<a href=\"$CFG->wwwroot/course/\">$strcourses</a> -> $strloginto");
print_course($course, "80%");
-
+
if ($course->password) {
print_simple_box(get_string('choosemethod', 'enrol_authorize'), 'center');
$password = '';
@@ -66,7 +70,7 @@ function print_entry($course) {
print_simple_box_start("center");
include($CFG->dirroot . '/enrol/authorize/enrol.html');
print_simple_box_end();
-
+
print_footer();
}
@@ -91,14 +95,24 @@ function cc_submit($form, $course)
return;
}
+ if (!empty($CFG->an_avs)) {
+ if (empty($form->ccaddress) || empty($form->cccity) ||
+ empty($form->cccountry) || empty($form->cczip)) {
+ $this->ccerrormsg = get_string("allfieldsrequired");
+ return;
+ }
+ }
+
$exp_date = (($form->ccexpiremm<10) ? strval('0'.$form->ccexpiremm) : strval($form->ccexpiremm)) . ($form->ccexpireyyyy);
- if (! CCVal($form->cc, $form->cctype, $exp_date)) {
- $this->ccerrormsg = get_string( (($valid_cc===0) ? 'ccexpired' : 'ccinvalid'), 'enrol_authorize' );
+ $valid_cc = CCVal($form->cc, $form->cctype, $exp_date);
+ if (!$valid_cc) {
+ $this->ccerrormsg = get_string((($valid_cc===0) ? 'ccexpired' : 'ccinvalid'), 'enrol_authorize');
return;
}
$this->check_paid();
$order_number = 0; // can be get from db
+ $cost = $this->get_course_cost($course);
$formdata = array (
'x_version' => '3.1',
'x_delim_data' => 'True',
@@ -111,15 +125,15 @@ function cc_submit($form, $course)
'x_method' => 'CC',
'x_first_name' => $form->ccfirstname,
'x_last_name' => $form->cclastname,
- 'x_address' => $USER->address,
- 'x_city' => $USER->city,
+ 'x_address' => $form->ccaddress,
+ 'x_city' => $form->cccity,
'x_zip' => $form->cczip,
- 'x_country' => $USER->country,
- 'x_state' => '',
+ 'x_country' => $form->cccountry,
+ 'x_state' => $form->ccstate,
'x_card_num' => $form->cc,
'x_card_code' => $form->cvv,
'x_currency_code' => $CFG->enrol_currency,
- 'x_amount' => $this->get_course_cost($course),
+ 'x_amount' => $cost,
'x_exp_date' => $exp_date,
'x_email' => $USER->email,
'x_email_customer' => 'False',
@@ -137,7 +151,7 @@ function cc_submit($form, $course)
$poststring .= $k . "=" . urlencode($v) . "&";
}
$poststring .= (!empty($CFG->an_tran_key)) ?
- "x_tran_key" . "=" . urlencode($CFG->an_tran_key):
+ "x_tran_key" . "=" . urlencode($CFG->an_tran_key):
"x_password" . "=" . urlencode($CFG->an_password);
// referer
@@ -292,11 +306,11 @@ function get_access_icons($course) {
}
switch ($CFG->enrol_currency) {
- case 'EUR': $currency = '&euro;'; break;
- case 'CAD': $currency = '$'; break;
- case 'GBP': $currency = '&pound;'; break;
- case 'JPY': $currency = '&yen;'; break;
- default: $currency = '$'; break;
+ case 'EUR': $currency = '&euro;'; break;
+ case 'CAD': $currency = '$'; break;
+ case 'GBP': $currency = '&pound;'; break;
+ case 'JPY': $currency = '&yen;'; break;
+ default: $currency = '$'; break;
}
$str .= "<p class=\"coursecost\"><font size=-1>$strcost: " .
@@ -310,7 +324,7 @@ function get_access_icons($course) {
function config_form($frm) {
global $CFG;
- $vars = array('an_login', 'an_tran_key', 'an_password', 'an_referer', 'an_test',
+ $vars = array('an_login', 'an_tran_key', 'an_password', 'an_referer', 'an_avs', 'an_test',
'enrol_cost', 'enrol_currency', 'enrol_mailstudents', 'enrol_mailteachers', 'enrol_mailadmins');
foreach ($vars as $var) {
@@ -322,7 +336,7 @@ function config_form($frm) {
if (!$this->check_openssl_loaded()) {
notify('PHP must be compiled with SSL support (--with-openssl)');
}
-
+
if (data_submitted()) {
// Some required fields
if (empty($frm->an_login)) {
@@ -350,7 +364,7 @@ function process_config($config) {
{
return false;
}
-
+
$return = true;
if (!isset($config->an_login)) {
@@ -381,6 +395,11 @@ function process_config($config) {
}
set_config('an_referer', $config->an_referer);
+ if (!isset($config->an_avs)) {
+ $config->an_avs = '';
+ }
+ set_config('an_avs', $config->an_avs);
+
if (!isset($config->an_test)) {
$config->an_test = '';
}
@@ -419,11 +438,11 @@ function email_cc_error_to_admin($subject, $data) {
$admin = get_admin();
$site = get_site();
$message = "$site->fullname: Transaction failed.\n\n$subject\n\n";
-
+
foreach ($data as $key => $value) {
$message .= "$key => $value\n";
}
-
+
email_to_user($admin, $admin, "CC ERROR: ".$subject, $message);
}
@@ -436,6 +455,6 @@ function check_paid() {
exit;
}
}
-
+
} // end of class definition
?>
@@ -1,7 +1,8 @@
<?PHP // $Id$
- // enrol_authorize.php - created with Moodle 1.5.1 (2005060210)
+ // enrol_authorize.php - created with Moodle 1.5.3+ (2005060230)
+$string['adminavs'] = 'Check this if you have activated Address Verification System (AVS) in your authorize.net account. This demands address fields like street, state, country and zip when user fills out payment form.';
$string['anlogin'] = 'Authorize.net: Login name';
$string['anpassword'] = 'Authorize.net: Password';
$string['anreferer'] = 'Define the URL referer if you have set up this in your authorize.net account. This will send a line \"Referer: URL\" embedded in the web request.';

0 comments on commit 2e37b62

Please sign in to comment.