Business-AuthorizeNet-CIM

 view release on metacpan or  search on metacpan

lib/Business/AuthorizeNet/CIM.pm  view on Meta::CPAN

        if (ref($args) eq 'HASH') {
            for my $dataElement (grep { exists $args->{$_} } qw(unmaskExpirationDate includeIssuerInfo)) {
                $writer->dataElement($dataElement, $args->{$dataElement});
            }
        } else {
            $writer->dataElement('unmaskExpirationDate', 'true');
        }
    }
    $writer->endTag('getCustomerPaymentProfileRequest');

    return $self->_send($xml);
}

sub getCustomerShippingAddressRequest {
    my ($self, $customerProfileId, $customerAddressId) = @_;

    my $xml;
    my $writer = XML::Writer->new(OUTPUT => \$xml);
    $writer->startTag('getCustomerShippingAddressRequest', 'xmlns' => 'AnetApi/xml/v1/schema/AnetApiSchema.xsd');
    $writer->startTag('merchantAuthentication');
    $writer->dataElement('name',           $self->{login});
    $writer->dataElement('transactionKey', $self->{transactionKey});
    $writer->endTag('merchantAuthentication');
    $writer->dataElement('customerProfileId', $customerProfileId);
    $writer->dataElement('customerAddressId', $customerAddressId);
    $writer->endTag('getCustomerShippingAddressRequest');
    $writer->end;

    return $self->_send($xml);
}

sub getHostedProfilePageRequest {
    my ($self, $customerProfileId, $args) = @_;

    my $xml;
    my $writer = XML::Writer->new(OUTPUT => \$xml);
    $writer->startTag('getHostedProfilePageRequest', 'xmlns' => 'AnetApi/xml/v1/schema/AnetApiSchema.xsd');
    $writer->startTag('merchantAuthentication');
    $writer->dataElement('name',           $self->{login});
    $writer->dataElement('transactionKey', $self->{transactionKey});
    $writer->endTag('merchantAuthentication');
    $writer->dataElement('customerProfileId', $customerProfileId);

    if ($args) {
        $writer->startTag('hostedProfileSettings');
        foreach my $name (keys %{$args}) {
            $writer->startTag('setting');
            $writer->dataElement('settingName',  $name);
            $writer->dataElement('settingValue', $args->{$name});
            $writer->endTag('setting');
        }
        $writer->endTag('hostedProfileSettings');
    }

    $writer->endTag('getHostedProfilePageRequest');
    $writer->end;

    return $self->_send($xml);
}

sub updateCustomerProfile {
    my $self = shift;
    my $args = scalar @_ % 2 ? shift : {@_};

    my $xml;
    my $writer = XML::Writer->new(OUTPUT => \$xml);
    $writer->startTag('updateCustomerProfileRequest', 'xmlns' => 'AnetApi/xml/v1/schema/AnetApiSchema.xsd');
    $writer->startTag('merchantAuthentication');
    $writer->dataElement('name',           $self->{login});
    $writer->dataElement('transactionKey', $self->{transactionKey});
    $writer->endTag('merchantAuthentication');
    $writer->dataElement('refId', $args->{refId}) if exists $args->{refId};
    $writer->startTag('profile');

    foreach my $k ('merchantCustomerId', 'description', 'email') {
        $writer->dataElement($k, $args->{$k})
            if exists $args->{$k};
    }
    $writer->dataElement('customerProfileId', $args->{customerProfileId});
    $writer->endTag('profile');
    $writer->endTag('updateCustomerProfileRequest');
    $writer->end;

    return $self->_send($xml);
}

sub updateCustomerPaymentProfile {
    my $self = shift;
    my $args = scalar @_ % 2 ? shift : {@_};

    my $xml;
    my $writer = XML::Writer->new(OUTPUT => \$xml);
    $writer->startTag('updateCustomerPaymentProfileRequest', 'xmlns' => 'AnetApi/xml/v1/schema/AnetApiSchema.xsd');
    $writer->startTag('merchantAuthentication');
    $writer->dataElement('name',           $self->{login});
    $writer->dataElement('transactionKey', $self->{transactionKey});
    $writer->endTag('merchantAuthentication');
    $writer->dataElement('refId',             $args->{refId}) if exists $args->{refId};
    $writer->dataElement('customerProfileId', $args->{customerProfileId});

    $writer->startTag('paymentProfile');
    $writer->dataElement('customerType', $args->{'customerType'}) if exists $args->{'customerType'};

    my @flds = ('firstName', 'lastName', 'company', 'address', 'city', 'state', 'zip', 'country', 'phoneNumber', 'faxNumber');
    my $addr = exists $args->{billTo} ? $args->{billTo} : $args;
    if (grep { exists $addr->{$_} } @flds) {
        $writer->startTag('billTo');
        foreach my $k (@flds) {
            $writer->dataElement($k, $addr->{$k})
                if exists $addr->{$k};
        }
        $writer->endTag('billTo');
    }

    $writer->startTag('payment');

    if (exists $args->{creditCard}) {
        $writer->startTag('creditCard');
        foreach my $k ('cardNumber', 'expirationDate', 'cardCode') {
            $writer->dataElement($k, $args->{creditCard}->{$k})
                if exists $args->{creditCard}->{$k};
        }
        $writer->endTag('creditCard');
    }
    if (exists $args->{bankAccount}) {
        $writer->startTag('bankAccount');
        foreach my $k ('accountType', 'routingNumber', 'accountNumber', 'nameOnAccount', 'echeckType', 'bankName') {
            $writer->dataElement($k, $args->{bankAccount}->{$k});
        }
        $writer->endTag('bankAccount');
    }
    if (exists $args->{opaqueData}) {
        $writer->startTag('opaqueData');
        foreach my $k (qw/dataDescriptor dataValue/) {
            $writer->dataElement($k, $args->{opaqueData}->{$k});
        }
        $writer->endTag('opaqueData');
    }

    $writer->endTag('payment');
    $writer->dataElement('customerPaymentProfileId', $args->{customerPaymentProfileId});
    $writer->endTag('paymentProfile');

    if ($self->{test_mode}) {
        $writer->dataElement('validationMode', 'testMode');
    } elsif ($args->{validationMode}) {
        $writer->dataElement('validationMode', $args->{validationMode});
    } else {
        $writer->dataElement('validationMode', 'liveMode');
    }
    $writer->endTag('updateCustomerPaymentProfileRequest');
    $writer->end;

    return $self->_send($xml);
}

