NAME
Business::AuthorizeNet::CIM - Authorize.Net Customer Information Manager
(CIM) Web Services API
VERSION
version 0.05
SYNOPSIS
use Business::AuthorizeNet::CIM;
use Data::Dumper;
my $cim = Business::AuthorizeNet::CIM->new( login => $cfg{login}, transactionKey => $cfg{password} );
my @ProfileIds = $cim->getCustomerProfileIds();
foreach my $id (@ProfileIds) {
my $d = $cim->getCustomerProfile($id);
print Dumper(\$d);
}
DESCRIPTION
Authorize.Net Customer Information Manager (CIM) Web Services API for
, read
for more details.
METHODS
CONSTRUCTION
my $cim = Business::AuthorizeNet::CIM->new(
login => $cfg{login},
transactionKey => $cfg{password}
);
* login
The valid API Login ID for the developer test or merchant account
* transactionKey
The valid Transaction Key for the developer test or merchant account
* debug
* test_mode
validationMode as testMode or liveMode
* ua_args
passed to LWP::UserAgent
* ua
LWP::UserAgent or WWW::Mechanize instance
createCustomerProfile
Create a new customer profile along with any customer payment profiles
and customer shipping addresses for the customer profile.
$cim->createCustomerProfile(
refId => $refId, # Optional
# one of 'merchantCustomerId', 'description', 'email' is required
merchantCustomerId => $merchantCustomerId,
description => $description,
email => $email,
customerType => $customerType, # Optional
billTo => { # Optional, all sub items are Optional
firstName => $firstName,
lastName => $lastName,
company => $company,
address => $address,
city => $city,
state => $state,
zip => $zip,
country => $country,
phoneNumber => $phoneNumber,
faxNumber => $faxNumber
},
# or it uses shipToList address as billTo
use_shipToList_as_billTo => 1,
creditCard => { # required when the payment profile is credit card
cardNumber => $cardNumber,
expirationDate => $expirationDate, # YYYY-MM
cardCode => $cardCode, # Optional
},
bankAccount => { # required when the payment profile is bank account
accountType => $accountType, # Optional, one of checking, savings, businessChecking
routingNumber => $routingNumber,
accountNumber => $accountNumber,
nameOnAccount => $nameOnAccount,
echeckType => $echeckType, # Optionaal, one of CCD, PPD, TEL, WEB
bankName => $bankName, # Optional
},
shipToList => {
firstName => $firstName,
lastName => $lastName,
company => $company,
address => $address,
city => $city,
state => $state,
zip => $zip,
country => $country,
phoneNumber => $phoneNumber,
faxNumber => $faxNumber
},
# or it uses billTo address as shipToList
use_billTo_as_shipToList => 1,
);
createCustomerPaymentProfileRequest
Create a new customer payment profile for an existing customer profile.
You can create up to 10 payment profiles for each customer profile.
$cim->createCustomerPaymentProfileRequest(
customerProfileId => $customerProfileId, # required
refId => $refId, # Optional
customerType => $customerType, # Optional
billTo => { # Optional, all sub items are Optional
firstName => $firstName,
lastName => $lastName,
company => $company,
address => $address,
city => $city,
state => $state,
zip => $zip,
country => $country,
phoneNumber => $phoneNumber,
faxNumber => $faxNumber
},
creditCard => { # required when the payment profile is credit card
cardNumber => $cardNumber,
expirationDate => $expirationDate, # YYYY-MM
cardCode => $cardCode, # Optional
},
bankAccount => { # required when the payment profile is bank account
accountType => $accountType, # Optional, one of checking, savings, businessChecking
routingNumber => $routingNumber,
accountNumber => $accountNumber,
nameOnAccount => $nameOnAccount,
echeckType => $echeckType, # Optionaal, one of CCD, PPD, TEL, WEB
bankName => $bankName, # Optional
},
);
createCustomerShippingAddressRequest
Create a new customer shipping address for an existing customer profile.
You can create up to 100 customer shipping addresses for each customer
profile.
$cim->createCustomerShippingAddressRequest(
customerProfileId => $customerProfileId, # required
refId => $refId, # Optional
firstName => $firstName,
lastName => $lastName,
company => $company,
address => $address,
city => $city,
state => $state,
zip => $zip,
country => $country,
phoneNumber => $phoneNumber,
faxNumber => $faxNumber
);
createCustomerProfileTransaction
Create a new payment transaction from an existing customer profile.
$cim->createCustomerProfileTransaction(
'profileTransAuthCapture', # or others like profileTransAuthOnly
refId => $refId, # Optional, reference id
amount => $amount,
tax => { # Optional
amount => $tax_amount,
name => $tax_name,
description => $tax_description
},
shipping => { # Optional
amount => $tax_amount,
name => $tax_name,
description => $tax_description
},
duty => { # Optional
amount => $tax_amount,
name => $tax_name,
description => $tax_description
},
lineItems => [ { # Optional
itemId => $itemId,
name => $name,
description => $description,
quantity => $quantity,
unitPrice => $unitPrice,
taxable => $taxable,
} ],
customerProfileId => $customerProfileId,
customerPaymentProfileId => $customerPaymentProfileId,
customerShippingAddressId => $customerShippingAddressId,
extraOptions => $extraOptions, # Optional
### Only required for profileTransPriorAuthCapture: For Prior Authorization and CaptureTransactions
### and profileTransRefund: For Refund Transactions
### and profileTransVoid: For Void Transactions
transId => $transId,
### Only partly required for profileTransRefund: For Refund Transactions
creditCardNumberMasked => $creditCardNumberMasked,
bankRoutingNumberMasked => $bankRoutingNumberMasked,
bankAccountNumberMasked => $bankAccountNumberMasked,
### rest are not for profileTransPriorAuthCapture
order => { # Optional
invoiceNumber => $invoiceNumber,
description => $description,
purchaseOrderNumber => $purchaseOrderNumber,
},
taxExempt => 'true', # optional
recurringBilling => 'false', # optional
cardCode => $cardCode, # Required only when the merchant would like to use the Card Code Verification (CCV) filter
splitTenderId => $splitTenderId, # Required for second and subsequent transactions related to a partial authorizaqtion transaction.
#### ONLY required for profileTransCaptureOnly: the Capture Only transaction type.
approvalCode => $approvalCode,
);
The first argument can be one of
* profileTransAuthOnly
For Authorization Only Transactions
* profileTransAuthCapture
For Authorization and Capture Transactions
* profileTransCaptureOnly
For Capture Only Transactions
* profileTransPriorAuthCapture
For Prior Authorization and CaptureTransactions
* profileTransRefund
For Refund Transactions
* profileTransVoid
For Void Transactions
$cim->createCustomerProfileTransaction(
'profileTransVoid', # or others like profileTransAuthOnly
refId => $refId, # Optional, reference id
customerProfileId => $customerProfileId,
customerPaymentProfileId => $customerPaymentProfileId,
customerShippingAddressId => $customerShippingAddressId,
extraOptions => $extraOptions, # Optional
transId => $transId,
);
deleteCustomerProfile
Delete an existing customer profile along with all associated customer
payment profiles and customer shipping addresses.
$cim->deleteCustomerProfile($customerProfileId);
deleteCustomerPaymentProfileRequest
Delete a customer payment profile from an existing customer profile.
$cim->deleteCustomerPaymentProfileRequest($customerProfileId, $customerPaymentProfileId);
deleteCustomerShippingAddressRequest
Delete a customer shipping address from an existing customer profile.
$cim->deleteCustomerShippingAddressRequest($customerProfileId, $customerAddressId);
getCustomerProfileIds
Retrieve all customer profile IDs you have previously created.
my @ProfileIds = $cim->getCustomerProfileIds;
getCustomerProfile
Retrieve an existing customer profile along with all the associated
customer payment profiles and customer shipping addresses.
$cim->getCustomerProfile($customerProfileId);
getCustomerPaymentProfileRequest
Retrieve a customer payment profile for an existing customer profile.
$cim->getCustomerPaymentProfileRequest($customerProfileId, $customerPaymentProfileId);
getCustomerShippingAddressRequest
Retrieve a customer shipping address for an existing customer profile.
$cim->getCustomerShippingAddressRequest($customerProfileId, $customerAddressId);
updateCustomerProfile
Update an existing customer profile
$cim->updateCustomerProfile(
customerProfileId => $customerProfileId,
refId => $refId, # Optional
merchantCustomerId => $merchantCustomerId,
description => $description,
email => $email
);
updateCustomerPaymentProfile
Update a customer payment profile for an existing customer profile.
$cim->updateCustomerPaymentProfile(
customerProfileId => $customerProfileId,
customerPaymentProfileId => $customerPaymentProfileId,
refId => $refId, # Optional
customerType => $customerType, # Optional
billTo => { # Optional, all sub items are Optional
firstName => $firstName,
lastName => $lastName,
company => $company,
address => $address,
city => $city,
state => $state,
zip => $zip,
country => $country,
phoneNumber => $phoneNumber,
faxNumber => $faxNumber
},
creditCard => { # required when the payment profile is credit card
cardNumber => $cardNumber,
expirationDate => $expirationDate, # YYYY-MM
cardCode => $cardCode, # Optional
},
bankAccount => { # required when the payment profile is bank account
accountType => $accountType, # Optional, one of checking, savings, businessChecking
routingNumber => $routingNumber,
accountNumber => $accountNumber,
nameOnAccount => $nameOnAccount,
echeckType => $echeckType, # Optionaal, one of CCD, PPD, TEL, WEB
bankName => $bankName, # Optional
},
);
updateCustomerShippingAddress
Update a shipping address for an existing customer profile.
$cim->updateCustomerShippingAddress(
customerProfileId => $customerProfileId,
customerAddressId => $customerAddressId,
refId => $refId, # Optional
firstName => $firstName,
lastName => $lastName,
company => $company,
address => $address,
city => $city,
state => $state,
zip => $zip,
country => $country,
phoneNumber => $phoneNumber,
faxNumber => $faxNumber
);
updateSplitTenderGroupRequest
Update the status of a split tender group (a group of transactions, each
of which pays for part of one order).
$cim->updateSplitTenderGroupRequest($splitTenderId, $splitTenderStatus);
# splitTenderStatus can be voided or completed.
validateCustomerPaymentProfile
Verify an existing customer payment profile by generating a test
transaction.
$cim->validateCustomerPaymentProfile(
customerProfileId => $customerProfileId,
customerPaymentProfileId => $customerPaymentProfileId,
customerShippingAddressId => $customerShippingAddressId,
cardCode => $cardCode, # Optional
);
AUTHOR
Fayland Lam
COPYRIGHT AND LICENSE
This software is copyright (c) 2011 by Fayland Lam.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.