Hashed out the beginnings of the Cash Payment module. Still need to finish it up. Also need to add the group restrictions to the Payment superclass.
This commit is contained in:
parent
9ef6621cc3
commit
e6d08227fd
1 changed files with 538 additions and 0 deletions
538
lib/WebGUI/Commerce/Payment/Cash.pm
Normal file
538
lib/WebGUI/Commerce/Payment/Cash.pm
Normal file
|
|
@ -0,0 +1,538 @@
|
|||
package WebGUI::Commerce::Payment::Cash;
|
||||
|
||||
=head1 LEGAL
|
||||
|
||||
-------------------------------------------------------------------
|
||||
WebGUI is Copyright 2001-2006 Plain Black Corporation.
|
||||
-------------------------------------------------------------------
|
||||
Please read the legal notices (docs/legal.txt) and the license
|
||||
(docs/license.txt) that came with this distribution before using
|
||||
this software.
|
||||
-------------------------------------------------------------------
|
||||
http://www.plainblack.com info@plainblack.com
|
||||
-------------------------------------------------------------------
|
||||
|
||||
=head1 NAME
|
||||
|
||||
Package WebGUI::Payment::ITransact
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
Payment plug-in for cash transactions.
|
||||
|
||||
=cut
|
||||
|
||||
use strict;
|
||||
use WebGUI::HTMLForm;
|
||||
use WebGUI::Commerce::Payment;
|
||||
use WebGUI::Commerce::Item;
|
||||
use Tie::IxHash;
|
||||
use WebGUI::International;
|
||||
use WebGUI::SQL;
|
||||
|
||||
our @ISA = qw(WebGUI::Commerce::Payment);
|
||||
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub connectionError {
|
||||
|
||||
return undef;
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub checkoutForm {
|
||||
my ($self, $u, $f, %months, %years, $i18n);
|
||||
$self = shift;
|
||||
|
||||
$i18n = WebGUI::International->new($self->session, 'CommercePaymentITransact');
|
||||
|
||||
$u = WebGUI::User->new($self->session,$self->session->user->userId);
|
||||
|
||||
$f = WebGUI::HTMLForm->new($self->session);
|
||||
|
||||
$f->selectBox(
|
||||
-name=>"paymentMethod",
|
||||
-label=>"Payment Method",
|
||||
-value=>[$self->session->form->process("paymentMethod")],
|
||||
-defaultValue=>['cash'],
|
||||
-options=> { 'cash' => 'Cash',
|
||||
'check' => 'Check',
|
||||
'other' => 'Other'
|
||||
}
|
||||
);
|
||||
|
||||
$f->text(
|
||||
-name => 'firstName',
|
||||
-label => $i18n->get('firstName'),
|
||||
-value => $self->session->form->process("firstName") || $u->profileField('firstName')
|
||||
);
|
||||
$f->text(
|
||||
-name => 'lastName',
|
||||
-label => $i18n->get('lastName'),
|
||||
-value => $self->session->form->process("lastName") || $u->profileField('lastName')
|
||||
);
|
||||
$f->text(
|
||||
-name => 'address',
|
||||
-label => $i18n->get('address'),
|
||||
-value => $self->session->form->process("address") || $u->profileField('homeAddress')
|
||||
);
|
||||
$f->text(
|
||||
-name => 'city',
|
||||
-label => $i18n->get('city'),
|
||||
-value => $self->session->form->process("city") || $u->profileField('homeCity')
|
||||
);
|
||||
$f->text(
|
||||
-name => 'state',
|
||||
-label => $i18n->get('state'),
|
||||
-value => $self->session->form->process("state") || $u->profileField('homeState')
|
||||
);
|
||||
$f->zipcode(
|
||||
-name => 'zipcode',
|
||||
-label => $i18n->get('zipcode'),
|
||||
-value => $self->session->form->process("zipcode") || $u->profileField('homeZip')
|
||||
);
|
||||
my %countries;
|
||||
tie %countries, 'Tie::IxHash';
|
||||
%countries = (
|
||||
'Afghanistan' => 'Afghanistan',
|
||||
'Albania' => 'Albania',
|
||||
'Algeria' => 'Algeria',
|
||||
'American Samoa' => 'American Samoa',
|
||||
'Andorra' => 'Andorra',
|
||||
'Anguilla' => 'Anguilla',
|
||||
'Antarctica' => 'Antarctica',
|
||||
'Antigua And Barbuda' => 'Antigua And Barbuda',
|
||||
'Argentina' => 'Argentina',
|
||||
'Armenia' => 'Armenia',
|
||||
'Aruba' => 'Aruba',
|
||||
'Australia' => 'Australia',
|
||||
'Austria' => 'Austria',
|
||||
'Azerbaijan' => 'Azerbaijan',
|
||||
'Bahamas' => 'Bahamas',
|
||||
'Bahrain' => 'Bahrain',
|
||||
'Bangladesh' => 'Bangladesh',
|
||||
'Barbados' => 'Barbados',
|
||||
'Belarus' => 'Belarus',
|
||||
'Belgium' => 'Belgium',
|
||||
'Belize' => 'Belize',
|
||||
'Benin' => 'Benin',
|
||||
'Bermuda' => 'Bermuda',
|
||||
'Bhutan' => 'Bhutan',
|
||||
'Bolivia' => 'Bolivia',
|
||||
'Bosnia and Herzegovina' => 'Bosnia and Herzegovina',
|
||||
'Botswana' => 'Botswana',
|
||||
'Bouvet Island' => 'Bouvet Island',
|
||||
'Brazil' => 'Brazil',
|
||||
'British Indian Ocean Territory' => 'British Indian Ocean Territory',
|
||||
'Brunei Darussalam' => 'Brunei Darussalam',
|
||||
'Bulgaria' => 'Bulgaria',
|
||||
'Burkina Faso' => 'Burkina Faso',
|
||||
'Burundi' => 'Burundi',
|
||||
'Cambodia' => 'Cambodia',
|
||||
'Cameroon' => 'Cameroon',
|
||||
'Canada' => 'Canada',
|
||||
'Cape Verde' => 'Cape Verde',
|
||||
'Cayman Islands' => 'Cayman Islands',
|
||||
'Central African Republic' => 'Central African Republic',
|
||||
'Chad' => 'Chad',
|
||||
'Chile' => 'Chile',
|
||||
'China' => 'China',
|
||||
'Christmas Island' => 'Christmas Island',
|
||||
'Cocos (Keeling) Islands' => 'Cocos (Keeling) Islands',
|
||||
'Colombia' => 'Colombia',
|
||||
'Comoros' => 'Comoros',
|
||||
'Congo' => 'Congo',
|
||||
'Congo, the Democratic Republic of the' => 'Congo, the Democratic Republic of the',
|
||||
'Cook Islands' => 'Cook Islands',
|
||||
'Costa Rica' => 'Costa Rica',
|
||||
'Cote d\'Ivoire' => 'Cote d\'Ivoire',
|
||||
'Croatia' => 'Croatia',
|
||||
'Cyprus' => 'Cyprus',
|
||||
'Czech Republic' => 'Czech Republic',
|
||||
'Denmark' => 'Denmark',
|
||||
'Djibouti' => 'Djibouti',
|
||||
'Dominica' => 'Dominica',
|
||||
'Dominican Republic' => 'Dominican Republic',
|
||||
'East Timor' => 'East Timor',
|
||||
'Ecuador' => 'Ecuador',
|
||||
'Egypt' => 'Egypt',
|
||||
'El Salvador' => 'El Salvador',
|
||||
'England' => 'England',
|
||||
'Equatorial Guinea' => 'Equatorial Guinea',
|
||||
'Eritrea' => 'Eritrea',
|
||||
'Espana' => 'Espana',
|
||||
'Estonia' => 'Estonia',
|
||||
'Ethiopia' => 'Ethiopia',
|
||||
'Falkland Islands' => 'Falkland Islands',
|
||||
'Faroe Islands' => 'Faroe Islands',
|
||||
'Fiji' => 'Fiji',
|
||||
'Finland' => 'Finland',
|
||||
'France' => 'France',
|
||||
'French Guiana' => 'French Guiana',
|
||||
'French Polynesia' => 'French Polynesia',
|
||||
'French Southern Territories' => 'French Southern Territories',
|
||||
'Gabon' => 'Gabon',
|
||||
'Gambia' => 'Gambia',
|
||||
'Georgia' => 'Georgia',
|
||||
'Germany' => 'Germany',
|
||||
'Ghana' => 'Ghana',
|
||||
'Gibraltar' => 'Gibraltar',
|
||||
'Great Britain' => 'Great Britain',
|
||||
'Greece' => 'Greece',
|
||||
'Greenland' => 'Greenland',
|
||||
'Grenada' => 'Grenada',
|
||||
'Guadeloupe' => 'Guadeloupe',
|
||||
'Guam' => 'Guam',
|
||||
'Guatemala' => 'Guatemala',
|
||||
'Guinea' => 'Guinea',
|
||||
'Guinea-Bissau' => 'Guinea-Bissau',
|
||||
'Guyana' => 'Guyana',
|
||||
'Haiti' => 'Haiti',
|
||||
'Heard and Mc Donald Islands' => 'Heard and Mc Donald Islands',
|
||||
'Honduras' => 'Honduras',
|
||||
'Hong Kong' => 'Hong Kong',
|
||||
'Hungary' => 'Hungary',
|
||||
'Iceland' => 'Iceland',
|
||||
'India' => 'India',
|
||||
'Indonesia' => 'Indonesia',
|
||||
'Ireland' => 'Ireland',
|
||||
'Israel' => 'Israel',
|
||||
'Italy' => 'Italy',
|
||||
'Jamaica' => 'Jamaica',
|
||||
'Japan' => 'Japan',
|
||||
'Jordan' => 'Jordan',
|
||||
'Kazakhstan' => 'Kazakhstan',
|
||||
'Kenya' => 'Kenya',
|
||||
'Kiribati' => 'Kiribati',
|
||||
'Korea, Republic of' => 'Korea, Republic of',
|
||||
'Korea (South)' => 'Korea (South)',
|
||||
'Kuwait' => 'Kuwait',
|
||||
'Kyrgyzstan' => 'Kyrgyzstan',
|
||||
"Lao People's Democratic Republic" => "Lao People's Democratic Republic",
|
||||
'Latvia' => 'Latvia',
|
||||
'Lebanon' => 'Lebanon',
|
||||
'Lesotho' => 'Lesotho',
|
||||
'Liberia' => 'Liberia',
|
||||
'Libya' => 'Libya',
|
||||
'Liechtenstein' => 'Liechtenstein',
|
||||
'Lithuania' => 'Lithuania',
|
||||
'Luxembourg' => 'Luxembourg',
|
||||
'Macau' => 'Macau',
|
||||
'Macedonia' => 'Macedonia',
|
||||
'Madagascar' => 'Madagascar',
|
||||
'Malawi' => 'Malawi',
|
||||
'Malaysia' => 'Malaysia',
|
||||
'Maldives' => 'Maldives',
|
||||
'Mali' => 'Mali',
|
||||
'Malta' => 'Malta',
|
||||
'Marshall Islands' => 'Marshall Islands',
|
||||
'Martinique' => 'Martinique',
|
||||
'Mauritania' => 'Mauritania',
|
||||
'Mauritius' => 'Mauritius',
|
||||
'Mayotte' => 'Mayotte',
|
||||
'Mexico' => 'Mexico',
|
||||
'Micronesia, Federated States of' => 'Micronesia, Federated States of',
|
||||
'Moldova, Republic of' => 'Moldova, Republic of',
|
||||
'Monaco' => 'Monaco',
|
||||
'Mongolia' => 'Mongolia',
|
||||
'Montserrat' => 'Montserrat',
|
||||
'Morocco' => 'Morocco',
|
||||
'Mozambique' => 'Mozambique',
|
||||
'Myanmar' => 'Myanmar',
|
||||
'Namibia' => 'Namibia',
|
||||
'Nauru' => 'Nauru',
|
||||
'Nepal' => 'Nepal',
|
||||
'Netherlands' => 'Netherlands',
|
||||
'Netherlands Antilles' => 'Netherlands Antilles',
|
||||
'New Caledonia' => 'New Caledonia',
|
||||
'New Zealand' => 'New Zealand',
|
||||
'Nicaragua' => 'Nicaragua',
|
||||
'Niger' => 'Niger',
|
||||
'Nigeria' => 'Nigeria',
|
||||
'Niue' => 'Niue',
|
||||
'Norfolk Island' => 'Norfolk Island',
|
||||
'Northern Ireland' => 'Northern Ireland',
|
||||
'Northern Mariana Islands' => 'Northern Mariana Islands',
|
||||
'Norway' => 'Norway',
|
||||
'Oman' => 'Oman',
|
||||
'Pakistan' => 'Pakistan',
|
||||
'Palau' => 'Palau',
|
||||
'Panama' => 'Panama',
|
||||
'Papua New Guinea' => 'Papua New Guinea',
|
||||
'Paraguay' => 'Paraguay',
|
||||
'Peru' => 'Peru',
|
||||
'Philippines' => 'Philippines',
|
||||
'Pitcairn' => 'Pitcairn',
|
||||
'Poland' => 'Poland',
|
||||
'Portugal' => 'Portugal',
|
||||
'Puerto Rico' => 'Puerto Rico',
|
||||
'Qatar' => 'Qatar',
|
||||
'Reunion' => 'Reunion',
|
||||
'Romania' => 'Romania',
|
||||
'Russia' => 'Russia',
|
||||
'Russian Federation' => 'Russian Federation',
|
||||
'Rwanda' => 'Rwanda',
|
||||
'Saint Kitts and Nevis' => 'Saint Kitts and Nevis',
|
||||
'Saint Lucia' => 'Saint Lucia',
|
||||
'Saint Vincent and the Grenadines' => 'Saint Vincent and the Grenadines',
|
||||
'Samoa (Independent)' => 'Samoa (Independent)',
|
||||
'San Marino' => 'San Marino',
|
||||
'Sao Tome and Principe' => 'Sao Tome and Principe',
|
||||
'Saudi Arabia' => 'Saudi Arabia',
|
||||
'Scotland' => 'Scotland',
|
||||
'Senegal' => 'Senegal',
|
||||
'Serbia and Montenegro' => 'Serbia and Montenegro',
|
||||
'Seychelles' => 'Seychelles',
|
||||
'Sierra Leone' => 'Sierra Leone',
|
||||
'Singapore' => 'Singapore',
|
||||
'Slovakia' => 'Slovakia',
|
||||
'Slovenia' => 'Slovenia',
|
||||
'Solomon Islands' => 'Solomon Islands',
|
||||
'Somalia' => 'Somalia',
|
||||
'South Africa' => 'South Africa',
|
||||
'South Georgia and the South Sandwich Islands' => 'South Georgia and the South Sandwich Islands',
|
||||
'South Korea' => 'South Korea',
|
||||
'Spain' => 'Spain',
|
||||
'Sri Lanka' => 'Sri Lanka',
|
||||
'St. Helena' => 'St. Helena',
|
||||
'St. Pierre and Miquelon' => 'St. Pierre and Miquelon',
|
||||
'Suriname' => 'Suriname',
|
||||
'Svalbard and Jan Mayen Islands' => 'Svalbard and Jan Mayen Islands',
|
||||
'Swaziland' => 'Swaziland',
|
||||
'Sweden' => 'Sweden',
|
||||
'Switzerland' => 'Switzerland',
|
||||
'Taiwan' => 'Taiwan',
|
||||
'Tajikistan' => 'Tajikistan',
|
||||
'Tanzania' => 'Tanzania',
|
||||
'Thailand' => 'Thailand',
|
||||
'Togo' => 'Togo',
|
||||
'Tokelau' => 'Tokelau',
|
||||
'Tonga' => 'Tonga',
|
||||
'Trinidad' => 'Trinidad',
|
||||
'Trinidad and Tobago' => 'Trinidad and Tobago',
|
||||
'Tunisia' => 'Tunisia',
|
||||
'Turkey' => 'Turkey',
|
||||
'Turkmenistan' => 'Turkmenistan',
|
||||
'Turks and Caicos Islands' => 'Turks and Caicos Islands',
|
||||
'Tuvalu' => 'Tuvalu',
|
||||
'Uganda' => 'Uganda',
|
||||
'Ukraine' => 'Ukraine',
|
||||
'United Arab Emirates' => 'United Arab Emirates',
|
||||
'United Kingdom' => 'United Kingdom',
|
||||
'United States' => 'United States',
|
||||
'United States Minor Outlying Islands' => 'United States Minor Outlying Islands',
|
||||
'Uruguay' => 'Uruguay',
|
||||
'Uzbekistan' => 'Uzbekistan',
|
||||
'Vanuatu' => 'Vanuatu',
|
||||
'Vatican City State (Holy See)' => 'Vatican City State (Holy See)',
|
||||
'Venezuela' => 'Venezuela',
|
||||
'Viet Nam' => 'Viet Nam',
|
||||
'Virgin Islands (British)' => 'Virgin Islands (British)',
|
||||
'Virgin Islands (U.S.)' => 'Virgin Islands (U.S.)',
|
||||
'Wales' => 'Wales',
|
||||
'Wallis and Futuna Islands' => 'Wallis and Futuna Islands',
|
||||
'Western Sahara' => 'Western Sahara',
|
||||
'Yemen' => 'Yemen',
|
||||
'Zambia' => 'Zambia',
|
||||
'Zimbabwe' => 'Zimbabwe'
|
||||
);
|
||||
$f->selectBox(
|
||||
-name=>"country",
|
||||
-label=>$i18n->get("country"),
|
||||
-value=>[$self->session->form->process("country")],
|
||||
-defaultValue=>[$u->profileField("homeCountry")],
|
||||
-options=>\%countries
|
||||
);
|
||||
$f->phone(
|
||||
-name=>"phone",
|
||||
-label=>$i18n->get("phone"),
|
||||
-value=>$self->session->form->process("phone"),
|
||||
-defaultValue=>$u->profileField("homePhone")
|
||||
);
|
||||
$f->email(
|
||||
-name => 'email',
|
||||
-label => $i18n->get('email'),
|
||||
-value => $self->session->form->process("email") || $u->profileField('email')
|
||||
);
|
||||
|
||||
return $f->printRowsOnly;
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub configurationForm {
|
||||
my ($self, $f, $i18n);
|
||||
$self = shift;
|
||||
$i18n = WebGUI::International->new($self->session, 'CommercePaymentITransact');
|
||||
|
||||
$f = WebGUI::HTMLForm->new($self->session);
|
||||
$f->textarea(
|
||||
-name => $self->prepend('emailMessage'),
|
||||
-label => $i18n->get('emailMessage'),
|
||||
-value => $self->get('emailMessage')
|
||||
);
|
||||
|
||||
return $self->SUPER::configurationForm($f->printRowsOnly);
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub confirmTransaction {
|
||||
# This function should never be called with site side payment gateways!
|
||||
return 0;
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
|
||||
=head2 init ( namespace )
|
||||
|
||||
Constructor for the ITransact plugin.
|
||||
|
||||
=head3 session
|
||||
|
||||
A copy of the session object
|
||||
|
||||
=head3 namespace
|
||||
|
||||
The namespace of the plugin.
|
||||
|
||||
=cut
|
||||
sub init {
|
||||
my ($class, $self);
|
||||
$class = shift;
|
||||
my $session = shift;
|
||||
$self = $class->SUPER::init($session,'Cash');
|
||||
|
||||
return $self;
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub gatewayId {
|
||||
my $self = shift;
|
||||
|
||||
return $self->session->id->generate;;
|
||||
}
|
||||
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub errorCode {
|
||||
return undef;
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub name {
|
||||
my ($self) = shift;
|
||||
#my $i18n = WebGUI::International->new($self->session, "CommercePaymentITransact");
|
||||
#return $i18n->get('module name');
|
||||
|
||||
return "Cash";
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub namespace {
|
||||
my $self = shift;
|
||||
return $self->{_namespace};
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub normalTransaction {
|
||||
my ($self, $normal);
|
||||
$self = shift;
|
||||
$normal = shift;
|
||||
|
||||
if ($normal) {
|
||||
my $i18n = WebGUI::International->new($self->session, 'CommercePaymentITransact');
|
||||
$self->{_recurring} = 0;
|
||||
$self->{_transactionParams} = {
|
||||
AMT => sprintf('%.2f', $normal->{amount}),
|
||||
DESCRIPTION => $normal->{description}) || $i18n->get('no description'),
|
||||
INVOICENUMBER => $normal->{invoiceNumber},
|
||||
ORGID => $normal->{id},
|
||||
};
|
||||
}
|
||||
|
||||
return $self->submit;
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub shippingCost {
|
||||
my $self = shift;
|
||||
$self->{_shipping}->{cost} = shift;
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub shippingDescription {
|
||||
my $self = shift;
|
||||
$self->{_shipping}->{description} = shift;
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub submit {
|
||||
my $self = shift;
|
||||
|
||||
# this just needs to set the object properties with the transaction data
|
||||
# since there is no approval or 'submit' process. Cash transactions always succeed.
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub supports {
|
||||
return {
|
||||
single => 1,
|
||||
recurring => 0,
|
||||
}
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub transactionCompleted {
|
||||
my ($self) = shift;
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub transactionError {
|
||||
return undef;
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub transactionPending {
|
||||
return 0;
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub validateFormData {
|
||||
my ($self, @error, $i18n, $currentYear, $currentMonth);
|
||||
$self = shift;
|
||||
|
||||
$i18n = WebGUI::International->new($self->session,'CommercePaymentITransact');
|
||||
|
||||
push (@error, $i18n->get('invalid firstName')) unless ($self->session->form->process("firstName"));
|
||||
push (@error, $i18n->get('invalid lastName')) unless ($self->session->form->process("lastName"));
|
||||
push (@error, $i18n->get('invalid address')) unless ($self->session->form->process("address"));
|
||||
push (@error, $i18n->get('invalid city')) unless ($self->session->form->process("city"));
|
||||
push (@error, $i18n->get('invalid zip')) if ($self->session->form->process("zipcode") eq "" && $self->session->form->process("country") eq "United States");
|
||||
push (@error, $i18n->get('invalid email')) unless ($self->session->form->process("email"));
|
||||
|
||||
unless (@error) {
|
||||
$self->{_paymentData} = {
|
||||
PAYMENTMETHOD => $self->session->form->process("paymentMethod"),
|
||||
};
|
||||
|
||||
$self->{_userData} = {
|
||||
STREET => $self->session->form->process("address"),
|
||||
ZIP => $self->session->form->process("zipcode"),
|
||||
CITY => $self->session->form->process("city"),
|
||||
FIRSTNAME => $self->session->form->process("firstName"),
|
||||
LASTNAME => $self->session->form->process("lastName"),
|
||||
EMAIL => $self->session->form->process("email"),
|
||||
STATE => $self->session->form->process("state"),
|
||||
COUNTRY => $self->session->form->process("country"),
|
||||
PHONE => $self->session->form->process("phone"),
|
||||
};
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
return \@error;
|
||||
}
|
||||
|
||||
1;
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue