projects
/
Business-OnlinePayment-WesternACH.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
524fc4f
)
Use new get_returns method by default
Business_OnlinePayment_WesternACH_0_06
author
mark
<mark>
Thu, 13 Aug 2009 22:07:10 +0000
(22:07 +0000)
committer
mark
<mark>
Thu, 13 Aug 2009 22:07:10 +0000
(22:07 +0000)
Changes
patch
|
blob
|
history
lib/Business/OnlinePayment/WesternACH.pm
patch
|
blob
|
history
diff --git
a/Changes
b/Changes
index
b97d0b1
..
937b5d3
100644
(file)
--- a/
Changes
+++ b/
Changes
@@
-1,6
+1,10
@@
Revision history for Business-OnlinePayment-WesternACH
Revision history for Business-OnlinePayment-WesternACH
-0.05 Fri Aug 8 14:25:01 PDT 2009
+0.06 Thu Aug 13 14:56:12 PDT 2009
+ - Make transret.php the default returns method.
+ - Old method is still available via returns_method => 'requester'.
+
+0.05 Fri Aug 7 14:25:01 PDT 2009
- Correctly handle get_returns when there is only one transaction
- Add support for alternate returns interface (transret.php)
- Correctly handle get_returns when there is only one transaction
- Add support for alternate returns interface (transret.php)
diff --git
a/lib/Business/OnlinePayment/WesternACH.pm
b/lib/Business/OnlinePayment/WesternACH.pm
index
03a8e83
..
e81f0a3
100644
(file)
--- a/
lib/Business/OnlinePayment/WesternACH.pm
+++ b/
lib/Business/OnlinePayment/WesternACH.pm
@@
-11,7
+11,7
@@
use Date::Parse 'str2time';
use vars qw($VERSION @ISA $me $DEBUG);
@ISA = qw(Business::OnlinePayment::HTTPS);
use vars qw($VERSION @ISA $me $DEBUG);
@ISA = qw(Business::OnlinePayment::HTTPS);
-$VERSION = '0.0
5
';
+$VERSION = '0.0
6
';
$me = 'Business::OnlinePayment::WesternACH';
$DEBUG = 0;
$me = 'Business::OnlinePayment::WesternACH';
$DEBUG = 0;
@@
-106,6
+106,7
@@
sub set_defaults {
sub submit {
my $self = shift;
$Business::OnlinePayment::HTTPS::DEBUG = $DEBUG;
sub submit {
my $self = shift;
$Business::OnlinePayment::HTTPS::DEBUG = $DEBUG;
+ $DB::single = $DEBUG; # If you're debugging this, you probably want to stop here.
my $xml_request;
if ($self->{_content}->{command} eq 'get_returns') {
my $xml_request;
if ($self->{_content}->{command} eq 'get_returns') {
@@
-135,7
+136,6
@@
sub submit {
$xml_request = XMLout($self->build($request), KeepRoot => 1);
}
$xml_request = XMLout($self->build($request), KeepRoot => 1);
}
- $DB::single=1;
my ($xml_reply, $response, %reply_headers) = $self->https_post({ 'Content-Type' => 'text/xml' }, $xml_request);
if(not $response =~ /^200/) {
my ($xml_reply, $response, %reply_headers) = $self->https_post({ 'Content-Type' => 'text/xml' }, $xml_request);
if(not $response =~ /^200/) {
@@
-169,7
+169,6
@@
sub submit {
$self->error_message($reply->{FatalException});
}
$self->error_message($reply->{FatalException});
}
- $DB::single = 1 if $DEBUG;
return;
}
return;
}
@@
-180,14
+179,31
@@
sub get_returns {
if(exists($content->{'command'})) {
croak 'get_returns: command is already set on this transaction';
}
if(exists($content->{'command'})) {
croak 'get_returns: command is already set on this transaction';
}
- if ($content->{'returns_method'} eq 'transret') {
+ if ($content->{'returns_method'} eq 'requester') {
+# Obsolete, deprecated method supported for now as a fallback option.
+ $content->{'command'} = 'get_returns';
+ $self->submit;
+ if($self->is_success) {
+ if(exists($content->{'returns'})) {
+ return @{$content->{'returns'}};
+ }
+ else {
+ return ();
+ }
+ }
+ # you need to check error_message() for details.
+ return ();
+ }
+ else {
$Business::OnlinePayment::HTTPS::DEBUG = $DEBUG;
$Business::OnlinePayment::HTTPS::DEBUG = $DEBUG;
+ $DB::single = $DEBUG;
if (defined($content->{'login'}) and defined($content->{'password'})) {
if (defined($content->{'login'}) and defined($content->{'password'})) {
- # date range doesn't work quite right with transret
+ # transret.php doesn't respect date ranges. It returns anything from the
+ # same month as the date argument. Therefore we generate one request for
+ # each month in the date range, and then filter them by date later.
my $path = ('transret.php?style=csv&sort=id&date=');
my $starttime = str2time($self->_start);
my $endtime = str2time($self->_end) - 1;
my $path = ('transret.php?style=csv&sort=id&date=');
my $starttime = str2time($self->_start);
my $endtime = str2time($self->_end) - 1;
- $DB::single=1;
my @months = map { s/^(....)(..)$/$1-$2-01/; $_ } (
time2str('%Y%m', $starttime)..time2str('%Y%m', $endtime)
);
my @months = map { s/^(....)(..)$/$1-$2-01/; $_ } (
time2str('%Y%m', $starttime)..time2str('%Y%m', $endtime)
);
@@
-197,6
+213,7
@@
sub get_returns {
my @tids;
foreach my $m (@months) {
$self->path($path . $m);
my @tids;
foreach my $m (@months) {
$self->path($path . $m);
+ # B:OP:HTTPS::https_get doesn't use $DEBUG.
my ($page, $reply, %headers) =
$self->https_get(
{ headers => $headers },
my ($page, $reply, %headers) =
$self->https_get(
{ headers => $headers },
@@
-207,14
+224,17
@@
sub get_returns {
}
else {
$self->error_message($reply);
}
else {
$self->error_message($reply);
- carp $page if $DEBUG > 1;
+ carp $reply if $DEBUG;
+ carp $page if $DEBUG >= 3;
$self->is_success(0);
return;
}
foreach my $trans (split("\cJ", $page)) {
my @fields = split(',', $trans);
# fields:
$self->is_success(0);
return;
}
foreach my $trans (split("\cJ", $page)) {
my @fields = split(',', $trans);
# fields:
- # id, Date Returned, Type, Amount, Name, Customer ID Number, Email Address, Invoice Number, Status Code, SEC
+ # id, Date Returned, Type, Amount, Name, Customer ID Number,
+ # Email Address, Invoice Number, Status Code, SEC
+
# we only care about id and date.
next if scalar(@fields) < 10;
next if not($fields[0] =~ /^\d+$/);
# we only care about id and date.
next if scalar(@fields) < 10;
next if not($fields[0] =~ /^\d+$/);
@@
-230,21
+250,6
@@
sub get_returns {
croak 'login and password required';
}
}
croak 'login and password required';
}
}
- else {
- $content->{'command'} = 'get_returns';
- $self->submit;
- if($self->is_success) {
- if(exists($content->{'returns'})) {
- return @{$content->{'returns'}};
- }
- else {
- return ();
- }
- } else {
- # you need to check error_message() for details.
- return ();
- }
- }
}
sub build {
}
sub build {