package Google::Checkout::Command::ChargeOrder; =head1 NAME Google::Checkout::Command::ChargeOrder =head1 SYNOPSIS use Google::Checkout::General::GCO; use Google::Checkout::Command::ChargeOrder; use Google::Checkout::General::Util qw/is_gco_error/; my $gco = Google::Checkout::General::GCO->new; my $charge_order = Google::Checkout::Command::ChargeOrder->new( order_number => 156310171628413, amount => 12.34); my $response = $gco->command($charge_order); die $response if is_gco_error($response); print $response,"\n\n"; =head1 DESCRIPTION A sub-class of C. This module is used to charge an order. =over 4 =item new ORDER_NUMBER => ..., AMOUNT => ... Constructor. Takes a Google order number and the amount to charge. =item get_amount Returns the amount to charge. =item set_amount AMOUNT Sets the amount to charge. =item to_xml Return the XML that will be sent to Google Checkout. Note that this function should not be used directly. Instead, it's called indirectly by the C object internally. =back =cut =head1 COPYRIGHT Copyright 2006 Google. All rights reserved. =head1 SEE ALSO Google::Checkout::Command::GCOCommand =cut #-- #-- #-- use strict; use warnings; use Google::Checkout::XML::Constants; use Google::Checkout::General::Util qw/is_gco_error/; use Google::Checkout::Command::GCOCommand; our @ISA = qw/Google::Checkout::Command::GCOCommand/; sub new { my ($class, %args) = @_; my $self = $class->SUPER::new(%args, name => Google::Checkout::XML::Constants::CHARGE_ORDER); $self->{amount} = $args{amount} || 0; return bless $self => $class; } sub get_amount { my ($self) = @_; return $self->{amount}; } sub set_amount { my ($self, $amount) = @_; $self->{amount} = $amount || 0; } sub to_xml { my ($self, %args) = @_; my $code = $self->SUPER::to_xml(%args); return $code if is_gco_error($code); if ($self->get_amount) { my $sstring = Google::Checkout::XML::Constants::CURRENCY_SUPPORTED; my $currency_supported = ''; if ($args{gco}->reader()) { $currency_supported = $args{gco}->reader()->get($sstring); } else { $currency_supported = $args{gco}->{__currency_supported}; } $self->add_element(close => 1, name => Google::Checkout::XML::Constants::AMOUNT, data => $self->get_amount, attr => [Google::Checkout::XML::Constants::ITEM_CURRENCY, $currency_supported]); } return $self->done; } 1;