{
    "content": [
        {
            "type": "text",
            "text": "# Business::OnlinePayment::AuthorizeNet (perldoc)\n\n## NAME\n\nBusiness::OnlinePayment::AuthorizeNet - AuthorizeNet backend for Business::OnlinePayment\n\n## SYNOPSIS\n\nuse Business::OnlinePayment;\n####\n# One step transaction, the simple case.\n####\nmy $tx = new Business::OnlinePayment(\"AuthorizeNet\");\n$tx->content(\ntype           => 'VISA',\nlogin          => 'testdrive',\npassword       => '', #password or transaction key\naction         => 'Normal Authorization',\ndescription    => 'Business::OnlinePayment test',\namount         => '49.95',\ninvoicenumber => '100100',\ncustomerid    => 'jsk',\nemail          => 'jason@example.com',\nfirstname     => 'Jason',\nlastname      => 'Kohles',\naddress        => '123 Anystreet',\ncity           => 'Anywhere',\nstate          => 'UT',\nzip            => '84058',\ncountry        => 'US',\ncardnumber    => '4007000000027',\nexpiration     => '09/02',\ncvv2           => '1234', #optional\nreferer        => 'http://valid.referer.url/',\n);\n$tx->submit();\nif($tx->issuccess()) {\nprint \"Card processed successfully: \".$tx->authorization.\"\\n\";\n} else {\nprint \"Card was rejected: \".$tx->errormessage.\"\\n\";\n}\n####\n# Two step transaction, authorization and capture.\n# If you don't need to review order before capture, you can\n# process in one step as above.\n####\nmy $tx = new Business::OnlinePayment(\"AuthorizeNet\");\n$tx->content(\ntype           => 'VISA',\nlogin          => 'testdrive',\npassword       => '',  #password or transaction key\naction         => 'Authorization Only',\ndescription    => 'Business::OnlinePayment test',\namount         => '49.95',\ninvoicenumber => '100100',\ncustomerid    => 'jsk',\nemail          => 'jason@example.com',\nfirstname     => 'Jason',\nlastname      => 'Kohles',\naddress        => '123 Anystreet',\ncity           => 'Anywhere',\nstate          => 'UT',\nzip            => '84058',\ncountry        => 'US',\ncardnumber    => '4007000000027',\nexpiration     => '09/02',\ncvv2           => '1234', #optional\nreferer        => 'http://valid.referer.url/',\n);\n$tx->submit();\nif($tx->issuccess()) {\n# get information about authorization\n$authorization = $tx->authorization\n$ordernum = $tx->ordernumber;\n$avscode = $tx->avscode; # AVS Response Code\n$cvv2response = $tx->cvv2response; # CVV2/CVC2/CID Response Code\n$cavvresponse = $tx->cavvresponse; # Cardholder Authentication\n# Verification Value (CAVV) Response\n# Code\n# now capture transaction\nmy $capture = new Business::OnlinePayment(\"AuthorizeNet\");\n$capture->content(\ntype           => 'CC',\naction         => 'Post Authorization',\nlogin          => 'YOURLOGIN\npassword       => 'YOURPASSWORD', #or transaction key\nordernumber   => $ordernum,\namount         => '49.95',\n);\n$capture->submit();\nif($capture->issuccess()) {\nprint \"Card captured successfully: \".$capture->authorization.\"\\n\";\n} else {\nprint \"Card was rejected: \".$capture->errormessage.\"\\n\";\n}\n} else {\nprint \"Card was rejected: \".$tx->errormessage.\"\\n\";\n}\n####\n# One step subscription, the simple case.\n####\nmy $tx = new Business::OnlinePayment(\"AuthorizeNet::ARB\");\n$tx->content(\ntype           => 'CC',\nlogin          => 'testdrive',\npassword       => 'testpass', #or transaction key\naction         => 'Recurring Authorization',\ninterval       => '7 days',\nstart          => '2008-3-10',\nperiods        => '16',\namount         => '99.95',\ntrialperiods   => '4',\ntrialamount    => '0',\ndescription    => 'Business::OnlinePayment test',\ninvoicenumber => '1153B33F',\ncustomerid    => 'vip',\nfirstname     => 'Tofu',\nlastname      => 'Beast',\naddress        => '123 Anystreet',\ncity           => 'Anywhere',\nstate          => 'GA',\nzip            => '84058',\ncardnumber    => '4111111111111111',\nexpiration     => '09/02',\n);\n$tx->submit();\nif($tx->issuccess()) {\nprint \"Card processed successfully: \".$tx->ordernumber.\"\\n\";\n} else {\nprint \"Card was rejected: \".$tx->errormessage.\"\\n\";\n}\nmy $subscription = $tx->ordernumber\n####\n# Subscription change.   Modestly more complicated.\n####\n$tx->content(\ntype           => 'CC',\nsubscription   => '99W2C',\nlogin          => 'testdrive',\npassword       => 'testpass', #or transaction key\naction         => 'Modify Recurring Authorization',\ninterval       => '7 days',\nstart          => '2008-3-10',\nperiods        => '16',\namount         => '29.95',\ntrialperiods   => '4',\ntrialamount    => '0',\ndescription    => 'Business::OnlinePayment test',\ninvoicenumber => '1153B340',\ncustomerid    => 'vip',\nfirstname     => 'Tofu',\nlastname      => 'Beast',\naddress        => '123 Anystreet',\ncity           => 'Anywhere',\nstate          => 'GA',\nzip            => '84058',\ncardnumber    => '4111111111111111',\nexpiration     => '09/02',\n);\n$tx->submit();\nif($tx->issuccess()) {\nprint \"Update processed successfully.\"\\n\";\n} else {\nprint \"Update was rejected: \".$tx->errormessage.\"\\n\";\n}\n$tx->content(\nsubscription   => '99W2D',\nlogin          => 'testdrive',\npassword       => 'testpass', # or transaction key\naction         => 'Cancel Recurring Authorization',\n);\n$tx->submit();\n####\n# Subscription cancellation.   It happens.\n####\nif($tx->issuccess()) {\nprint \"Cancellation processed successfully.\"\\n\";\n} else {\nprint \"Cancellation was rejected: \".$tx->errormessage.\"\\n\";\n}\n\n## DESCRIPTION\n\nFor detailed information see Business::OnlinePayment.\n\n## Sections\n\n- **NAME**\n- **SYNOPSIS**\n- **SUPPORTED TRANSACTION TYPES** (2 subsections)\n- **DESCRIPTION**\n- **METHODS AND FUNCTIONS** (1 subsections)\n- **NOTES**\n- **COMPATIBILITY**\n- **AUTHORS**\n- **CONTRIBUTIONS AND REPOSITORY**\n- **A WORD FROM OUR SPONSOR**\n- **SEE ALSO** (1 subsections)\n\nUse structuredContent.sections for detailed options, examples, and full documentation.\n"
        }
    ],
    "structuredContent": {
        "command": "Business::OnlinePayment::AuthorizeNet",
        "section": "",
        "mode": "perldoc",
        "summary": "Business::OnlinePayment::AuthorizeNet - AuthorizeNet backend for Business::OnlinePayment",
        "synopsis": "use Business::OnlinePayment;\n####\n# One step transaction, the simple case.\n####\nmy $tx = new Business::OnlinePayment(\"AuthorizeNet\");\n$tx->content(\ntype           => 'VISA',\nlogin          => 'testdrive',\npassword       => '', #password or transaction key\naction         => 'Normal Authorization',\ndescription    => 'Business::OnlinePayment test',\namount         => '49.95',\ninvoicenumber => '100100',\ncustomerid    => 'jsk',\nemail          => 'jason@example.com',\nfirstname     => 'Jason',\nlastname      => 'Kohles',\naddress        => '123 Anystreet',\ncity           => 'Anywhere',\nstate          => 'UT',\nzip            => '84058',\ncountry        => 'US',\ncardnumber    => '4007000000027',\nexpiration     => '09/02',\ncvv2           => '1234', #optional\nreferer        => 'http://valid.referer.url/',\n);\n$tx->submit();\nif($tx->issuccess()) {\nprint \"Card processed successfully: \".$tx->authorization.\"\\n\";\n} else {\nprint \"Card was rejected: \".$tx->errormessage.\"\\n\";\n}\n####\n# Two step transaction, authorization and capture.\n# If you don't need to review order before capture, you can\n# process in one step as above.\n####\nmy $tx = new Business::OnlinePayment(\"AuthorizeNet\");\n$tx->content(\ntype           => 'VISA',\nlogin          => 'testdrive',\npassword       => '',  #password or transaction key\naction         => 'Authorization Only',\ndescription    => 'Business::OnlinePayment test',\namount         => '49.95',\ninvoicenumber => '100100',\ncustomerid    => 'jsk',\nemail          => 'jason@example.com',\nfirstname     => 'Jason',\nlastname      => 'Kohles',\naddress        => '123 Anystreet',\ncity           => 'Anywhere',\nstate          => 'UT',\nzip            => '84058',\ncountry        => 'US',\ncardnumber    => '4007000000027',\nexpiration     => '09/02',\ncvv2           => '1234', #optional\nreferer        => 'http://valid.referer.url/',\n);\n$tx->submit();\nif($tx->issuccess()) {\n# get information about authorization\n$authorization = $tx->authorization\n$ordernum = $tx->ordernumber;\n$avscode = $tx->avscode; # AVS Response Code\n$cvv2response = $tx->cvv2response; # CVV2/CVC2/CID Response Code\n$cavvresponse = $tx->cavvresponse; # Cardholder Authentication\n# Verification Value (CAVV) Response\n# Code\n# now capture transaction\nmy $capture = new Business::OnlinePayment(\"AuthorizeNet\");\n$capture->content(\ntype           => 'CC',\naction         => 'Post Authorization',\nlogin          => 'YOURLOGIN\npassword       => 'YOURPASSWORD', #or transaction key\nordernumber   => $ordernum,\namount         => '49.95',\n);\n$capture->submit();\nif($capture->issuccess()) {\nprint \"Card captured successfully: \".$capture->authorization.\"\\n\";\n} else {\nprint \"Card was rejected: \".$capture->errormessage.\"\\n\";\n}\n} else {\nprint \"Card was rejected: \".$tx->errormessage.\"\\n\";\n}\n####\n# One step subscription, the simple case.\n####\nmy $tx = new Business::OnlinePayment(\"AuthorizeNet::ARB\");\n$tx->content(\ntype           => 'CC',\nlogin          => 'testdrive',\npassword       => 'testpass', #or transaction key\naction         => 'Recurring Authorization',\ninterval       => '7 days',\nstart          => '2008-3-10',\nperiods        => '16',\namount         => '99.95',\ntrialperiods   => '4',\ntrialamount    => '0',\ndescription    => 'Business::OnlinePayment test',\ninvoicenumber => '1153B33F',\ncustomerid    => 'vip',\nfirstname     => 'Tofu',\nlastname      => 'Beast',\naddress        => '123 Anystreet',\ncity           => 'Anywhere',\nstate          => 'GA',\nzip            => '84058',\ncardnumber    => '4111111111111111',\nexpiration     => '09/02',\n);\n$tx->submit();\nif($tx->issuccess()) {\nprint \"Card processed successfully: \".$tx->ordernumber.\"\\n\";\n} else {\nprint \"Card was rejected: \".$tx->errormessage.\"\\n\";\n}\nmy $subscription = $tx->ordernumber\n####\n# Subscription change.   Modestly more complicated.\n####\n$tx->content(\ntype           => 'CC',\nsubscription   => '99W2C',\nlogin          => 'testdrive',\npassword       => 'testpass', #or transaction key\naction         => 'Modify Recurring Authorization',\ninterval       => '7 days',\nstart          => '2008-3-10',\nperiods        => '16',\namount         => '29.95',\ntrialperiods   => '4',\ntrialamount    => '0',\ndescription    => 'Business::OnlinePayment test',\ninvoicenumber => '1153B340',\ncustomerid    => 'vip',\nfirstname     => 'Tofu',\nlastname      => 'Beast',\naddress        => '123 Anystreet',\ncity           => 'Anywhere',\nstate          => 'GA',\nzip            => '84058',\ncardnumber    => '4111111111111111',\nexpiration     => '09/02',\n);\n$tx->submit();\nif($tx->issuccess()) {\nprint \"Update processed successfully.\"\\n\";\n} else {\nprint \"Update was rejected: \".$tx->errormessage.\"\\n\";\n}\n$tx->content(\nsubscription   => '99W2D',\nlogin          => 'testdrive',\npassword       => 'testpass', # or transaction key\naction         => 'Cancel Recurring Authorization',\n);\n$tx->submit();\n####\n# Subscription cancellation.   It happens.\n####\nif($tx->issuccess()) {\nprint \"Cancellation processed successfully.\"\\n\";\n} else {\nprint \"Cancellation was rejected: \".$tx->errormessage.\"\\n\";\n}",
        "tldr_summary": null,
        "tldr_examples": [],
        "tldr_source": null,
        "flags": [],
        "examples": [],
        "see_also": [],
        "section_outline": [
            {
                "name": "NAME",
                "lines": 2,
                "subsections": []
            },
            {
                "name": "SYNOPSIS",
                "lines": 193,
                "subsections": []
            },
            {
                "name": "SUPPORTED TRANSACTION TYPES",
                "lines": 4,
                "subsections": [
                    {
                        "name": "Check",
                        "lines": 4
                    },
                    {
                        "name": "Subscriptions",
                        "lines": 2
                    }
                ]
            },
            {
                "name": "DESCRIPTION",
                "lines": 2,
                "subsections": []
            },
            {
                "name": "METHODS AND FUNCTIONS",
                "lines": 30,
                "subsections": [
                    {
                        "name": "content",
                        "lines": 57
                    }
                ]
            },
            {
                "name": "NOTES",
                "lines": 28,
                "subsections": []
            },
            {
                "name": "COMPATIBILITY",
                "lines": 5,
                "subsections": []
            },
            {
                "name": "AUTHORS",
                "lines": 45,
                "subsections": []
            },
            {
                "name": "CONTRIBUTIONS AND REPOSITORY",
                "lines": 19,
                "subsections": []
            },
            {
                "name": "A WORD FROM OUR SPONSOR",
                "lines": 11,
                "subsections": []
            },
            {
                "name": "SEE ALSO",
                "lines": 1,
                "subsections": [
                    {
                        "name": "perl",
                        "lines": 1
                    }
                ]
            }
        ],
        "sections": {
            "NAME": {
                "content": "Business::OnlinePayment::AuthorizeNet - AuthorizeNet backend for Business::OnlinePayment\n",
                "subsections": []
            },
            "SYNOPSIS": {
                "content": "use Business::OnlinePayment;\n\n####\n# One step transaction, the simple case.\n####\n\nmy $tx = new Business::OnlinePayment(\"AuthorizeNet\");\n$tx->content(\ntype           => 'VISA',\nlogin          => 'testdrive',\npassword       => '', #password or transaction key\naction         => 'Normal Authorization',\ndescription    => 'Business::OnlinePayment test',\namount         => '49.95',\ninvoicenumber => '100100',\ncustomerid    => 'jsk',\nemail          => 'jason@example.com',\nfirstname     => 'Jason',\nlastname      => 'Kohles',\naddress        => '123 Anystreet',\ncity           => 'Anywhere',\nstate          => 'UT',\nzip            => '84058',\ncountry        => 'US',\ncardnumber    => '4007000000027',\nexpiration     => '09/02',\ncvv2           => '1234', #optional\nreferer        => 'http://valid.referer.url/',\n);\n$tx->submit();\n\nif($tx->issuccess()) {\nprint \"Card processed successfully: \".$tx->authorization.\"\\n\";\n} else {\nprint \"Card was rejected: \".$tx->errormessage.\"\\n\";\n}\n\n####\n# Two step transaction, authorization and capture.\n# If you don't need to review order before capture, you can\n# process in one step as above.\n####\n\nmy $tx = new Business::OnlinePayment(\"AuthorizeNet\");\n$tx->content(\ntype           => 'VISA',\nlogin          => 'testdrive',\npassword       => '',  #password or transaction key\naction         => 'Authorization Only',\ndescription    => 'Business::OnlinePayment test',\namount         => '49.95',\ninvoicenumber => '100100',\ncustomerid    => 'jsk',\nemail          => 'jason@example.com',\nfirstname     => 'Jason',\nlastname      => 'Kohles',\naddress        => '123 Anystreet',\ncity           => 'Anywhere',\nstate          => 'UT',\nzip            => '84058',\ncountry        => 'US',\ncardnumber    => '4007000000027',\nexpiration     => '09/02',\ncvv2           => '1234', #optional\nreferer        => 'http://valid.referer.url/',\n);\n$tx->submit();\n\nif($tx->issuccess()) {\n# get information about authorization\n$authorization = $tx->authorization\n$ordernum = $tx->ordernumber;\n$avscode = $tx->avscode; # AVS Response Code\n$cvv2response = $tx->cvv2response; # CVV2/CVC2/CID Response Code\n$cavvresponse = $tx->cavvresponse; # Cardholder Authentication\n# Verification Value (CAVV) Response\n# Code\n\n# now capture transaction\nmy $capture = new Business::OnlinePayment(\"AuthorizeNet\");\n\n$capture->content(\ntype           => 'CC',\naction         => 'Post Authorization',\nlogin          => 'YOURLOGIN\npassword       => 'YOURPASSWORD', #or transaction key\nordernumber   => $ordernum,\namount         => '49.95',\n);\n\n$capture->submit();\n\nif($capture->issuccess()) {\nprint \"Card captured successfully: \".$capture->authorization.\"\\n\";\n} else {\nprint \"Card was rejected: \".$capture->errormessage.\"\\n\";\n}\n\n} else {\nprint \"Card was rejected: \".$tx->errormessage.\"\\n\";\n}\n\n####\n# One step subscription, the simple case.\n####\n\nmy $tx = new Business::OnlinePayment(\"AuthorizeNet::ARB\");\n$tx->content(\ntype           => 'CC',\nlogin          => 'testdrive',\npassword       => 'testpass', #or transaction key\naction         => 'Recurring Authorization',\ninterval       => '7 days',\nstart          => '2008-3-10',\nperiods        => '16',\namount         => '99.95',\ntrialperiods   => '4',\ntrialamount    => '0',\ndescription    => 'Business::OnlinePayment test',\ninvoicenumber => '1153B33F',\ncustomerid    => 'vip',\nfirstname     => 'Tofu',\nlastname      => 'Beast',\naddress        => '123 Anystreet',\ncity           => 'Anywhere',\nstate          => 'GA',\nzip            => '84058',\ncardnumber    => '4111111111111111',\nexpiration     => '09/02',\n);\n$tx->submit();\n\nif($tx->issuccess()) {\nprint \"Card processed successfully: \".$tx->ordernumber.\"\\n\";\n} else {\nprint \"Card was rejected: \".$tx->errormessage.\"\\n\";\n}\nmy $subscription = $tx->ordernumber\n\n\n####\n# Subscription change.   Modestly more complicated.\n####\n\n$tx->content(\ntype           => 'CC',\nsubscription   => '99W2C',\nlogin          => 'testdrive',\npassword       => 'testpass', #or transaction key\naction         => 'Modify Recurring Authorization',\ninterval       => '7 days',\nstart          => '2008-3-10',\nperiods        => '16',\namount         => '29.95',\ntrialperiods   => '4',\ntrialamount    => '0',\ndescription    => 'Business::OnlinePayment test',\ninvoicenumber => '1153B340',\ncustomerid    => 'vip',\nfirstname     => 'Tofu',\nlastname      => 'Beast',\naddress        => '123 Anystreet',\ncity           => 'Anywhere',\nstate          => 'GA',\nzip            => '84058',\ncardnumber    => '4111111111111111',\nexpiration     => '09/02',\n);\n$tx->submit();\n\nif($tx->issuccess()) {\nprint \"Update processed successfully.\"\\n\";\n} else {\nprint \"Update was rejected: \".$tx->errormessage.\"\\n\";\n}\n$tx->content(\nsubscription   => '99W2D',\nlogin          => 'testdrive',\npassword       => 'testpass', # or transaction key\naction         => 'Cancel Recurring Authorization',\n);\n$tx->submit();\n\n####\n# Subscription cancellation.   It happens.\n####\n\nif($tx->issuccess()) {\nprint \"Cancellation processed successfully.\"\\n\";\n} else {\nprint \"Cancellation was rejected: \".$tx->errormessage.\"\\n\";\n}\n",
                "subsections": []
            },
            "SUPPORTED TRANSACTION TYPES": {
                "content": "CC, Visa, MasterCard, American Express, Discover\nContent required: type, login, password, action, amount, firstname, lastname, cardnumber,\nexpiration.\n",
                "subsections": [
                    {
                        "name": "Check",
                        "content": "Content required: type, login, password, action, amount, firstname, lastname, accountnumber,\nroutingcode, bankname (non-subscription), accounttype (subscription), checktype\n(subscription).\n"
                    },
                    {
                        "name": "Subscriptions",
                        "content": "Additional content required: interval, start, periods.\n"
                    }
                ]
            },
            "DESCRIPTION": {
                "content": "For detailed information see Business::OnlinePayment.\n",
                "subsections": []
            },
            "METHODS AND FUNCTIONS": {
                "content": "See Business::OnlinePayment for the complete list. The following methods either override the\nmethods in Business::OnlinePayment or provide additional functions.\n\nresultcode\nReturns the response reason code (from the message.code field for subscriptions).\n\nerrormessage\nReturns the response reason text (from the message.text field for subscriptions.\n\nserverresponse\nReturns the complete response from the server.\n\nHandling of content(%content) data:\naction\nThe following actions are valid\n\nnormal authorization\nauthorization only\ncredit\npost authorization\nvoid\nrecurring authorization\nmodify recurring authorization\ncancel recurring authorization\n\ninterval\nInterval contains a number of digits, whitespace, and the units of days or months in either singular or plural form.\n\nSetting AuthorizeNet ARB parameters from content(%content)\nThe following rules are applied to map data to AuthorizeNet ARB parameters from",
                "subsections": [
                    {
                        "name": "content",
                        "content": "# ARB param => $content{<key>}\nmerchantAuthentication\nname                     =>  'login',\ntransactionKey           =>  'password',\nsubscription\npaymentSchedule\ninterval\nlength               => \\( the digits in 'interval' ),\nunit                 => \\( days or months gleaned from 'interval' ),          startDate              => 'start',\ntotalOccurrences       => 'periods',\ntrialOccurrences       => 'trialperiods',\namount                   => 'amount',\ntrialAmount              => 'trialamount',\npayment\ncreditCard\ncardNumber           => 'cardnumber',\nexpiration           => \\( $year.'-'.$month ), # YYYY-MM from 'expiration'\nbankAccount\naccountType          => 'accounttype',\nroutingNumber        => 'routingcode',\naccountNumber        => 'accountnumber,\nnameOnAccount        => 'name',\nbankName             => 'bankname',\necheckType           => 'checktype',\norder\ninvoiceNumber          => 'invoicenumber',\ndescription            => 'description',\ncustomer\ntype                   => 'customerorg',\nid                     => 'customerid',\nemail                  => 'email',\nphoneNumber            => 'phone',\nfaxNumber              => 'fax',\ndriversLicense\nnumber               => 'licensenum',\nstate                => 'licensestate',\ndateOfBirth          => 'licensedob',\ntaxid                  => 'customerssn',\nbillTo\nfirstName              => 'firstname',\nlastName               => 'lastname',\ncompany                => 'company',\naddress                => 'address',\ncity                   => 'city',\nstate                  => 'state',\nzip                    => 'zip',\ncountry                => 'country',\nshipTo\nfirstName              => 'shipfirstname',\nlastName               => 'shiplastname',\ncompany                => 'shipcompany',\naddress                => 'shipaddress',\ncity                   => 'shipcity',\nstate                  => 'shipstate',\nzip                    => 'shipzip',\ncountry                => 'shipcountry',\n"
                    }
                ]
            },
            "NOTES": {
                "content": "Use your transaction key in the password field.\n\nUnlike Business::OnlinePayment or pre-3.0 versions of Business::OnlinePayment::AuthorizeNet, 3.1\nrequires separate firstname and lastname fields.\n\nBusiness::OnlinePayment::AuthorizeNet uses Authorize.Net's \"Advanced Integration Method (AIM)\n(formerly known as ADC direct response)\" and \"Automatic Recurring Billing (ARB)\", sending a\nusername and password (or transaction key as password) with every transaction. Therefore,\nAuthorize.Net's referrer \"security\" is not necessary. In your Authorize.Net interface at\nhttps://secure.authorize.net/ make sure the list of allowable referers is blank. Alternatively,\nset the referer field in the transaction content.\n\nTo settle an authorization-only transaction (where you set action to 'Authorization Only'),\nsubmit the nine-digit transaction id code in the field \"ordernumber\" with the action set to\n\"Post Authorization\". You can get the transaction id from the authorization by calling the\nordernumber method on the object returned from the authorization. You must also submit the\namount field with a value less than or equal to the amount specified in the original\nauthorization.\n\nFor the subscription actions an authorization code is never returned by the module. Instead it\nreturns the value of subscriptionId in ordernumber. This is the value to use for changing or\ncancelling subscriptions.\n\nAuthorize.Net has turned address verification on by default for all merchants since 2002. If you\ndo not have valid address information for your customer (such as in an IVR application), you\nmust disable address verification in the Merchant Menu page at https://secure.authorize.net/ so\nthat the transactions aren't denied due to a lack of address information.\n",
                "subsections": []
            },
            "COMPATIBILITY": {
                "content": "This module implements Authorize.Net's API using the Advanced Integration Method (AIM) version\n3.1, formerly known as ADC Direct Response and the Automatic Recurring Billing version 1.0 using\nthe XML interface. See http://www.authorize.net/support/AIMguide.pdf and\nhttp://www.authorize.net/support/ARBguide.pdf for details.\n",
                "subsections": []
            },
            "AUTHORS": {
                "content": "Original author: Jason Kohles, jason@mediabang.com\n\nIvan Kohler <ivan-authorizenet@freeside.biz> updated it for Authorize.Net protocol 3.0/3.1 and\nis the current maintainer. Please see the next section for for information on contributing.\n\nJason Spence <jspence@lightconsulting.com> contributed support for separate Authorization Only\nand Post Authorization steps and wrote some docs. OST <services@ostel.com> paid for it.\n\nJeff Finucane <authorizenetarb@weasellips.com> added the ARB support. ARB support sponsored by\nPlus Three, LP. <http://www.plusthree.com>.\n\nT.J. Mather <tjmather@maxmind.com> sent a number of CVV2 patches.\n\nMike Barry <mbarry@cos.com> sent in a patch for the referer field and a fix for shipcompany.\n\nYuri V. Mkrtumyan <yuramk@novosoft.ru> sent in a patch to add the void action.\n\nPaul Zimmer <AuthorizeNetpm@pzimmer.box.bepress.com> sent in a patch for card-less post\nauthorizations.\n\nDaemmon Hughes <daemmon@daemmonhughes.com> sent in a patch for \"transaction key\" authentication\nas well support for the recurringbilling flag and the md5 method that returns the MD5 hash\nwhich is returned by the gateway.\n\nSteve Simitzis contributed a patch for better compatibility with eProcessingNetwork's\nAuthorizeNet compatibility mode.\n\nMichael G. Schwern contributed cleanups, test fixes, and more.\n\nErik Hollensbe implemented card-present data (track1/track2), the duplicatewindow parameter,\nand test fixes.\n\nPaul Timmins added the checknumber field.\n\nNate Nuss implemented the (\"Additional Shipping Information (Level 2 Data)\" fields: tax,\nfreight, duty, taxexempt, ponumber.\n\nMichael Peters fixed a bug in email address handling.\n\nThomas Sibley <trs@bestpractical.com> wrote B:OP:AuthorizeNet::AIM::ErrorCodes which was borged\nand used to provide more descriptive error messages.\n\nCraig Pearlman <cpearlma@yahoo.com> sent in a patch to more accurately declare required fields\nfor E-check transcations.\n",
                "subsections": []
            },
            "CONTRIBUTIONS AND REPOSITORY": {
                "content": "Please send patches as unified diffs (diff -u) to (in order of preference):\n\nCPAN RT\nhttp://rt.cpan.org/Public/Bug/Report.html?Queue=Business-OnlinePayment-AuthorizeNet\n\nThe bop-devel mailing list\nhttp://420.am/cgi-bin/mailman/listinfo/bop-devel\n\nIvan\nIvan Kohler <ivan-authorizenet@freeside.biz>\n\nThe code is available from our public git repository:\n\ngit clone git://fit.freeside.biz/Business-OnlinePayment-AuthorizeNet.git\n\nOr on the web:\n\nhttp://freeside.biz/gitweb/?p=Business-OnlinePayment-AuthorizeNet.git\n",
                "subsections": []
            },
            "A WORD FROM OUR SPONSOR": {
                "content": "This module and the Business::OnlinePayment framework are maintained by by Freeside Internet\nServices. If you need a complete, open-source web-based application to manage your customers,\nbilling and trouble ticketing, please visit http://freeside.biz/\n\nCOPYRIGHT & LICENSE\nCopyright 2010-2015 Freeside Internet Services, Inc. Copyright 2008 Thomas Sibley All rights\nreserved.\n\nThis program is free software; you can redistribute it and/or modify it under the same terms as\nPerl itself.\n",
                "subsections": []
            },
            "SEE ALSO": {
                "content": "",
                "subsections": [
                    {
                        "name": "perl",
                        "content": ""
                    }
                ]
            }
        }
    }
}