From 227f87ababc68077ac00d2fb5ee52f080370cbff Mon Sep 17 00:00:00 2001 From: fbriere Date: Sat, 18 Feb 2006 00:26:11 +0000 Subject: Added taxes() --- InternetSecure.pm | 37 +++++++++++++++++++++++++++++++------ 1 file changed, 31 insertions(+), 6 deletions(-) (limited to 'InternetSecure.pm') diff --git a/InternetSecure.pm b/InternetSecure.pm index 10d7d6e..a7b1d0f 100755 --- a/InternetSecure.pm +++ b/InternetSecure.pm @@ -42,9 +42,12 @@ sub set_defaults { receipt_number sales_number uuid guid date card_type cardholder - total_amount + total_amount taxes avs_response cvv2_response )); + + # Just in case someone tries to call taxes() *before* submit() + $self->taxes( {} ); } # OnlinePayment's get_fields now filters out undefs in 3.x. :( @@ -223,6 +226,27 @@ sub infuse { } } +sub extract_taxes { + my ($self, $response) = @_; + + my %taxes; + + my $products = $response->{Products}; + return unless $products; + + foreach my $node (@$products) { + my $flags = $node->{flags}; + if ($flags && + grep($_ eq '{TAX}', @$flags) && + grep($_ eq '{CALCULATED}', @$flags)) + { + $taxes{ $node->{code} } = $node->{subtotal}; + } + } + + return %taxes; +} + # Parse the server's response and set various fields # sub parse_response { @@ -267,7 +291,7 @@ sub parse_response { $self->card_type(CARD_TYPES->{$self->card_type}); - $self->{products_raw} = $response->{Products}; + $self->taxes( { $self->extract_taxes($response) } ); return $self; } @@ -513,6 +537,11 @@ Date and time of the transaction. Format is C. Total amount billed for this order, including taxes. +=item taxes() + +Returns a I to a hash that maps tax names (such as C) to the +amount that was billed for each. + =item cardholder() Cardholder's name. This is currently a mere copy of the B field passed @@ -535,10 +564,6 @@ following: =back -=item products_raw() - -... - =back -- cgit v1.2.1