[bop-devel] Re: Business-OnlinePayment OnlinePayment.pm, 1.16, 1.17

Phil Lobbes phil at perkpartners.com
Sun Nov 19 22:51:06 PST 2006


I incorporated most of the changes / ideas.  See my most recent CVS
comments, I believe there's still a bug in fraud detection behavior if
the fraud detection isn't found (this is unchanged behavior -- but I
suspect not what we really want).

Phil

Ivan Kohler <ivan at 420.am> wrote:

> Can you take a quick look at the patch in 
> 
>  http://rt.cpan.org/Ticket/Display.html?id=22074
> 
> and see if there's any functional difference compared to your changes?
> 
> -- 
> _ivan
> 
> 
> On Mon, Nov 20, 2006 at 04:57:39AM +0000, Phil Lobbes wrote:
> > Update of /home/cvs/cvsroot/Business-OnlinePayment
> > In directory wavetail:/tmp/cvs-serv18276
> > 
> > Modified Files:
> > 	OnlinePayment.pm 
> > Log Message:
> > * Add Class data %WrappedSubmitClassMethod to remember "wrapped" submits
> > * Fix new() to check %WrappedSubmitClassMethod to avoid creating deep recursion
> > * Minor documentation change in print statements use ',' instead of '.'
> > 
> > 
> > Index: OnlinePayment.pm
> > ===================================================================
> > RCS file: /home/cvs/cvsroot/Business-OnlinePayment/OnlinePayment.pm,v
> > retrieving revision 1.16
> > retrieving revision 1.17
> > diff -u -d -r1.16 -r1.17
> > --- OnlinePayment.pm	10 Oct 2006 19:46:41 -0000	1.16
> > +++ OnlinePayment.pm	20 Nov 2006 04:57:37 -0000	1.17
> > @@ -10,6 +10,9 @@
> >  $VERSION = '3.00_04';
> >  $VERSION = eval $VERSION; # modperlstyle: convert the string into a number
> >  
> > +# Remember subclasses we have "wrapped" submit() with _pre_submit()
> > +my %WrappedSubmitClassMethod = ();
> > +
> >  my %fields = (
> >      authorization    => undef,
> >      error_message    => undef,
> > @@ -27,7 +30,6 @@
> >      transaction_type => undef,
> >  );
> >  
> > -
> >  sub new {
> >      my($class,$processor,%data) = @_;
> >  
> > @@ -55,15 +57,20 @@
> >      }
> >  
> >      unless ( $subclass->can('submit') eq $class->can('submit') ) {
> > -        no strict 'refs';
> > -        no warnings 'redefine';
> >          my $submit = qualify_to_ref('submit', $subclass);
> >  
> > -        $self->{_child_submit} = \&$submit;
> > -        *{"${subclass}::submit"} = sub {
> > -            my $self = shift;
> > -            $self->_pre_submit();
> > -        }
> > +	# "wrap" submit ONLY once, cache info for later calls to new()
> > +	if ( ! exists $WrappedSubmitClassMethod{$subclass} ) {
> > +	    no warnings 'redefine';
> > +	    no strict 'refs';
> > +
> > +	    $WrappedSubmitClassMethod{$subclass} = \&$submit;
> > +	    *{"${subclass}::submit"} = sub {
> > +		my $self = shift;
> > +		$self->_pre_submit();
> > +	    }
> > +	}
> > +	$self->{_child_submit} = $WrappedSubmitClassMethod{$subclass};
> >      }
> >  
> >      return $self;
> > @@ -89,7 +96,7 @@
> >      }
> >  }
> >  
> > -sub _pre_submit{
> > +sub _pre_submit {
> >      my ($self) = @_;
> >      my $fraud_detection = $self->fraud_detect();
> >  
> > @@ -213,9 +220,9 @@
> >    $transaction->submit();
> >    
> >    if($transaction->is_success()) {
> > -    print "Card processed successfully: ".$transaction->authorization()."\n";
> > +    print "Card processed successfully: ", $transaction->authorization(), "\n";
> >    } else {
> > -    print "Card was rejected: ".$transaction->error_message()."\n";
> > +    print "Card was rejected: ", $transaction->error_message(), "\n";
> >    }
> >  
> >  =head1 DESCRIPTION
> > 
> 
> -- 
> _ivan
> _______________________________________________
> bop-devel mailing list
> bop-devel at 420.am
> http://420.am/cgi-bin/mailman/listinfo/bop-devel


More information about the bop-devel mailing list