sub updateCustomerShippingAddress {
    my $self = shift;
    my $args = scalar @_ % 2 ? shift : {@_};

    my $xml;
    my $writer = XML::Writer->new(OUTPUT => \$xml);
    $writer->startTag('updateCustomerShippingAddressRequest', 'xmlns' => 'AnetApi/xml/v1/schema/AnetApiSchema.xsd');
    $writer->startTag('merchantAuthentication');
    $writer->dataElement('name',           $self->{login});
    $writer->dataElement('transactionKey', $self->{transactionKey});
    $writer->endTag('merchantAuthentication');
    $writer->dataElement('refId',             $args->{refId}) if exists $args->{refId};
    $writer->dataElement('customerProfileId', $args->{customerProfileId})
        if exists $args->{customerProfileId};
    $writer->startTag('address');

    my @flds = ('firstName', 'lastName', 'company', 'address', 'city', 'state', 'zip', 'country', 'phoneNumber', 'faxNumber');
    my $addr = exists $args->{shipToList} ? $args->{shipToList} : $args;
    foreach my $k (@flds) {
        $writer->dataElement($k, $addr->{$k})
            if exists $addr->{$k};
    }

    $writer->dataElement('customerAddressId', $args->{customerAddressId});
    $writer->endTag('address');

    $writer->endTag('updateCustomerShippingAddressRequest');
    $writer->end;

    return $self->_send($xml);
}

sub updateSplitTenderGroupRequest {
    my ($self, $splitTenderId, $splitTenderStatus) = @_;

    my $xml;
    my $writer = XML::Writer->new(OUTPUT => \$xml);
    $writer->startTag('updateSplitTenderGroupRequest', 'xmlns' => 'AnetApi/xml/v1/schema/AnetApiSchema.xsd');
    $writer->startTag('merchantAuthentication');
    $writer->dataElement('name',           $self->{login});
    $writer->dataElement('transactionKey', $self->{transactionKey});
    $writer->endTag('merchantAuthentication');
    $writer->dataElement('splitTenderId',     $splitTenderId);
    $writer->dataElement('splitTenderStatus', $splitTenderStatus);
    $writer->endTag('updateSplitTenderGroupRequest');
    $writer->end;

    return $self->_send($xml);
}

sub validateCustomerPaymentProfile {
    my $self = shift;
    my $args = scalar @_ % 2 ? shift : {@_};

    my $xml;
    my $writer = XML::Writer->new(OUTPUT => \$xml);
    $writer->startTag('validateCustomerPaymentProfileRequest', 'xmlns' => 'AnetApi/xml/v1/schema/AnetApiSchema.xsd');
    $writer->startTag('merchantAuthentication');
    $writer->dataElement('name',           $self->{login});
    $writer->dataElement('transactionKey', $self->{transactionKey});
    $writer->endTag('merchantAuthentication');
    $writer->dataElement('customerProfileId',         $args->{customerProfileId});
    $writer->dataElement('customerPaymentProfileId',  $args->{customerPaymentProfileId});
    $writer->dataElement('customerShippingAddressId', $args->{customerShippingAddressId})
        if $args->{customerShippingAddressId};
    $writer->dataElement('cardCode', $args->{cardCode}) if $args->{cardCode};

    if ($self->{test_mode}) {
        $writer->dataElement('validationMode', 'testMode');
    } else {
        $writer->dataElement('validationMode', 'liveMode');
    }
    $writer->endTag('validateCustomerPaymentProfileRequest');
    $writer->end;

    return $self->_send($xml);
}

sub getMerchantDetailsRequest {
    my $self = shift;
    my $args = scalar @_ % 2 ? shift : {@_};

    my $xml;
    my $writer = XML::Writer->new(OUTPUT => \$xml);
    $writer->startTag('getMerchantDetailsRequest', xmlns => 'AnetApi/xml/v1/schema/AnetApiSchema.xsd');
    $self->_addAuthentication($writer);
    $writer->endTag('getMerchantDetailsRequest');
    $writer->end;

    return $self->_send($xml);
}

sub getTransactionDetailsRequest {



( run in 0.660 second using v1.01-cache-2.11-cpan-7fcb06a456a )