Credit Card failures now bounce user back to checkout screen with error there Added Check commerce plugin and removed select box from Cash plugin. Users now don't have to chose twice. Added label to each payment plugin. ITransact module now defaults to "Credit Card" for display purposes.
318 lines
8.5 KiB
Perl
318 lines
8.5 KiB
Perl
package WebGUI::Commerce::Payment::Cash;
|
|
|
|
=head1 LEGAL
|
|
|
|
-------------------------------------------------------------------
|
|
WebGUI is Copyright 2001-2007 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::Cash
|
|
|
|
=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 = $self->i18n;
|
|
|
|
$u = WebGUI::User->new($self->session,$self->session->user->userId);
|
|
|
|
$f = WebGUI::HTMLForm->new($self->session);
|
|
|
|
$f->readOnly(
|
|
-label=>$i18n->get("payment method"),
|
|
-value=>ucfirst($self->getPaymentMethod),
|
|
);
|
|
|
|
$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')
|
|
);
|
|
$f->country(
|
|
-name=>"country",
|
|
-label=>$i18n->get("country"),
|
|
-value=>($self->session->form->process("country",'country') || $u->profileField("homeCountry") || 'United States')
|
|
);
|
|
$f->phone(
|
|
-name=>"phone",
|
|
-label=>$i18n->get("phone"),
|
|
-defaultValue=>$u->profileField("homePhone"),
|
|
-value=>$self->session->form->process("phone",'phone'),
|
|
);
|
|
$f->email(
|
|
-name => 'email',
|
|
-label => $i18n->get('email'),
|
|
-value => $self->session->form->process("email",'email') || $u->profileField('email')
|
|
);
|
|
|
|
return $f->printRowsOnly;
|
|
}
|
|
|
|
#-------------------------------------------------------------------
|
|
sub configurationForm {
|
|
my ($self, $f, $i18n);
|
|
$self = shift;
|
|
$i18n = $self->i18n;
|
|
$f = WebGUI::HTMLForm->new($self->session);
|
|
|
|
$f->textarea(
|
|
-name => $self->prepend('emailMessage'),
|
|
-label => $i18n->get('emailMessage'),
|
|
-value => $self->get('emailMessage')
|
|
);
|
|
|
|
$f->yesNo(
|
|
-name => $self->prepend('completeTransaction'),
|
|
-value => ($self->get('completeTransaction') eq "0" ? 0 : $self->get('completeTransaction') || 1),
|
|
-label => $i18n->get('complete transaction'),
|
|
-hoverHelp => $i18n->get('complete transaction description'),
|
|
);
|
|
return $self->SUPER::configurationForm($f->printRowsOnly);
|
|
}
|
|
|
|
#-------------------------------------------------------------------
|
|
sub confirmTransaction {
|
|
|
|
return 0;
|
|
}
|
|
|
|
#-------------------------------------------------------------------
|
|
sub i18n {
|
|
my $self = shift;
|
|
unless (exists $self->{_i18n}) {
|
|
$self->{_i18n} = WebGUI::International->new($self->session,'CommercePaymentCash');
|
|
}
|
|
return $self->{_i18n};
|
|
}
|
|
|
|
#-------------------------------------------------------------------
|
|
|
|
=head2 init ( namespace )
|
|
|
|
Constructor for the Cash 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;
|
|
my $namespace = shift || 'Cash';
|
|
$self = $class->SUPER::init($session,$namespace);
|
|
return $self;
|
|
}
|
|
|
|
#-------------------------------------------------------------------
|
|
sub gatewayId {
|
|
my $self = shift;
|
|
return $self->getPaymentMethod.":".$self->session->id->generate;
|
|
}
|
|
|
|
#-------------------------------------------------------------------
|
|
sub getPaymentMethod {
|
|
my $self = shift;
|
|
unless($self->{_paymentMethod}) {
|
|
$self->{_paymentMethod} = "cash";
|
|
}
|
|
return $self->{_paymentMethod};
|
|
}
|
|
|
|
#-------------------------------------------------------------------
|
|
sub errorCode {
|
|
my $self = shift;
|
|
return $self->{_error}->{code};
|
|
}
|
|
|
|
#-------------------------------------------------------------------
|
|
=head2 label ( )
|
|
|
|
Returns the label for the commerce plugin.
|
|
|
|
=cut
|
|
|
|
sub label {
|
|
my $self = shift;
|
|
my $i18n = $self->i18n;
|
|
return $self->get("label") || $i18n->get("label");
|
|
}
|
|
|
|
#-------------------------------------------------------------------
|
|
sub name {
|
|
return 'Cash';
|
|
}
|
|
|
|
#-------------------------------------------------------------------
|
|
sub namespace {
|
|
my $self = shift;
|
|
return $self->{_namespace};
|
|
}
|
|
|
|
#-------------------------------------------------------------------
|
|
sub normalTransaction {
|
|
my ($self, $normal);
|
|
$self = shift;
|
|
$normal = shift;
|
|
|
|
if ($normal) {
|
|
my $i18n = $self->i18n;
|
|
$self->{_transactionParams} = {
|
|
AMT => sprintf('%.2f', $normal->{amount}),
|
|
DESCRIPTION => $normal->{description} || $i18n->get('no description'),
|
|
INVOICENUMBER => $normal->{invoiceNumber},
|
|
ORGID => $normal->{id},
|
|
};
|
|
}
|
|
|
|
if ($self->get('completeTransaction')) {
|
|
$self->{_transaction}->{status} = 'complete';
|
|
}
|
|
else {
|
|
$self->{_transaction}->{status} = 'pending';
|
|
$self->{_error}->{message} = 'Your transaction will be completed upon receipt of payment.';
|
|
$self->{_error}->{code} = 1;
|
|
}
|
|
}
|
|
|
|
#-------------------------------------------------------------------
|
|
sub shippingCost {
|
|
my $self = shift;
|
|
$self->{_shipping}->{cost} = shift;
|
|
}
|
|
|
|
#-------------------------------------------------------------------
|
|
sub shippingDescription {
|
|
my $self = shift;
|
|
$self->{_shipping}->{description} = shift;
|
|
}
|
|
|
|
#-------------------------------------------------------------------
|
|
sub supports {
|
|
return {
|
|
single => 1,
|
|
recurring => 0,
|
|
}
|
|
}
|
|
|
|
#-------------------------------------------------------------------
|
|
sub transactionCompleted {
|
|
my $self = shift;
|
|
return 1 if $self->{_transaction}->{status} eq 'complete';
|
|
}
|
|
|
|
#-------------------------------------------------------------------
|
|
sub transactionError {
|
|
my $self = shift;
|
|
return $self->{_error}->{message};
|
|
}
|
|
|
|
#-------------------------------------------------------------------
|
|
sub transactionPending {
|
|
my $self = shift;
|
|
return 1 if $self->{_transaction}->{status} eq 'pending';
|
|
}
|
|
|
|
#-------------------------------------------------------------------
|
|
sub validateFormData {
|
|
my ($self, @error, $i18n, $currentYear, $currentMonth);
|
|
$self = shift;
|
|
|
|
$i18n = $self->i18n;
|
|
|
|
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->getPaymentMethod,
|
|
#$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;
|
|
|