From 8483a908d024bb656c3b708d174d36cfe235a266 Mon Sep 17 00:00:00 2001 From: Laury GvR Date: Mon, 17 Nov 2014 14:43:49 -0500 Subject: [PATCH] Initial commit --- anet_php_sdk/AuthorizeNet.php | 29 + anet_php_sdk/License.pdf | Bin 0 -> 208848 bytes anet_php_sdk/README | 230 +++ anet_php_sdk/README.html | 358 +++++ anet_php_sdk/doc/AIM.markdown | 187 +++ anet_php_sdk/doc/ARB.markdown | 52 + anet_php_sdk/doc/CIM.markdown | 249 +++ anet_php_sdk/doc/CP.markdown | 43 + anet_php_sdk/doc/DPM.markdown | 24 + anet_php_sdk/doc/SIM.markdown | 74 + anet_php_sdk/doc/SOAP.markdown | 10 + anet_php_sdk/doc/TD.markdown | 55 + anet_php_sdk/lib/AuthorizeNetAIM.php | 500 ++++++ anet_php_sdk/lib/AuthorizeNetARB.php | 159 ++ anet_php_sdk/lib/AuthorizeNetCIM.php | 511 ++++++ anet_php_sdk/lib/AuthorizeNetCP.php | 222 +++ anet_php_sdk/lib/AuthorizeNetDPM.php | 237 +++ anet_php_sdk/lib/AuthorizeNetSIM.php | 212 +++ anet_php_sdk/lib/AuthorizeNetSOAP.php | 99 ++ anet_php_sdk/lib/AuthorizeNetTD.php | 209 +++ .../lib/shared/AuthorizeNetRequest.php | 120 ++ .../lib/shared/AuthorizeNetResponse.php | 75 + anet_php_sdk/lib/shared/AuthorizeNetTypes.php | 323 ++++ .../lib/shared/AuthorizeNetXMLResponse.php | 128 ++ anet_php_sdk/lib/ssl/cert.pem | 253 +++ anet_php_sdk/tests/AuthorizeNetAIM_Test.php | 888 +++++++++++ anet_php_sdk/tests/AuthorizeNetARB_Test.php | 201 +++ anet_php_sdk/tests/AuthorizeNetCIM_Test.php | 355 +++++ anet_php_sdk/tests/AuthorizeNetCP_Test.php | 179 +++ anet_php_sdk/tests/AuthorizeNetDPM_Test.php | 25 + anet_php_sdk/tests/AuthorizeNetSIM_Test.php | 56 + anet_php_sdk/tests/AuthorizeNetSSL_Test.php | 23 + anet_php_sdk/tests/AuthorizeNetTD_Test.php | 96 ++ anet_php_sdk/tests/AuthorizeNet_SOAP_Test.php | 31 + .../tests/AuthorizeNet_Test_Config.php | 47 + anet_php_sdk/tests/README | 17 + anet_php_sdk/tests/domain.crt | 51 + anet_php_sdk/tests/report.html | 1 + css/glm-donate-admin.css | 302 ++++ css/glm-donate-display.css | 351 +++++ css/glm-donate-thickbox.css | 187 +++ css/glm-donate-widget.css | 62 + includes/donate-display.php | 1391 +++++++++++++++++ includes/donate-display_1.php | 1367 ++++++++++++++++ includes/donate-function.php | 290 ++++ includes/donate-options.php | 199 +++ js/glm-donate.js | 117 ++ js/list.min.js | 1 + js/paymentmethods.js | 19 + readme.txt | 68 + screenshot-1.png | Bin 0 -> 59138 bytes screenshot-2.png | Bin 0 -> 67551 bytes screenshot-3.png | Bin 0 -> 93406 bytes screenshot-4.png | Bin 0 -> 67678 bytes wp-donate.php | 124 ++ 55 files changed, 10807 insertions(+) create mode 100755 anet_php_sdk/AuthorizeNet.php create mode 100755 anet_php_sdk/License.pdf create mode 100755 anet_php_sdk/README create mode 100755 anet_php_sdk/README.html create mode 100755 anet_php_sdk/doc/AIM.markdown create mode 100755 anet_php_sdk/doc/ARB.markdown create mode 100755 anet_php_sdk/doc/CIM.markdown create mode 100755 anet_php_sdk/doc/CP.markdown create mode 100755 anet_php_sdk/doc/DPM.markdown create mode 100755 anet_php_sdk/doc/SIM.markdown create mode 100755 anet_php_sdk/doc/SOAP.markdown create mode 100755 anet_php_sdk/doc/TD.markdown create mode 100755 anet_php_sdk/lib/AuthorizeNetAIM.php create mode 100755 anet_php_sdk/lib/AuthorizeNetARB.php create mode 100755 anet_php_sdk/lib/AuthorizeNetCIM.php create mode 100755 anet_php_sdk/lib/AuthorizeNetCP.php create mode 100755 anet_php_sdk/lib/AuthorizeNetDPM.php create mode 100755 anet_php_sdk/lib/AuthorizeNetSIM.php create mode 100755 anet_php_sdk/lib/AuthorizeNetSOAP.php create mode 100755 anet_php_sdk/lib/AuthorizeNetTD.php create mode 100755 anet_php_sdk/lib/shared/AuthorizeNetRequest.php create mode 100755 anet_php_sdk/lib/shared/AuthorizeNetResponse.php create mode 100755 anet_php_sdk/lib/shared/AuthorizeNetTypes.php create mode 100755 anet_php_sdk/lib/shared/AuthorizeNetXMLResponse.php create mode 100755 anet_php_sdk/lib/ssl/cert.pem create mode 100755 anet_php_sdk/tests/AuthorizeNetAIM_Test.php create mode 100755 anet_php_sdk/tests/AuthorizeNetARB_Test.php create mode 100755 anet_php_sdk/tests/AuthorizeNetCIM_Test.php create mode 100755 anet_php_sdk/tests/AuthorizeNetCP_Test.php create mode 100755 anet_php_sdk/tests/AuthorizeNetDPM_Test.php create mode 100755 anet_php_sdk/tests/AuthorizeNetSIM_Test.php create mode 100755 anet_php_sdk/tests/AuthorizeNetSSL_Test.php create mode 100755 anet_php_sdk/tests/AuthorizeNetTD_Test.php create mode 100755 anet_php_sdk/tests/AuthorizeNet_SOAP_Test.php create mode 100755 anet_php_sdk/tests/AuthorizeNet_Test_Config.php create mode 100755 anet_php_sdk/tests/README create mode 100755 anet_php_sdk/tests/domain.crt create mode 100755 anet_php_sdk/tests/report.html create mode 100755 css/glm-donate-admin.css create mode 100755 css/glm-donate-display.css create mode 100755 css/glm-donate-thickbox.css create mode 100755 css/glm-donate-widget.css create mode 100755 includes/donate-display.php create mode 100644 includes/donate-display_1.php create mode 100755 includes/donate-function.php create mode 100755 includes/donate-options.php create mode 100755 js/glm-donate.js create mode 100755 js/list.min.js create mode 100755 js/paymentmethods.js create mode 100755 readme.txt create mode 100755 screenshot-1.png create mode 100755 screenshot-2.png create mode 100755 screenshot-3.png create mode 100755 screenshot-4.png create mode 100755 wp-donate.php diff --git a/anet_php_sdk/AuthorizeNet.php b/anet_php_sdk/AuthorizeNet.php new file mode 100755 index 0000000..31fdaa9 --- /dev/null +++ b/anet_php_sdk/AuthorizeNet.php @@ -0,0 +1,29 @@ +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 oiV>RHSwKDa0ux3IPje?lQ5{X>vC?dD}*X^ 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듯P+dYC)B$uSRi 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

&G7}GBpw23AXK%A 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

{}e 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ÐDCLVT1JIQ!>4?)_Dn9Bffc04+y*}(`Z+yD`_i*v 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 z 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%0AL3I&H$~pnEVo$KCy#-0C+tNR&;+VKzZ{WG`6 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 Includes all classes. Include this file in your project. + - lib/AuthorizeNetAIM.php -> AIM API. + - lib/AuthorizeNetARB.php -> ARB API. + - lib/AuthorizeNetCIM.php -> CIM API. + - lib/AuthorizeNetSIM.php -> SIM API. + - lib/AuthorizeNetTD.php -> Reporting API. + - lib/AuthorizeNetCP.php -> Card Present API. + - lib/AuthorizeNetDPM.php -> Direct Post Method Helpers. + - lib/AuthorizeNetSOAP.php -> Class to assist with using the SOAP API. + - lib/shared/AuthorizeNetRequest.php -> Class to connect to AuthorizeNet. + - lib/shared/AuthorizeNetTypes.php -> Classes for AuthorizeNet Datatypes. + - lib/shared/AuthorizeNetResponse.php -> Class to parse AuthorizeNet NVP Responses. + - lib/shared/AuthorizeNetXMLResponse.php -> Class to parse AuthorizeNet XML Responses. + - lib/ssl/cert.pem -> The AuthorizeNet Certificate bundle. + - tests/ -> Tests & examples for each of the API methods. + - README -> This file. + - README.html -> HTML version of this file. + +Requirements: + - cURL PHP Extension + - PHP 5.2+ + - An Authorize.Net Merchant Account or Test Account. You can get a + free test account at http://developer.authorize.net/testaccount/ + +Install: + - Include the 'AuthorizeNet.php' file in your application. + - Use your desired API. + +Usage Examples: + See below for basic usage examples. View the tests/ folder for more examples of each API. + +AuthorizeNetAIM.php Quick Usage Example: + amount = "5.99"; + $sale->card_num = '6011000000000012'; + $sale->exp_date = '04/15'; + $response = $sale->authorizeAndCapture(); + if ($response->approved) { + $transaction_id = $response->transaction_id; + } + ?> + +AuthorizeNetAIM.php Advanced Usage Example: + amount = "45.00"; + + // Use eCheck: + $auth->setECheck( + '121042882', + '123456789123', + 'CHECKING', + 'Bank of Earth', + 'Jane Doe', + 'WEB' + ); + + // Set multiple line items: + $auth->addLineItem('item1', 'Golf tees', 'Blue tees', '2', '5.00', 'N'); + $auth->addLineItem('item2', 'Golf shirt', 'XL', '1', '40.00', 'N'); + + // Set Invoice Number: + $auth->invoice_num = time(); + + // Set a Merchant Defined Field: + $auth->setCustomField("entrance_source", "Search Engine"); + + // Authorize Only: + $response = $auth->authorizeOnly(); + + if ($response->approved) { + $auth_code = $response->transaction_id; + + // Now capture: + $capture = new AuthorizeNetAIM; + $capture_response = $capture->priorAuthCapture($auth_code); + + // Now void: + $void = new AuthorizeNetAIM; + $void_response = $void->void($capture_response->transaction_id); + } + ?> + +AuthorizeNetARB.php Usage Example: + name = "PHP Monthly Magazine"; + $subscription->intervalLength = "1"; + $subscription->intervalUnit = "months"; + $subscription->startDate = "2011-03-12"; + $subscription->totalOccurrences = "12"; + $subscription->amount = "12.99"); + $subscription->creditCardCardNumber = "6011000000000012"; + $subscription->creditCardExpirationDate= "2018-10"; + $subscription->creditCardCardCode = "123"; + $subscription->billToFirstName = "Rasmus"; + $subscription->billToLastName = "Doe"; + + // Create the subscription. + $request = new AuthorizeNetARB; + $response = $request->createSubscription($subscription); + $subscription_id = $response->getSubscriptionId(); + ?> + +AuthorizeNetCIM.php Usage Example: + description = "Description of customer"; + $customerProfile->merchantCustomerId= time(); + $customerProfile->email = "test@domain.com"; + $response = $request->createCustomerProfile($customerProfile); + if ($response->isOk()) { + $customerProfileId = $response->getCustomerProfileId(); + } + ?> + +AuthorizeNetSIM.php Usage Example: + isAuthorizeNet()) { + $transactionId = $message->transaction_id; + } + ?> + +AuthorizeNetDPM.php Usage Example: + + +AuthorizeNetCP.php Usage Example: + amount = '59.99'; + $sale->device_type = '4'; + $sale->setTrack1Data('%B4111111111111111^CARDUSER/JOHN^1803101000000000020000831000000?'); + $response = $sale->authorizeAndCapture(); + $trans_id = $response->transaction_id; + ?> + +AuthorizeNetTD.php Usage Example: + getTransactionDetails("12345"); + echo $response->xml->transaction->transactionStatus; + ?> + +Test Credit Card Numbers: + - Set the expiration date to anytime in the future. + - American Express Test Card=> 370000000000002 + - Discover Test Card => 6011000000000012 + - Visa Test Card => 4007000000027 + - Second Visa Test Card => 4012888818888 + - JCB => 3088000000000017 + - Diners Club/ Carte Blanche=> 38000000000006 + +PHPDoc: + To autogenerate PHPDocs run: + phpdoc -t phpdocs/ -f AuthorizeNet.php -d lib + +Release Notes + Version 1.1.8 + - Fixed an issue with validationMode in CIM::updateCustomerPaymentProfile. + Note: The behavior where validationMode persisted across transactions using the same request object + has been removed. This was unsupported behavior. + - Removed an unused validationMode argument in CIM::updateCustomerProfile. The parameter used to be ignored, now its removed. + - Enhanced the tests with checks for single digit months in expiration date support and SSL certificate validity. + Version 1.1.7 + - Added getBatchStatisticsRequest and getUnsettledTransactionListRequest support to the SDK. + Version 1.1.6 + - Added the HTML version of the README to the distributed bundle. It was missing in version 1.1.5. + Version 1.1.5 + - Added HTML version of README. + Version 1.1.4 + - Updated the cert.pem bundle to include the new secure.authorize.net SSL certificate. + Version 1.1.3 + - Added more documentation + - Improved support for all Transaction Details API methods. + - Added support for the Card Present API. + - Added easier xpath support to XML Response class. + - Added ability to use DPM sample app with production account. + Version 1.1.2 + - Added getValidationResponses method to CIM Response for parsing the validation results when validating payment profiles. + - Added support for UpdateSplitTenderGroup method to CIM request. + - Bug fix. In CIM requests using validation mode the the validation mode element should have been added to the end of the request. + - Bug fix. In AIM Response class where $response->account_number was returning the wrong value. \ No newline at end of file diff --git a/anet_php_sdk/README.html b/anet_php_sdk/README.html new file mode 100755 index 0000000..795637a --- /dev/null +++ b/anet_php_sdk/README.html @@ -0,0 +1,358 @@ + + + + PHP SDK README + + + + +

Authorize.Net PHP SDK

+

version 3.1.2

+
http://developer.authorize.net
+
http://community.developer.authorize.net
+ +
+

License

+Authorize.Net
+ See License.pdf +
+ +
+

About

+A PHP library for working with all Authorize.Net APIs. + + +
+

Files

+ + + + + + + + + + + + + + + + + + + +
Authorize.Net.phpIncludes all classes. Include this file in your project.
AuthorizeNet.phpIncludes all classes. Include this file in your project.
lib/AuthorizeNetAIM.phpAIM API.
lib/AuthorizeNetARB.php-> ARB API.
lib/AuthorizeNetCIM.phpCIM API.
lib/AuthorizeNetSIM.phpSIM API.
lib/AuthorizeNetTD.phpReporting API.
lib/AuthorizeNetCP.phpCard Present API.
lib/AuthorizeNetDPM.phpDirect Post Method Helpers.
lib/AuthorizeNetSOAP.phpClass to assist with using the SOAP API.
lib/shared/AuthorizeNetRequest.phpClass to connect to AuthorizeNet.
lib/shared/AuthorizeNetTypes.phpClasses for AuthorizeNet Datatypes.
lib/shared/AuthorizeNetResponse.phpClass to parse AuthorizeNet NVP Responses.
lib/shared/AuthorizeNetXMLResponse.phpClass to parse AuthorizeNet XML Responses.
lib/ssl/cert.pemThe AuthorizeNet Certificate bundle.
tests/Tests & examples for each of the API methods.
READMEPlain text version of this file.
README.htmlThis file.
+ +
+

Requirements

+ + +

Install

+
    +
  • Include the 'AuthorizeNet.php' file in your application. +
  • Use your desired API. +
+ +

Usage Examples:

+ See below for basic usage examples. View the tests/ folder for more examples of each API. + +
AuthorizeNetAIM.php Quick Usage Example
+<?php + require_once 'anet_php_sdk/AuthorizeNet.php'; + define("AUTHORIZENET_API_LOGIN_ID", "YOURLOGIN"); + define("AUTHORIZENET_TRANSACTION_KEY", "YOURKEY"); + define("AUTHORIZENET_SANDBOX", true); + $sale = new AuthorizeNetAIM; + $sale->amount = "5.99"; + $sale->card_num = '6011000000000012'; + $sale->exp_date = '04/15'; + $response = $sale->authorizeAndCapture(); + if ($response->approved) { + $transaction_id = $response->transaction_id; + } +?> + + +
AuthorizeNetAIM.php Advanced Usage Example
+<?php + require_once 'anet_php_sdk/AuthorizeNet.php'; + define("AUTHORIZENET_API_LOGIN_ID", "YOURLOGIN"); + define("AUTHORIZENET_TRANSACTION_KEY", "YOURKEY"); + define("AUTHORIZENET_SANDBOX", true); + $auth = new AuthorizeNetAIM; + $auth->amount = "45.00"; + + // Use eCheck: + $auth->setECheck( + '121042882', + '123456789123', + 'CHECKING', + 'Bank of Earth', + 'Jane Doe', + 'WEB' + ); + + // Set multiple line items: + $auth->addLineItem('item1', 'Golf tees', 'Blue tees', '2', '5.00', 'N'); + $auth->addLineItem('item2', 'Golf shirt', 'XL', '1', '40.00', 'N'); + + // Set Invoice Number: + $auth->invoice_num = time(); + + // Set a Merchant Defined Field: + $auth->setCustomField("entrance_source", "Search Engine"); + + // Authorize Only: + $response = $auth->authorizeOnly(); + + if ($response->approved) { + $auth_code = $response->transaction_id; + + // Now capture: + $capture = new AuthorizeNetAIM; + $capture_response = $capture->priorAuthCapture($auth_code); + + // Now void: + $void = new AuthorizeNetAIM; + $void_response = $void->void($capture_response->transaction_id); + } +?> + + +
AuthorizeNetARB.php Usage Example
+<?php + require_once 'anet_php_sdk/AuthorizeNet.php'; + define("AUTHORIZENET_API_LOGIN_ID", "YOURLOGIN"); + define("AUTHORIZENET_TRANSACTION_KEY", "YOURKEY"); + $subscription = new AuthorizeNet_Subscription; + $subscription->name = "PHP Monthly Magazine"; + $subscription->intervalLength = "1"; + $subscription->intervalUnit = "months"; + $subscription->startDate = "2011-03-12"; + $subscription->totalOccurrences = "12"; + $subscription->amount = "12.99"); + $subscription->creditCardCardNumber = "6011000000000012"; + $subscription->creditCardExpirationDate= "2018-10"; + $subscription->creditCardCardCode = "123"; + $subscription->billToFirstName = "Rasmus"; + $subscription->billToLastName = "Doe"; + + // Create the subscription. + $request = new AuthorizeNetARB; + $response = $request->createSubscription($subscription); + $subscription_id = $response->getSubscriptionId(); +?> + + +
AuthorizeNetCIM.php Usage Example
+<?php + require_once 'anet_php_sdk/AuthorizeNet.php'; + define("AUTHORIZENET_API_LOGIN_ID", "YOURLOGIN"); + define("AUTHORIZENET_TRANSACTION_KEY", "YOURKEY"); + $request = new AuthorizeNetCIM; + // Create new customer profile + $customerProfile = new AuthorizeNetCustomer; + $customerProfile->description = "Description of customer"; + $customerProfile->merchantCustomerId= time(); + $customerProfile->email = "test@domain.com"; + $response = $request->createCustomerProfile($customerProfile); + if ($response->isOk()) { + $customerProfileId = $response->getCustomerProfileId(); + } +?> + + +
AuthorizeNetSIM.php Usage Example
+<?php + require_once 'anet_php_sdk/AuthorizeNet.php'; + define("AUTHORIZENET_API_LOGIN_ID", "YOURLOGIN"); + define("AUTHORIZENET_MD5_SETTING", ""); + $message = new AuthorizeNetSIM; + if ($message->isAuthorizeNet()) { + $transactionId = $message->transaction_id; + } +?> + + +
AuthorizeNetDPM.php Usage Example
+<?php // Filename: direct_post.php + require_once 'anet_php_sdk/AuthorizeNet.php'; // The SDK + $url = "http://YOUR_DOMAIN.com/direct_post.php"; + $api_login_id = 'YOUR_API_LOGIN_ID'; + $transaction_key = 'YOUR_TRANSACTION_KEY'; + $md5_setting = 'YOUR_MD5_SETTING'; // Your MD5 Setting + $amount = "5.99"; + AuthorizeNetDPM::directPostDemo($url, $api_login_id, $transaction_key, $amount, $md5_setting); +?> + + +
AuthorizeNetCP.php Usage Example
+<?php + require_once 'anet_php_sdk/AuthorizeNet.php'; + define("AUTHORIZENET_API_LOGIN_ID", "YOURLOGIN"); + define("AUTHORIZENET_TRANSACTION_KEY", "YOURKEY"); + define("AUTHORIZENET_MD5_SETTING", ""); + $sale = new AuthorizeNetCP; + $sale->amount = '59.99'; + $sale->device_type = '4'; + $sale->setTrack1Data('%B4111111111111111^CARDUSER/JOHN^1803101000000000020000831000000?'); + $response = $sale->authorizeAndCapture(); + $trans_id = $response->transaction_id; +?> + + +
AuthorizeNetTD.php Usage Example
+<?php + require_once 'anet_php_sdk/AuthorizeNet.php'; + define("AUTHORIZENET_API_LOGIN_ID", "YOURLOGIN"); + define("AUTHORIZENET_TRANSACTION_KEY", "YOURKEY"); + $request = new AuthorizeNetTD; + $response = $request->getTransactionDetails("12345"); + echo $response->xml->transaction->transactionStatus; +?> + + +
+

Test Credit Card Numbers

+ + + + + + + +
American Express Test Card370000000000002
Discover Test Card6011000000000012
Visa Test Card4007000000027
Second Visa Test Card4012888818888
JCB3088000000000017
Diners Club/ Carte Blanche38000000000006
+Set the expiration date to anytime in the future. +
+ +

PHPDoc:

+ To autogenerate PHPDocs run + phpdoc -t phpdocs/ -f AuthorizeNet.php -d lib + +

Release Notes

+ + Version 1.1.8 +
    +
  • + Fixed an issue with validationMode in CIM::updateCustomerPaymentProfile. Note: The behavior where validationMode persisted across transactions using the same request object has been removed. This was unsupported behavior. +
  • +
  • + Removed an unused validationMode argument in CIM::updateCustomerProfile. The parameter used to be ignored, now its removed. +
  • +
  • + Enhanced the tests with checks for single digit months in expiration date support and SSL certificate validity. +
  • +
+ Version 1.1.7 +
    +
  • Added getBatchStatisticsRequest and getUnsettledTransactionListRequest support to the SDK.
  • +
+ Version 1.1.6 +
    +
  • Added the HTML version of the README to the distributed bundle. It was missing in version 1.1.5.
  • +
+ Version 1.1.5 +
    +
  • Added HTML version of README.
  • +
+ Version 1.1.4 +
    +
  • Updated the cert.pem bundle to include the new secure.authorize.net SSL certificate.
  • +
+ Version 1.1.3 +
    +
  • Added more documentation
  • +
  • Improved support for all Transaction Details API methods.
  • +
  • Added support for the Card Present API.
  • +
  • Added easier xpath support to XML Response class.
  • +
  • Added ability to use DPM sample app with production account.
  • +
+ Version 1.1.2 +
    +
  • Added getValidationResponses method to CIM Response for parsing the validation results when validating payment profiles.
  • +
  • Added support for UpdateSplitTenderGroup method to CIM request.
  • +
  • Bug fix. In CIM requests using validation mode the the validation mode element should have been added to the end of the request.
  • +
  • Bug fix. In AIM Response class where $response->account_number was returning the wrong value.
  • +
+
+ + \ No newline at end of file diff --git a/anet_php_sdk/doc/AIM.markdown b/anet_php_sdk/doc/AIM.markdown new file mode 100755 index 0000000..2ae1541 --- /dev/null +++ b/anet_php_sdk/doc/AIM.markdown @@ -0,0 +1,187 @@ +Advanced Integration Method +=========================== + +Basic Overview +-------------- + +The AuthorizeNetAIM class creates a request object for submitting transactions +to the AuthorizeNetAIM API. To use, create an instance of the class, set the fields +for your transaction, call the method you want to use (Authorize Only, Authorize & +Capture, etc.) and you'll receive an AuthorizeNetAIM response object providing easy access +to the results of the transaction. + +Including the SDK +----------------- + +require_once 'anet_php_sdk/AuthorizeNet.php'; + +Setting Merchant Credentials +---------------------------- +The easiest way to set credentials is to define constants which the SDK uses: +define("AUTHORIZENET_API_LOGIN_ID", "YOURLOGIN"); +define("AUTHORIZENET_TRANSACTION_KEY", "YOURKEY"); + +You can also set credentials manually per request like so: + +$sale = new AuthorizeNetAIM("YOUR_API_LOGIN_ID","YOUR_TRANSACTION_KEY"); + + +Setting the Transaction Post Location +------------------------------------- + +To post transactions to the live Authorize.Net gateway: +define("AUTHORIZENET_SANDBOX", false); + +To post transactions to the Authorize.Net test server: +define("AUTHORIZENET_SANDBOX", true); + +You can also set the location manually per request: +$sale->setSandbox(false); + + +Setting Fields +-------------- + +An Authorize.Net AIM request is simply a set of name/value pairs. The PHP SDK +allows you to set these fields in a few different ways depending on your +preference. + +Note: to make things easier on the developer, the "x_" prefix attached to each +field in the AIM API has been removed. Thus, instead of setting $sale->x_card_num, +set $sale->card_num instead. + +1.) By Setting Fields Directly: +$sale = new AuthorizeNetAIM; +$sale->amount = "1999.99"; +$sale->card_num = '6011000000000012'; +$sale->exp_date = '04/15'; +$response = $sale->authorizeAndCapture(); + +2.) By Setting Multiple Fields at Once: +$sale = new AuthorizeNetAIM; +$sale->setFields( + array( + 'amount' => rand(1, 1000), + 'card_num' => '6011000000000012', + 'exp_date' => '0415' + ) +); + +3.) By Setting Special Items + +To add line items or set custom fields use the respective functions: + +Line Items: +$sale->addLineItem( + 'item1', // Item Id + 'Golf tees', // Item Name + 'Blue tees', // Item Description + '2', // Item Quantity + '5.00', // Item Unit Price + 'N' // Item taxable + ); + +Custom Fields: +$sale->setCustomField("coupon_code", "SAVE2011"); + +4.) By Passing in Objects + +Each property will be copied from the object to the AIM request. + +$sale = new AuthorizeNetAIM; +$customer = (object)array(); +$customer->first_name = "Jane"; +$customer->last_name = "Smith"; +$customer->company = "Jane Smith Enterprises Inc."; +$customer->address = "20 Main Street"; +$customer->city = "San Francisco"; +$customer->state = "CA"; +$customer->zip = "94110"; +$customer->country = "US"; +$customer->phone = "415-555-5557"; +$customer->fax = "415-555-5556"; +$customer->email = "foo@example.com"; +$customer->cust_id = "55"; +$customer->customer_ip = "98.5.5.5"; +$sale->setFields($customer); + +Submitting Transactions +----------------------- +To submit a transaction call one of the 7 methods: + +-authorizeAndCapture() +-authorizeOnly() +-priorAuthCapture() +-void() +-captureOnly() +-credit() + +Each method has optional parameters which highlight the fields required by the +Authorize.Net API for that transaction type. + + +eCheck +------ +To submit an electronic check transaction you can set the required fields individually +or simply use the setECheck method: + +$sale = new AuthorizeNetAIM; +$sale->amount = "45.00"; +$sale->setECheck( + '121042882', // bank_aba_code + '123456789123', // bank_acct_num + 'CHECKING', // bank_acct_type + 'Bank of Earth', // bank_name + 'Jane Doe', // bank_acct_name + 'WEB' // echeck_type +); +$response = $sale->authorizeAndCapture(); + + +Partial Authorization Transactions +---------------------------------- +To enable partial authorization transactions set the partial_auth flag +to true: + +$sale->allow_partial_auth = true; + +You should receive a split tender id in the response if a partial auth +is made: + +$split_tender_id = $response->split_tender_id; + + +Itemized Order Information +-------------------------- +To add itemized order information use the addLineItem method: + +$auth->addLineItem( + 'item1', // Item Id + 'Golf tees', // Item Name + 'Blue tees', // Item Description + '2', // Item Quantity + '5.00', // Item Unit Price + 'N' // Item taxable + ); + + +Merchant Defined Fields +----------------------- +You can use the setCustomField method to set any custom merchant defined field(s): + +$sale->setCustomField("entrance_source", "Search Engine"); +$sale->setCustomField("coupon_code", "SAVE2011"); + + +Transaction Response +-------------------- +When you submit an AIM transaction you receive an AuthorizeNetAIM_Response +object in return. You can access each name/value pair in the response as +you would normally expect: + +$response = $sale->authorizeAndCapture(); +$response->response_code; +$response->response_subcode; +$response->response_reason_code; +$response->transaction_id; + diff --git a/anet_php_sdk/doc/ARB.markdown b/anet_php_sdk/doc/ARB.markdown new file mode 100755 index 0000000..1d4bb92 --- /dev/null +++ b/anet_php_sdk/doc/ARB.markdown @@ -0,0 +1,52 @@ +ARB API +======= + +Basic Overview +-------------- + +The AuthorizeNetARB class creates a request object for submitting transactions +to the AuthorizeNetARB API. + + +Creating/Updating Subscriptions +------------------------------- + +To create or update a subscription first create a subscription object: + +$subscription = new AuthorizeNet_Subscription; +$subscription->name = "Short subscription"; +$subscription->intervalLength = "1"; +$subscription->intervalUnit = "months"; +$subscription->startDate = "2011-03-12"; +$subscription->totalOccurrences = "14"; +$subscription->amount = rand(1,100); +$subscription->creditCardCardNumber = "6011000000000012"; +$subscription->creditCardExpirationDate = "2018-10"; +$subscription->creditCardCardCode = "123"; +$subscription->billToFirstName = "john"; +$subscription->billToLastName = "doe"; + +Then create an AuthorizeNetARB object and call the appropriate method +passing in your subscription object: + +$request = new AuthorizeNetARB; +$response = $request->createSubscription($subscription); + + or for updating a subscription: + +$response = $request->updateSubscription($subscription_id, $subscription); + +Getting Subscription Status +--------------------------- + +Create a new AuthorizeNetARB object and call the getSubscriptionStatus +method with the subscription_id you want the status of as the parameter: + +$status_request = new AuthorizeNetARB; +$status_response = $status_request->getSubscriptionStatus($subscription_id); + +Canceling a Subscription +------------------------ + +$cancellation = new AuthorizeNetARB; +$cancel_response = $cancellation->cancelSubscription($subscription_id); diff --git a/anet_php_sdk/doc/CIM.markdown b/anet_php_sdk/doc/CIM.markdown new file mode 100755 index 0000000..bbe8a3b --- /dev/null +++ b/anet_php_sdk/doc/CIM.markdown @@ -0,0 +1,249 @@ +CIM API +======= + +Basic Overview +-------------- + +The AuthorizeNetCIM class creates a request object for submitting transactions +to the Authorize.Net CIM API. + + +Creating a Customer Profile +--------------------------- + +To create a new cusomter profile, first create a new AuthorizeNetCustomer +object. + +$customerProfile = new AuthorizeNetCustomer; +$customerProfile->description = "Description of customer"; +$customerProfile->merchantCustomerId = 123; +$customerProfile->email = "user@domain.com"; + +You can then create an add payment profiles and addresses to this +customer object. + +// Add payment profile. +$paymentProfile = new AuthorizeNetPaymentProfile; +$paymentProfile->customerType = "individual"; +$paymentProfile->payment->creditCard->cardNumber = "4111111111111111"; +$paymentProfile->payment->creditCard->expirationDate = "2015-10"; +$customerProfile->paymentProfiles[] = $paymentProfile; + +// Add another payment profile. +$paymentProfile2 = new AuthorizeNetPaymentProfile; +$paymentProfile2->customerType = "business"; +$paymentProfile2->payment->bankAccount->accountType = "businessChecking"; +$paymentProfile2->payment->bankAccount->routingNumber = "121042882"; +$paymentProfile2->payment->bankAccount->accountNumber = "123456789123"; +$paymentProfile2->payment->bankAccount->nameOnAccount = "Jane Doe"; +$paymentProfile2->payment->bankAccount->echeckType = "WEB"; +$paymentProfile2->payment->bankAccount->bankName = "Pandora Bank"; +$customerProfile->paymentProfiles[] = $paymentProfile2; + + +// Add shipping address. +$address = new AuthorizeNetAddress; +$address->firstName = "john"; +$address->lastName = "Doe"; +$address->company = "John Doe Company"; +$address->address = "1 Main Street"; +$address->city = "Boston"; +$address->state = "MA"; +$address->zip = "02412"; +$address->country = "USA"; +$address->phoneNumber = "555-555-5555"; +$address->faxNumber = "555-555-5556"; +$customerProfile->shipToList[] = $address; + +// Add another shipping address. +$address2 = new AuthorizeNetAddress; +$address2->firstName = "jane"; +$address2->lastName = "Doe"; +$address2->address = "11 Main Street"; +$address2->city = "Boston"; +$address2->state = "MA"; +$address2->zip = "02412"; +$address2->country = "USA"; +$address2->phoneNumber = "555-512-5555"; +$address2->faxNumber = "555-523-5556"; +$customerProfile->shipToList[] = $address2; + + +Next, create an AuthorizeNetCIM object: + +$request = new AuthorizeNetCIM; + +Finally, call the createCustomerProfile method and pass in your +customer object: + +$response = $request->createCustomerProfile($customerProfile); + +The response object provides some helper methods for easy access to the +results of the transaction: + +$new_customer_id = $response->getCustomerProfileId(); + +The response object also stores the XML response as a SimpleXml element +which you can access like so: + +$new_customer_id = $response->xml->customerProfileId + +You can also run xpath queries against the result: + +$array = $response->xpath('customerProfileId'); +$new_customer_id = $array[0]; + + +Deleting a Customer Profile +--------------------------- + +To delete a customer profile first create a new AuthorizeNetCIM object: + +$request = new AuthorizeNetCIM; + +Then call the deleteCustomerProfile method: + +request->deleteCustomerProfile($customer_id); + + +Retrieving a Customer Profile +----------------------------- + +To retrieve a customer profile call the getCustomerProfile method: + +$response = $request->getCustomerProfile($customerProfileId); + + +Validation Mode +--------------- + +Validation mode allows you to generate a test transaction at the time you create a customer profile. In Test Mode, only field validation is performed. In Live Mode, a transaction is generated and submitted to the processor with the amount of $0.00 or $0.01. If successful, the transaction is immediately voided. + +To create a customer profile with Validation mode, simply pass in the +a value for the validation mode parameter on the createCustomerProfile method: + +$response = $request->createCustomerProfile($customerProfile, "testMode"); + +You can access the validation response for each payment profile via xpath, +the SimpleXML element or the getValidationResponses method: + +$validationResponses = $response->getValidationResponses(); + foreach ($validationResponses as $vr) { + echo $vr->approved; +} + + +Updating a Customer Profile +--------------------------- + +Call the updateCustomerProfile method with the customerProfileId and customerProfile +parameters: + +$response = $request->updateCustomerProfile($customerProfileId, $customerProfile); + + +Adding a Payment Profile +------------------------ + + +$paymentProfile = new AuthorizeNetPaymentProfile; +$paymentProfile->customerType = "individual"; +$paymentProfile->payment->creditCard->cardNumber = "4111111111111111"; +$paymentProfile->payment->creditCard->expirationDate = "2015-10"; +$response = $request->createCustomerPaymentProfile($customerProfileId, $paymentProfile); + + +Updating a Payment Profile +-------------------------- + +$paymentProfile->payment->creditCard->cardNumber = "4111111111111111"; +$paymentProfile->payment->creditCard->expirationDate = "2017-11"; +$response = $request->updateCustomerPaymentProfile($customerProfileId,$paymentProfileId, $paymentProfile); + +Adding a Shipping Address +------------------------- + + + +$address = new AuthorizeNetAddress; +$address->firstName = "john"; +$address->lastName = "Doe"; +$address->company = "John Doe Company"; +$address->address = "1 Main Street"; +$address->city = "Boston"; +$address->state = "MA"; +$address->zip = "02412"; +$address->country = "USA"; +$address->phoneNumber = "555-555-5555"; +$address->faxNumber = "555-555-5556"; +$response = $request->createCustomerShippingAddress($customerProfileId, $address); +$customerAddressId = $response->getCustomerAddressId(); + +Updating a Shipping Address +--------------------------- + +// Update shipping address. +$address->address = "2 First Street"; +$response = $request->updateCustomerShippingAddress($customerProfileId, $customerAddressId, $address); + + +Creating Transactions +--------------------- + +// Create Auth & Capture Transaction +$transaction = new AuthorizeNetTransaction; +$transaction->amount = "9.79"; +$transaction->customerProfileId = $customerProfileId; +$transaction->customerPaymentProfileId = $paymentProfileId; +$transaction->customerShippingAddressId = $customerAddressId; + +$lineItem = new AuthorizeNetLineItem; +$lineItem->itemId = "4"; +$lineItem->name = "Cookies"; +$lineItem->description = "Chocolate Chip"; +$lineItem->quantity = "4"; +$lineItem->unitPrice = "1.00"; +$lineItem->taxable = "true"; + +$lineItem2 = new AuthorizeNetLineItem; +$lineItem2->itemId = "4"; +$lineItem2->name = "Cookies"; +$lineItem2->description= "Peanut Butter"; +$lineItem2->quantity = "4"; +$lineItem2->unitPrice = "1.00"; +$lineItem2->taxable = "true"; + +$transaction->lineItems[] = $lineItem; +$transaction->lineItems[] = $lineItem2; + + +$response = $request->createCustomerProfileTransaction("AuthCapture", $transaction); +$transactionResponse = $response->getTransactionResponse(); +$transactionId = $transactionResponse->transaction_id; + + +Voiding a Transaction +--------------------- + +$transaction = new AuthorizeNetTransaction; +$transaction->transId = $transactionId; +$response = $request->createCustomerProfileTransaction("Void", $transaction); + + +Deleting a Shipping Address +--------------------------- + +$response = $request->deleteCustomerShippingAddress($customerProfileId, $customerAddressId); + + +Deleting a Payment Profile +-------------------------- + +$response = $request->deleteCustomerPaymentProfile($customerProfileId, $paymentProfileId); + + + +Getting Customer Profile IDs +---------------------------- + +$response = $request->getCustomerProfileIds(); \ No newline at end of file diff --git a/anet_php_sdk/doc/CP.markdown b/anet_php_sdk/doc/CP.markdown new file mode 100755 index 0000000..96ea161 --- /dev/null +++ b/anet_php_sdk/doc/CP.markdown @@ -0,0 +1,43 @@ +Card Present API +================ + +Basic Overview +-------------- + +The AuthorizeNetCP class creates a request object for submitting transactions +to the AuthorizeNetCP API. The AuthorizeNetCP class extends the AuthorizeNetAIM +class. See the AIM.markdown for help with the basics. This document contains +information regarding the special features of the AuthorizeNetCP class. + + +Merchant Credentials +-------------------- + +Please note that if you are using both the CNP and CP APIs your merchant +credentials will be different. + +Setting Track Data +------------------ + +To set Track 1 and/or Track 2 data, use the respective methods like so: + +$sale = new AuthorizeNetCP(CP_API_LOGIN_ID, CP_TRANSACTION_KEY); +$sale->setFields( + array( + 'amount' => rand(1, 1000), + 'device_type' => '4', + ) +); +$sale->setTrack1Data('%B4111111111111111^CARDUSER/JOHN^1803101000000000020000831000000?'); +$response = $sale->authorizeAndCapture(); + +$sale = new AuthorizeNetCP(CP_API_LOGIN_ID, CP_TRANSACTION_KEY); +$sale->setFields( + array( + 'amount' => rand(1, 1000), + 'device_type' => '4', + ) +); +$sale->setTrack2Data('4111111111111111=1803101000020000831?'); +$response = $sale->authorizeAndCapture(); + diff --git a/anet_php_sdk/doc/DPM.markdown b/anet_php_sdk/doc/DPM.markdown new file mode 100755 index 0000000..115cc9d --- /dev/null +++ b/anet_php_sdk/doc/DPM.markdown @@ -0,0 +1,24 @@ +Direct Post Method +================== + +Basic Overview +-------------- + +The Authorize.Net PHP SDK includes a class that demonstrates one way +of implementing the Direct Post Method. + +While it is not necessary to use the AuthorizeNetDPM class to implement +DPM, it may serve as a handy reference. + +The AuthorizeNetDPM class extends the AuthorizeNetSIM_Form class. +See the SIM.markdown for additional documentation. + +Relay Response Snippet +---------------------- + +The AuthorizeNetDPM class contains a getRelayResponseSnippet($redirect_url) +which generates a snippet of HTML that will redirect a user back to your +site after submitting a checkout form using DPM/SIM. + +Use this method(or just grab the html) if you want to create a checkout +experience where the user only interacts with pages on your site. \ No newline at end of file diff --git a/anet_php_sdk/doc/SIM.markdown b/anet_php_sdk/doc/SIM.markdown new file mode 100755 index 0000000..ee38e59 --- /dev/null +++ b/anet_php_sdk/doc/SIM.markdown @@ -0,0 +1,74 @@ +Server Integration Method +========================= + +Basic Overview +-------------- + +The Authorize.Net PHP SDK includes classes that can speed up implementing +a Server Integration Method solution. + + +Hosted Order/Receipt Page +------------------------- + +The AuthorizeNetSIM_Form class aims to make it easier to setup the hidden +fields necessary for creating a SIM experience. While it is not necessary +to use the AuthorizeNetSIM_Form class to implement SIM, it may be handy for +reference. + +The code below will generate a buy now button that leads to a hosted order page: + +
+ $amount, + 'x_fp_sequence' => $fp_sequence, + 'x_fp_hash' => $fingerprint, + 'x_fp_timestamp' => $time, + 'x_relay_response'=> "FALSE", + 'x_login' => $api_login_id, + ) +); +echo $sim->getHiddenFieldString();?> + +
+ +Fingerprint Generation +---------------------- + +To generate the fingerprint needed for a SIM transaction call the getFingerprint method: + +$fingerprint = AuthorizeNetSIM_Form::getFingerprint($api_login_id, $transaction_key, $amount, $fp_sequence, $fp_timestamp); + + +Relay Response +-------------- + +The PHP SDK includes a AuthorizeNetSIM class for handling a relay response from +Authorize.Net. + +To receive a relay response from Authorize.Net you can either configure the +url in the Merchant Interface or specify the url when submitting a transaction +with SIM using the "x_relay_url" field. + +When a transaction occurs, Authorize.Net will post the transaction details to +this url. You can then craete a page on your server at a url such as +http://yourdomain.com/response_handler.php and execute any logic you want +when a transaction occurs. The AuthorizeNetSIM class makes it easy to verify +the transaction came from Authorize.Net and parse the response: + +$response = new AuthorizeNetSIM; +if ($response->isAuthorizeNet()) +{ + if ($response->approved) + { + // Activate magazine subscription + magazine_subscription_activate($response->cust_id); + } +} diff --git a/anet_php_sdk/doc/SOAP.markdown b/anet_php_sdk/doc/SOAP.markdown new file mode 100755 index 0000000..a535f00 --- /dev/null +++ b/anet_php_sdk/doc/SOAP.markdown @@ -0,0 +1,10 @@ +SOAP +==== + +Basic Overview +-------------- + +The AuthorizeNetSOAP class provides a very basic wrapper to PHP's bundled +SoapClient class. The AuthorizeNetSOAP class merely contains the WSDL, +Sandbox, and Live Production server urls to make it easier to connect +to the Authorize.Net SOAP API. \ No newline at end of file diff --git a/anet_php_sdk/doc/TD.markdown b/anet_php_sdk/doc/TD.markdown new file mode 100755 index 0000000..c9a1bfb --- /dev/null +++ b/anet_php_sdk/doc/TD.markdown @@ -0,0 +1,55 @@ +Transaction Details API +======================= + +Basic Overview +-------------- + +The AuthorizeNetTD class creates a request object for submitting requests +to the Authorize.Net Transaction Details API. + +The AuthorizeNetTD class returns a response that uses PHP's bundled SimpleXML +class for accessing it's members. + +The AuthorizeNetTD response provides two ways to access response elements: + +1.) A SimpleXml object: + +$response->xml->transaction->payment->creditCard->cardType + +2.) Xpath: + +$batches = $response->xpath("batchList/batch"); + +3.) AuthorizeNet Objects (todo) + + + +Get Transaction Details +----------------------- + +$request = new AuthorizeNetTD; +$response = $request->getTransactionDetails($transId); +echo "Amount: {$response->xml->transaction->authAmount}"; + +Get Settled Batch List +---------------------- +$request = new AuthorizeNetTD; +$response = $request->getSettledBatchList(); +$batches = $response->xpath("batchList/batch"); +echo "Batch 1: {$batches[0]->batchId}"; + +Get Transaction List +-------------------- +$request = new AuthorizeNetTD; +$response = $request->getTransactionList($batch_id); +$transactions = $response->xpath("transactions/transaction") + +There are two additional helper methods in the PHP SDK which +will make multiple calls to retrieve a day's worth of +transactions or a month's worth of batches: + +getTransactionsForDay($month, $day, $year = false) +getSettledBatchListForMonth($month , $year) + +If you don't pass parameters into these methods they will default +to the current day/month. diff --git a/anet_php_sdk/lib/AuthorizeNetAIM.php b/anet_php_sdk/lib/AuthorizeNetAIM.php new file mode 100755 index 0000000..e7aae63 --- /dev/null +++ b/anet_php_sdk/lib/AuthorizeNetAIM.php @@ -0,0 +1,500 @@ + + * setFields( + * array( + * 'amount' => '4.99', + * 'card_num' => '411111111111111', + * 'exp_date' => '0515' + * ) + * ); + * $response = $sale->authorizeAndCapture(); + * if ($response->approved) { + * echo "Sale successful!"; } else { + * echo $response->error_message; + * } + * ?> + * + * + * Note: To send requests to the live gateway, either define this: + * define("AUTHORIZENET_SANDBOX", false); + * -- OR -- + * $sale = new AuthorizeNetAIM; + * $sale->setSandbox(false); + * + * @package AuthorizeNet + * @subpackage AuthorizeNetAIM + * @link http://www.authorize.net/support/AIM_guide.pdf AIM Guide + */ + + +/** + * Builds and sends an AuthorizeNet AIM Request. + * + * @package AuthorizeNet + * @subpackage AuthorizeNetAIM + */ +class AuthorizeNetAIM extends AuthorizeNetRequest +{ + + const LIVE_URL = 'https://secure.authorize.net/gateway/transact.dll'; + const SANDBOX_URL = 'https://test.authorize.net/gateway/transact.dll'; + + /** + * Holds all the x_* name/values that will be posted in the request. + * Default values are provided for best practice fields. + */ + protected $_x_post_fields = array( + "version" => "3.1", + "delim_char" => ",", + "delim_data" => "TRUE", + "relay_response" => "FALSE", + "encap_char" => "|", + ); + + /** + * Only used if merchant wants to send multiple line items about the charge. + */ + private $_additional_line_items = array(); + + /** + * Only used if merchant wants to send custom fields. + */ + private $_custom_fields = array(); + + /** + * Checks to make sure a field is actually in the API before setting. + * Set to false to skip this check. + */ + public $verify_x_fields = true; + + /** + * A list of all fields in the AIM API. + * Used to warn user if they try to set a field not offered in the API. + */ + private $_all_aim_fields = array("address","allow_partial_auth","amount", + "auth_code","authentication_indicator", "bank_aba_code","bank_acct_name", + "bank_acct_num","bank_acct_type","bank_check_number","bank_name", + "card_code","card_num","cardholder_authentication_value","city","company", + "country","cust_id","customer_ip","delim_char","delim_data","description", + "duplicate_window","duty","echeck_type","email","email_customer", + "encap_char","exp_date","fax","first_name","footer_email_receipt", + "freight","header_email_receipt","invoice_num","last_name","line_item", + "login","method","phone","po_num","recurring_billing","relay_response", + "ship_to_address","ship_to_city","ship_to_company","ship_to_country", + "ship_to_first_name","ship_to_last_name","ship_to_state","ship_to_zip", + "split_tender_id","state","tax","tax_exempt","test_request","tran_key", + "trans_id","type","version","zip" + ); + + /** + * Do an AUTH_CAPTURE transaction. + * + * Required "x_" fields: card_num, exp_date, amount + * + * @param string $amount The dollar amount to charge + * @param string $card_num The credit card number + * @param string $exp_date CC expiration date + * + * @return AuthorizeNetAIM_Response + */ + public function authorizeAndCapture($amount = false, $card_num = false, $exp_date = false) + { + ($amount ? $this->amount = $amount : null); + ($card_num ? $this->card_num = $card_num : null); + ($exp_date ? $this->exp_date = $exp_date : null); + $this->type = "AUTH_CAPTURE"; + return $this->_sendRequest(); + } + + /** + * Do a PRIOR_AUTH_CAPTURE transaction. + * + * Required "x_" field: trans_id(The transaction id of the prior auth, unless split + * tender, then set x_split_tender_id manually.) + * amount (only if lesser than original auth) + * + * @param string $trans_id Transaction id to charge + * @param string $amount Dollar amount to charge if lesser than auth + * + * @return AuthorizeNetAIM_Response + */ + public function priorAuthCapture($trans_id = false, $amount = false) + { + ($trans_id ? $this->trans_id = $trans_id : null); + ($amount ? $this->amount = $amount : null); + $this->type = "PRIOR_AUTH_CAPTURE"; + return $this->_sendRequest(); + } + + /** + * Do an AUTH_ONLY transaction. + * + * Required "x_" fields: card_num, exp_date, amount + * + * @param string $amount The dollar amount to charge + * @param string $card_num The credit card number + * @param string $exp_date CC expiration date + * + * @return AuthorizeNetAIM_Response + */ + public function authorizeOnly($amount = false, $card_num = false, $exp_date = false) + { + ($amount ? $this->amount = $amount : null); + ($card_num ? $this->card_num = $card_num : null); + ($exp_date ? $this->exp_date = $exp_date : null); + $this->type = "AUTH_ONLY"; + return $this->_sendRequest(); + } + + /** + * Do a VOID transaction. + * + * Required "x_" field: trans_id(The transaction id of the prior auth, unless split + * tender, then set x_split_tender_id manually.) + * + * @param string $trans_id Transaction id to void + * + * @return AuthorizeNetAIM_Response + */ + public function void($trans_id = false) + { + ($trans_id ? $this->trans_id = $trans_id : null); + $this->type = "VOID"; + return $this->_sendRequest(); + } + + /** + * Do a CAPTURE_ONLY transaction. + * + * Required "x_" fields: auth_code, amount, card_num , exp_date + * + * @param string $auth_code The auth code + * @param string $amount The dollar amount to charge + * @param string $card_num The last 4 of credit card number + * @param string $exp_date CC expiration date + * + * @return AuthorizeNetAIM_Response + */ + public function captureOnly($auth_code = false, $amount = false, $card_num = false, $exp_date = false) + { + ($auth_code ? $this->auth_code = $auth_code : null); + ($amount ? $this->amount = $amount : null); + ($card_num ? $this->card_num = $card_num : null); + ($exp_date ? $this->exp_date = $exp_date : null); + $this->type = "CAPTURE_ONLY"; + return $this->_sendRequest(); + } + + /** + * Do a CREDIT transaction. + * + * Required "x_" fields: trans_id, amount, card_num (just the last 4) + * + * @param string $trans_id Transaction id to credit + * @param string $amount The dollar amount to credit + * @param string $card_num The last 4 of credit card number + * + * @return AuthorizeNetAIM_Response + */ + public function credit($trans_id = false, $amount = false, $card_num = false) + { + ($trans_id ? $this->trans_id = $trans_id : null); + ($amount ? $this->amount = $amount : null); + ($card_num ? $this->card_num = $card_num : null); + $this->type = "CREDIT"; + return $this->_sendRequest(); + } + + /** + * Alternative syntax for setting x_ fields. + * + * Usage: $sale->method = "echeck"; + * + * @param string $name + * @param string $value + */ + public function __set($name, $value) + { + $this->setField($name, $value); + } + + /** + * Quickly set multiple fields. + * + * Note: The prefix x_ will be added to all fields. If you want to set a + * custom field without the x_ prefix, use setCustomField or setCustomFields. + * + * @param array $fields Takes an array or object. + */ + public function setFields($fields) + { + $array = (array)$fields; + foreach ($array as $key => $value) { + $this->setField($key, $value); + } + } + + /** + * Quickly set multiple custom fields. + * + * @param array $fields + */ + public function setCustomFields($fields) + { + $array = (array)$fields; + foreach ($array as $key => $value) { + $this->setCustomField($key, $value); + } + } + + /** + * Add a line item. + * + * @param string $item_id + * @param string $item_name + * @param string $item_description + * @param string $item_quantity + * @param string $item_unit_price + * @param string $item_taxable + */ + public function addLineItem($item_id, $item_name, $item_description, $item_quantity, $item_unit_price, $item_taxable) + { + $line_item = ""; + $delimiter = ""; + foreach (func_get_args() as $key => $value) { + $line_item .= $delimiter . $value; + $delimiter = "<|>"; + } + $this->_additional_line_items[] = $line_item; + } + + /** + * Use ECHECK as payment type. + */ + public function setECheck($bank_aba_code, $bank_acct_num, $bank_acct_type, $bank_name, $bank_acct_name, $echeck_type = 'WEB') + { + $this->setFields( + array( + 'method' => 'echeck', + 'bank_aba_code' => $bank_aba_code, + 'bank_acct_num' => $bank_acct_num, + 'bank_acct_type' => $bank_acct_type, + 'bank_name' => $bank_name, + 'bank_acct_name' => $bank_acct_type, + 'echeck_type' => $echeck_type, + ) + ); + } + + /** + * Set an individual name/value pair. This will append x_ to the name + * before posting. + * + * @param string $name + * @param string $value + */ + public function setField($name, $value) + { + if ($this->verify_x_fields) { + if (in_array($name, $this->_all_aim_fields)) { + $this->_x_post_fields[$name] = $value; + } else { + throw new AuthorizeNetException("Error: no field $name exists in the AIM API. + To set a custom field use setCustomField('field','value') instead."); + } + } else { + $this->_x_post_fields[$name] = $value; + } + } + + /** + * Set a custom field. Note: the x_ prefix will not be added to + * your custom field if you use this method. + * + * @param string $name + * @param string $value + */ + public function setCustomField($name, $value) + { + $this->_custom_fields[$name] = $value; + } + + /** + * Unset an x_ field. + * + * @param string $name Field to unset. + */ + public function unsetField($name) + { + unset($this->_x_post_fields[$name]); + } + + /** + * + * + * @param string $response + * + * @return AuthorizeNetAIM_Response + */ + protected function _handleResponse($response) + { + return new AuthorizeNetAIM_Response($response, $this->_x_post_fields['delim_char'], $this->_x_post_fields['encap_char'], $this->_custom_fields); + } + + /** + * @return string + */ + protected function _getPostUrl() + { + return ($this->_sandbox ? self::SANDBOX_URL : self::LIVE_URL); + } + + /** + * Converts the x_post_fields array into a string suitable for posting. + */ + protected function _setPostString() + { + $this->_x_post_fields['login'] = $this->_api_login; + $this->_x_post_fields['tran_key'] = $this->_transaction_key; + $this->_post_string = ""; + foreach ($this->_x_post_fields as $key => $value) { + $this->_post_string .= "x_$key=" . urlencode($value) . "&"; + } + // Add line items + foreach ($this->_additional_line_items as $key => $value) { + $this->_post_string .= "x_line_item=" . urlencode($value) . "&"; + } + // Add custom fields + foreach ($this->_custom_fields as $key => $value) { + $this->_post_string .= "$key=" . urlencode($value) . "&"; + } + $this->_post_string = rtrim($this->_post_string, "& "); + } +} + +/** + * Parses an AuthorizeNet AIM Response. + * + * @package AuthorizeNet + * @subpackage AuthorizeNetAIM + */ +class AuthorizeNetAIM_Response extends AuthorizeNetResponse +{ + private $_response_array = array(); // An array with the split response. + + /** + * Constructor. Parses the AuthorizeNet response string. + * + * @param string $response The response from the AuthNet server. + * @param string $delimiter The delimiter used (default is ",") + * @param string $encap_char The encap_char used (default is "|") + * @param array $custom_fields Any custom fields set in the request. + */ + public function __construct($response, $delimiter, $encap_char, $custom_fields) + { + if ($response) { + + // Split Array + $this->response = $response; + if ($encap_char) { + $this->_response_array = explode($encap_char.$delimiter.$encap_char, substr($response, 1, -1)); + } else { + $this->_response_array = explode($delimiter, $response); + } + + /** + * If AuthorizeNet doesn't return a delimited response. + */ + if (count($this->_response_array) < 10) { + $this->approved = false; + $this->error = true; + $this->error_message = "Unrecognized response from AuthorizeNet: $response"; + return; + } + + + + // Set all fields + $this->response_code = $this->_response_array[0]; + $this->response_subcode = $this->_response_array[1]; + $this->response_reason_code = $this->_response_array[2]; + $this->response_reason_text = $this->_response_array[3]; + $this->authorization_code = $this->_response_array[4]; + $this->avs_response = $this->_response_array[5]; + $this->transaction_id = $this->_response_array[6]; + $this->invoice_num = $this->_response_array[7]; + $this->description = $this->_response_array[8]; + $this->amount = $this->_response_array[9]; + $this->method = $this->_response_array[10]; + $this->transaction_type = $this->_response_array[11]; + $this->customer_id = $this->_response_array[12]; + $this->first_name = $this->_response_array[13]; + $this->last_name = $this->_response_array[14]; + $this->company = $this->_response_array[15]; + $this->address = $this->_response_array[16]; + $this->city = $this->_response_array[17]; + $this->state = $this->_response_array[18]; + $this->zip_code = $this->_response_array[19]; + $this->country = $this->_response_array[20]; + $this->phone = $this->_response_array[21]; + $this->fax = $this->_response_array[22]; + $this->email_address = $this->_response_array[23]; + $this->ship_to_first_name = $this->_response_array[24]; + $this->ship_to_last_name = $this->_response_array[25]; + $this->ship_to_company = $this->_response_array[26]; + $this->ship_to_address = $this->_response_array[27]; + $this->ship_to_city = $this->_response_array[28]; + $this->ship_to_state = $this->_response_array[29]; + $this->ship_to_zip_code = $this->_response_array[30]; + $this->ship_to_country = $this->_response_array[31]; + $this->tax = $this->_response_array[32]; + $this->duty = $this->_response_array[33]; + $this->freight = $this->_response_array[34]; + $this->tax_exempt = $this->_response_array[35]; + $this->purchase_order_number= $this->_response_array[36]; + $this->md5_hash = $this->_response_array[37]; + $this->card_code_response = $this->_response_array[38]; + $this->cavv_response = $this->_response_array[39]; + $this->account_number = $this->_response_array[50]; + $this->card_type = $this->_response_array[51]; + $this->split_tender_id = $this->_response_array[52]; + $this->requested_amount = $this->_response_array[53]; + $this->balance_on_card = $this->_response_array[54]; + + $this->approved = ($this->response_code == self::APPROVED); + $this->declined = ($this->response_code == self::DECLINED); + $this->error = ($this->response_code == self::ERROR); + $this->held = ($this->response_code == self::HELD); + + // Set custom fields + if ($count = count($custom_fields)) { + $custom_fields_response = array_slice($this->_response_array, -$count, $count); + $i = 0; + foreach ($custom_fields as $key => $value) { + $this->$key = $custom_fields_response[$i]; + $i++; + } + } + + if ($this->error) { + $this->error_message = "AuthorizeNet Error: + Response Code: ".$this->response_code." + Response Subcode: ".$this->response_subcode." + Response Reason Code: ".$this->response_reason_code." + Response Reason Text: ".$this->response_reason_text." + "; + } + } else { + $this->approved = false; + $this->error = true; + $this->error_message = "Error connecting to AuthorizeNet"; + } + } + +} diff --git a/anet_php_sdk/lib/AuthorizeNetARB.php b/anet_php_sdk/lib/AuthorizeNetARB.php new file mode 100755 index 0000000..8df101a --- /dev/null +++ b/anet_php_sdk/lib/AuthorizeNetARB.php @@ -0,0 +1,159 @@ +_request_payload = ($refId ? "$refId" : ""); + } + + /** + * Create an ARB subscription + * + * @param AuthorizeNet_Subscription $subscription + * + * @return AuthorizeNetARB_Response + */ + public function createSubscription(AuthorizeNet_Subscription $subscription) + { + $this->_request_type = "CreateSubscriptionRequest"; + $this->_request_payload .= $subscription->getXml(); + return $this->_sendRequest(); + } + + /** + * Update an ARB subscription + * + * @param int $subscriptionId + * @param AuthorizeNet_Subscription $subscription + * + * @return AuthorizeNetARB_Response + */ + public function updateSubscription($subscriptionId, AuthorizeNet_Subscription $subscription) + { + $this->_request_type = "UpdateSubscriptionRequest"; + $this->_request_payload .= "$subscriptionId"; + $this->_request_payload .= $subscription->getXml(); + return $this->_sendRequest(); + } + + /** + * Get status of a subscription + * + * @param int $subscriptionId + * + * @return AuthorizeNetARB_Response + */ + public function getSubscriptionStatus($subscriptionId) + { + $this->_request_type = "GetSubscriptionStatusRequest"; + $this->_request_payload .= "$subscriptionId"; + return $this->_sendRequest(); + } + + /** + * Cancel a subscription + * + * @param int $subscriptionId + * + * @return AuthorizeNetARB_Response + */ + public function cancelSubscription($subscriptionId) + { + $this->_request_type = "CancelSubscriptionRequest"; + $this->_request_payload .= "$subscriptionId"; + return $this->_sendRequest(); + } + + /** + * + * + * @param string $response + * + * @return AuthorizeNetARB_Response + */ + protected function _handleResponse($response) + { + return new AuthorizeNetARB_Response($response); + } + + /** + * @return string + */ + protected function _getPostUrl() + { + return ($this->_sandbox ? self::SANDBOX_URL : self::LIVE_URL); + } + + /** + * Prepare the XML document for posting. + */ + protected function _setPostString() + { + $this->_post_string =<< +_request_type} xmlns= "AnetApi/xml/v1/schema/AnetApiSchema.xsd"> + + {$this->_api_login} + {$this->_transaction_key} + + {$this->_request_payload} +_request_type}> +XML; + } + +} + + +/** + * A class to parse a response from the ARB XML API. + * + * @package AuthorizeNet + * @subpackage AuthorizeNetARB + */ +class AuthorizeNetARB_Response extends AuthorizeNetXMLResponse +{ + + /** + * @return int + */ + public function getSubscriptionId() + { + return $this->_getElementContents("subscriptionId"); + } + + /** + * @return string + */ + public function getSubscriptionStatus() + { + return $this->_getElementContents("Status"); + } + +} \ No newline at end of file diff --git a/anet_php_sdk/lib/AuthorizeNetCIM.php b/anet_php_sdk/lib/AuthorizeNetCIM.php new file mode 100755 index 0000000..eb44342 --- /dev/null +++ b/anet_php_sdk/lib/AuthorizeNetCIM.php @@ -0,0 +1,511 @@ +_refId = $refId; + } + + /** + * Create a customer profile. + * + * @param AuthorizeNetCustomer $customerProfile + * @param string $validationMode + * + * @return AuthorizeNetCIM_Response + */ + public function createCustomerProfile($customerProfile, $validationMode = "none") + { + $this->_validationMode = $validationMode; + $this->_constructXml("createCustomerProfileRequest"); + $profile = $this->_xml->addChild("profile"); + $this->_addObject($profile, $customerProfile); + return $this->_sendRequest(); + } + + /** + * Create a customer payment profile. + * + * @param int $customerProfileId + * @param AuthorizeNetPaymentProfile $paymentProfile + * @param string $validationMode + * + * @return AuthorizeNetCIM_Response + */ + public function createCustomerPaymentProfile($customerProfileId, $paymentProfile, $validationMode = "none") + { + $this->_validationMode = $validationMode; + $this->_constructXml("createCustomerPaymentProfileRequest"); + $this->_xml->addChild("customerProfileId", $customerProfileId); + $profile = $this->_xml->addChild("paymentProfile"); + $this->_addObject($profile, $paymentProfile); + return $this->_sendRequest(); + } + + /** + * Create a shipping address. + * + * @param int $customerProfileId + * @param AuthorizeNetAddress $shippingAddress + * + * @return AuthorizeNetCIM_Response + */ + public function createCustomerShippingAddress($customerProfileId, $shippingAddress) + { + $this->_constructXml("createCustomerShippingAddressRequest"); + $this->_xml->addChild("customerProfileId", $customerProfileId); + $address = $this->_xml->addChild("address"); + $this->_addObject($address, $shippingAddress); + return $this->_sendRequest(); + } + + /** + * Create a transaction. + * + * @param string $transactionType + * @param AuthorizeNetTransaction $transaction + * @param string $extraOptionsString + * + * @return AuthorizeNetCIM_Response + */ + public function createCustomerProfileTransaction($transactionType, $transaction, $extraOptionsString = "") + { + $this->_constructXml("createCustomerProfileTransactionRequest"); + $transactionParent = $this->_xml->addChild("transaction"); + $transactionChild = $transactionParent->addChild("profileTrans" . $transactionType); + $this->_addObject($transactionChild, $transaction); + $this->_extraOptions = $extraOptionsString; + return $this->_sendRequest(); + } + + /** + * Delete a customer profile. + * + * @param int $customerProfileId + * + * @return AuthorizeNetCIM_Response + */ + public function deleteCustomerProfile($customerProfileId) + { + $this->_constructXml("deleteCustomerProfileRequest"); + $this->_xml->addChild("customerProfileId", $customerProfileId); + return $this->_sendRequest(); + } + + /** + * Delete a payment profile. + * + * @param int $customerProfileId + * @param int $customerPaymentProfileId + * + * @return AuthorizeNetCIM_Response + */ + public function deleteCustomerPaymentProfile($customerProfileId, $customerPaymentProfileId) + { + $this->_constructXml("deleteCustomerPaymentProfileRequest"); + $this->_xml->addChild("customerProfileId", $customerProfileId); + $this->_xml->addChild("customerPaymentProfileId", $customerPaymentProfileId); + return $this->_sendRequest(); + } + + /** + * Delete a shipping address. + * + * @param int $customerProfileId + * @param int $customerAddressId + * + * @return AuthorizeNetCIM_Response + */ + public function deleteCustomerShippingAddress($customerProfileId, $customerAddressId) + { + $this->_constructXml("deleteCustomerShippingAddressRequest"); + $this->_xml->addChild("customerProfileId", $customerProfileId); + $this->_xml->addChild("customerAddressId", $customerAddressId); + return $this->_sendRequest(); + } + + /** + * Get all customer profile ids. + * + * @return AuthorizeNetCIM_Response + */ + public function getCustomerProfileIds() + { + $this->_constructXml("getCustomerProfileIdsRequest"); + return $this->_sendRequest(); + } + + /** + * Get a customer profile. + * + * @param int $customerProfileId + * + * @return AuthorizeNetCIM_Response + */ + public function getCustomerProfile($customerProfileId) + { + $this->_constructXml("getCustomerProfileRequest"); + $this->_xml->addChild("customerProfileId", $customerProfileId); + return $this->_sendRequest(); + } + + /** + * Get a payment profile. + * + * @param int $customerProfileId + * @param int $customerPaymentProfileId + * + * @return AuthorizeNetCIM_Response + */ + public function getCustomerPaymentProfile($customerProfileId, $customerPaymentProfileId) + { + $this->_constructXml("getCustomerPaymentProfileRequest"); + $this->_xml->addChild("customerProfileId", $customerProfileId); + $this->_xml->addChild("customerPaymentProfileId", $customerPaymentProfileId); + return $this->_sendRequest(); + } + + /** + * Get a shipping address. + * + * @param int $customerProfileId + * @param int $customerAddressId + * + * @return AuthorizeNetCIM_Response + */ + public function getCustomerShippingAddress($customerProfileId, $customerAddressId) + { + $this->_constructXml("getCustomerShippingAddressRequest"); + $this->_xml->addChild("customerProfileId", $customerProfileId); + $this->_xml->addChild("customerAddressId", $customerAddressId); + return $this->_sendRequest(); + } + + /** + * Update a profile. + * + * @param int $customerProfileId + * @param AuthorizeNetCustomer $customerProfile + * + * @return AuthorizeNetCIM_Response + */ + public function updateCustomerProfile($customerProfileId, $customerProfile) + { + $this->_constructXml("updateCustomerProfileRequest"); + $customerProfile->customerProfileId = $customerProfileId; + $profile = $this->_xml->addChild("profile"); + $this->_addObject($profile, $customerProfile); + return $this->_sendRequest(); + } + + /** + * Update a payment profile. + * + * @param int $customerProfileId + * @param int $customerPaymentProfileId + * @param AuthorizeNetPaymentProfile $paymentProfile + * @param string $validationMode + * + * @return AuthorizeNetCIM_Response + */ + public function updateCustomerPaymentProfile($customerProfileId, $customerPaymentProfileId, $paymentProfile, $validationMode = "none") + { + $this->_validationMode = $validationMode; + $this->_constructXml("updateCustomerPaymentProfileRequest"); + $this->_xml->addChild("customerProfileId", $customerProfileId); + $paymentProfile->customerPaymentProfileId = $customerPaymentProfileId; + $profile = $this->_xml->addChild("paymentProfile"); + $this->_addObject($profile, $paymentProfile); + return $this->_sendRequest(); + } + + /** + * Update a shipping address. + * + * @param int $customerProfileId + * @param int $customerShippingAddressId + * @param AuthorizeNetAddress $shippingAddress + * + * @return AuthorizeNetCIM_Response + */ + public function updateCustomerShippingAddress($customerProfileId, $customerShippingAddressId, $shippingAddress) + { + + $this->_constructXml("updateCustomerShippingAddressRequest"); + $this->_xml->addChild("customerProfileId", $customerProfileId); + $shippingAddress->customerAddressId = $customerShippingAddressId; + $sa = $this->_xml->addChild("address"); + $this->_addObject($sa, $shippingAddress); + return $this->_sendRequest(); + } + + /** + * Update the status of an existing order that contains multiple transactions with the same splitTenderId. + * + * @param int $splitTenderId + * @param string $splitTenderStatus + * + * @return AuthorizeNetCIM_Response + */ + public function updateSplitTenderGroup($splitTenderId, $splitTenderStatus) + { + $this->_constructXml("updateSplitTenderGroupRequest"); + $this->_xml->addChild("splitTenderId", $splitTenderId); + $this->_xml->addChild("splitTenderStatus", $splitTenderStatus); + return $this->_sendRequest(); + } + + /** + * Validate a customer payment profile. + * + * @param int $customerProfileId + * @param int $customerPaymentProfileId + * @param int $customerShippingAddressId + * @param int $cardCode + * @param string $validationMode + * + * @return AuthorizeNetCIM_Response + */ + public function validateCustomerPaymentProfile($customerProfileId, $customerPaymentProfileId, $customerShippingAddressId, $cardCode, $validationMode = "testMode") + { + $this->_validationMode = $validationMode; + $this->_constructXml("validateCustomerPaymentProfileRequest"); + $this->_xml->addChild("customerProfileId",$customerProfileId); + $this->_xml->addChild("customerPaymentProfileId",$customerPaymentProfileId); + $this->_xml->addChild("customerShippingAddressId",$customerShippingAddressId); + $this->_xml->addChild("cardCode",$cardCode); + return $this->_sendRequest(); + } + + /** + * @return string + */ + protected function _getPostUrl() + { + return ($this->_sandbox ? self::SANDBOX_URL : self::LIVE_URL); + } + + /** + * + * + * @param string $response + * + * @return AuthorizeNetCIM_Response + */ + protected function _handleResponse($response) + { + return new AuthorizeNetCIM_Response($response); + } + + /** + * Prepare the XML post string. + */ + protected function _setPostString() + { + ($this->_validationMode != "none" ? $this->_xml->addChild('validationMode',$this->_validationMode) : ""); + $this->_post_string = $this->_xml->asXML(); + + // Add extraOptions CDATA + if ($this->_extraOptions) { + $this->_xml->addChild("extraOptions"); + $this->_post_string = str_replace("",'_extraOptions . ']]>', $this->_xml->asXML()); + $this->_extraOptions = false; + } + // Blank out our validation mode, so that we don't include it in calls that + // don't use it. + $this->_validationMode = "none"; + } + + /** + * Start the SimpleXMLElement that will be posted. + * + * @param string $request_type The action to be performed. + */ + private function _constructXml($request_type) + { + $string = '<'.$request_type.' xmlns="AnetApi/xml/v1/schema/AnetApiSchema.xsd">'; + $this->_xml = @new SimpleXMLElement($string); + $merchant = $this->_xml->addChild('merchantAuthentication'); + $merchant->addChild('name',$this->_api_login); + $merchant->addChild('transactionKey',$this->_transaction_key); + ($this->_refId ? $this->_xml->addChild('refId',$this->_refId) : ""); + } + + /** + * Add an object to an SimpleXMLElement parent element. + * + * @param SimpleXMLElement $destination The parent element. + * @param Object $object An object, array or value. + */ + private function _addObject($destination, $object) + { + $array = (array)$object; + foreach ($array as $key => $value) { + if ($value && !is_object($value)) { + if (is_array($value) && count($value)) { + foreach ($value as $index => $item) { + $items = $destination->addChild($key); + $this->_addObject($items, $item); + } + } else { + $destination->addChild($key,$value); + } + } elseif (is_object($value) && self::_notEmpty($value)) { + $dest = $destination->addChild($key); + $this->_addObject($dest, $value); + } + } + } + + /** + * Checks whether an array or object contains any values. + * + * @param Object $object + * + * @return bool + */ + private static function _notEmpty($object) + { + $array = (array)$object; + foreach ($array as $key => $value) { + if ($value && !is_object($value)) { + return true; + } elseif (is_object($value)) { + if (self::_notEmpty($value)) { + return true; + } + } + } + return false; + } + +} + +/** + * A class to parse a response from the CIM XML API. + * + * @package AuthorizeNet + * @subpackage AuthorizeNetCIM + */ +class AuthorizeNetCIM_Response extends AuthorizeNetXMLResponse +{ + /** + * @return AuthorizeNetAIM_Response + */ + public function getTransactionResponse() + { + return new AuthorizeNetAIM_Response($this->_getElementContents("directResponse"), ",", "", array()); + } + + /** + * @return array Array of AuthorizeNetAIM_Response objects for each payment profile. + */ + public function getValidationResponses() + { + $responses = (array)$this->xml->validationDirectResponseList; + $return = array(); + foreach ((array)$responses["string"] as $response) { + $return[] = new AuthorizeNetAIM_Response($response, ",", "", array()); + } + return $return; + } + + /** + * @return AuthorizeNetAIM_Response + */ + public function getValidationResponse() + { + return new AuthorizeNetAIM_Response($this->_getElementContents("validationDirectResponse"), ",", "", array()); + } + + /** + * @return array + */ + public function getCustomerProfileIds() + { + $ids = (array)$this->xml->ids; + return $ids["numericString"]; + } + + /** + * @return array + */ + public function getCustomerPaymentProfileIds() + { + $ids = (array)$this->xml->customerPaymentProfileIdList; + return $ids["numericString"]; + } + + /** + * @return array + */ + public function getCustomerShippingAddressIds() + { + $ids = (array)$this->xml->customerShippingAddressIdList; + return $ids["numericString"]; + } + + /** + * @return string + */ + public function getCustomerAddressId() + { + return $this->_getElementContents("customerAddressId"); + } + + /** + * @return string + */ + public function getCustomerProfileId() + { + return $this->_getElementContents("customerProfileId"); + } + + /** + * @return string + */ + public function getPaymentProfileId() + { + return $this->_getElementContents("customerPaymentProfileId"); + } + +} diff --git a/anet_php_sdk/lib/AuthorizeNetCP.php b/anet_php_sdk/lib/AuthorizeNetCP.php new file mode 100755 index 0000000..1ff0a3d --- /dev/null +++ b/anet_php_sdk/lib/AuthorizeNetCP.php @@ -0,0 +1,222 @@ + "1.0", + "delim_char" => ",", + "encap_char" => "|", + "market_type" => "2", + "response_format" => "1", // 0 - XML, 1 - NVP + ); + + /** + * Device Types (x_device_type) + * 1 = Unknown + * 2 = Unattended Terminal + * 3 = Self Service Terminal + * 4 = Electronic Cash Register + * 5 = Personal Computer- Based Terminal + * 6 = AirPay + * 7 = Wireless POS + * 8 = Website + * 9 = Dial Terminal + * 10 = Virtual Terminal + */ + + /** + * Strip sentinels and set track1 field. + * + * @param string $track1data + */ + public function setTrack1Data($track1data) { + if (preg_match('/^%.*\?$/', $track1data)) { + $this->track1 = substr($track1data, 1, -1); + } else { + $this->track1 = $track1data; + } + } + + /** + * Strip sentinels and set track2 field. + * + * @param string $track2data + */ + public function setTrack2Data($track2data) { + if (preg_match('/^;.*\?$/', $track2data)) { + $this->track2 = substr($track2data, 1, -1); + } else { + $this->track2 = $track2data; + } + } + + /** + * + * + * @param string $response + * + * @return AuthorizeNetAIM_Response + */ + protected function _handleResponse($response) + { + return new AuthorizeNetCP_Response($response, $this->_x_post_fields['delim_char'], $this->_x_post_fields['encap_char'], $this->_custom_fields); + } + +} + + +/** + * Parses an AuthorizeNet Card Present Response. + * + * @package AuthorizeNet + * @subpackage AuthorizeNetCP + */ +class AuthorizeNetCP_Response extends AuthorizeNetResponse +{ + private $_response_array = array(); // An array with the split response. + + /** + * Constructor. Parses the AuthorizeNet response string. + * + * @param string $response The response from the AuthNet server. + * @param string $delimiter The delimiter used (default is ",") + * @param string $encap_char The encap_char used (default is "|") + * @param array $custom_fields Any custom fields set in the request. + */ + public function __construct($response, $delimiter, $encap_char, $custom_fields) + { + if ($response) { + + // If it's an XML response + if (substr($response, 0, 5) == "xml = @simplexml_load_string($response); + // Set all fields + $this->version = array_pop(array_slice(explode('"', $response), 1,1)); + $this->response_code = (string)$this->xml->ResponseCode; + + if ($this->response_code == 1) { + $this->response_reason_code = (string)$this->xml->Messages->Message->Code; + $this->response_reason_text = (string)$this->xml->Messages->Message->Description; + } else { + $this->response_reason_code = (string)$this->xml->Errors->Error->ErrorCode; + $this->response_reason_text = (string)$this->xml->Errors->Error->ErrorText; + } + + $this->authorization_code = (string)$this->xml->AuthCode; + $this->avs_code = (string)$this->xml->AVSResultCode; + $this->card_code_response = (string)$this->xml->CVVResultCode; + $this->transaction_id = (string)$this->xml->TransID; + $this->md5_hash = (string)$this->xml->TransHash; + $this->user_ref = (string)$this->xml->UserRef; + $this->card_num = (string)$this->xml->AccountNumber; + $this->card_type = (string)$this->xml->AccountType; + $this->test_mode = (string)$this->xml->TestMode; + $this->ref_trans_id = (string)$this->xml->RefTransID; + + + } else { // If it's an NVP response + + // Split Array + $this->response = $response; + if ($encap_char) { + $this->_response_array = explode($encap_char.$delimiter.$encap_char, substr($response, 1, -1)); + } else { + $this->_response_array = explode($delimiter, $response); + } + + /** + * If AuthorizeNet doesn't return a delimited response. + */ + if (count($this->_response_array) < 10) { + $this->approved = false; + $this->error = true; + $this->error_message = "Unrecognized response from AuthorizeNet: $response"; + return; + } + + + + // Set all fields + $this->version = $this->_response_array[0]; + $this->response_code = $this->_response_array[1]; + $this->response_reason_code = $this->_response_array[2]; + $this->response_reason_text = $this->_response_array[3]; + $this->authorization_code = $this->_response_array[4]; + $this->avs_code = $this->_response_array[5]; + $this->card_code_response = $this->_response_array[6]; + $this->transaction_id = $this->_response_array[7]; + $this->md5_hash = $this->_response_array[8]; + $this->user_ref = $this->_response_array[9]; + $this->card_num = $this->_response_array[20]; + $this->card_type = $this->_response_array[21]; + $this->split_tender_id = $this->_response_array[22]; + $this->requested_amount = $this->_response_array[23]; + $this->approved_amount = $this->_response_array[24]; + $this->card_balance = $this->_response_array[25]; + + + + } + $this->approved = ($this->response_code == self::APPROVED); + $this->declined = ($this->response_code == self::DECLINED); + $this->error = ($this->response_code == self::ERROR); + $this->held = ($this->response_code == self::HELD); + + + if ($this->error) { + $this->error_message = "AuthorizeNet Error: + Response Code: ".$this->response_code." + Response Reason Code: ".$this->response_reason_code." + Response Reason Text: ".$this->response_reason_text." + "; + } + + } else { + $this->approved = false; + $this->error = true; + $this->error_message = "Error connecting to AuthorizeNet"; + } + } + + /** + * Is the MD5 provided correct? + * + * @param string $api_login_id + * @param string $md5_setting + * @return bool + */ + public function isAuthorizeNet($api_login_id = false, $md5_setting = false) + { + $amount = ($this->amount ? $this->amount : '0.00'); + $api_login_id = ($api_login_id ? $api_login_id : AUTHORIZENET_API_LOGIN_ID); + $md5_setting = ($md5_setting ? $md5_setting : AUTHORIZENET_MD5_SETTING); + return ($this->md5_hash == strtoupper(md5($md5_setting . $api_login_id . $this->transaction_id . $amount))); + } + +} + diff --git a/anet_php_sdk/lib/AuthorizeNetDPM.php b/anet_php_sdk/lib/AuthorizeNetDPM.php new file mode 100755 index 0000000..5e693cc --- /dev/null +++ b/anet_php_sdk/lib/AuthorizeNetDPM.php @@ -0,0 +1,237 @@ +isAuthorizeNet()) + { + if ($response->approved) + { + // Do your processing here. + $redirect_url = $url . '?response_code=1&transaction_id=' . $response->transaction_id; + } + else + { + // Redirect to error page. + $redirect_url = $url . '?response_code='.$response->response_code . '&response_reason_text=' . $response->response_reason_text; + } + // Send the Javascript back to AuthorizeNet, which will redirect user back to your site. + echo AuthorizeNetDPM::getRelayResponseSnippet($redirect_url); + } + else + { + echo "Error -- not AuthorizeNet. Check your MD5 Setting."; + } + } + // Step 3: Show receipt page to customer. + elseif (!count($_POST) && count($_GET)) + { + if ($_GET['response_code'] == 1) + { + echo "Thank you for your purchase! Transaction id: " . htmlentities($_GET['transaction_id']); + } + else + { + echo "Sorry, an error occurred: " . htmlentities($_GET['response_reason_text']); + } + } + } + + /** + * A snippet to send to AuthorizeNet to redirect the user back to the + * merchant's server. Use this on your relay response page. + * + * @param string $redirect_url Where to redirect the user. + * + * @return string + */ + public static function getRelayResponseSnippet($redirect_url) + { + return " + "; + } + + /** + * Generate a sample form for use in a demo Direct Post implementation. + * + * @param string $amount Amount of the transaction. + * @param string $fp_sequence Sequential number(ie. Invoice #) + * @param string $relay_response_url The Relay Response URL + * @param string $api_login_id Your API Login ID + * @param string $transaction_key Your API Tran Key. + * @param bool $test_mode Use the sandbox? + * @param bool $prefill Prefill sample values(for test purposes). + * + * @return string + */ + public static function getCreditCardForm($amount, $fp_sequence, $relay_response_url, $api_login_id, $transaction_key, $test_mode = true, $prefill = true) + { + $time = time(); + $fp = self::getFingerprint($api_login_id, $transaction_key, $amount, $fp_sequence, $time); + $sim = new AuthorizeNetSIM_Form( + array( + 'x_amount' => $amount, + 'x_fp_sequence' => $fp_sequence, + 'x_fp_hash' => $fp, + 'x_fp_timestamp' => $time, + 'x_relay_response'=> "TRUE", + 'x_relay_url' => $relay_response_url, + 'x_login' => $api_login_id, + ) + ); + $hidden_fields = $sim->getHiddenFieldString(); + $post_url = ($test_mode ? self::SANDBOX_URL : self::LIVE_URL); + + $form = ' + +
+ '.$hidden_fields.' +
+
+ + +
+
+ + +
+
+ + +
+
+
+
+ + +
+
+ + +
+
+
+
+ + +
+
+ + +
+
+
+
+ + +
+
+ + +
+
+ + +
+
+ +
'; + return $form; + } + +} \ No newline at end of file diff --git a/anet_php_sdk/lib/AuthorizeNetSIM.php b/anet_php_sdk/lib/AuthorizeNetSIM.php new file mode 100755 index 0000000..60297e5 --- /dev/null +++ b/anet_php_sdk/lib/AuthorizeNetSIM.php @@ -0,0 +1,212 @@ +api_login_id = ($api_login_id ? $api_login_id : (defined('AUTHORIZENET_API_LOGIN_ID') ? AUTHORIZENET_API_LOGIN_ID : "")); + $this->md5_setting = ($md5_setting ? $md5_setting : (defined('AUTHORIZENET_MD5_SETTING') ? AUTHORIZENET_MD5_SETTING : "")); + $this->response = $_POST; + + // Set fields without x_ prefix + foreach ($_POST as $key => $value) { + $name = substr($key, 2); + $this->$name = $value; + } + + // Set some human readable fields + $map = array( + 'avs_response' => 'x_avs_code', + 'authorization_code' => 'x_auth_code', + 'transaction_id' => 'x_trans_id', + 'customer_id' => 'x_cust_id', + 'md5_hash' => 'x_MD5_Hash', + 'card_code_response' => 'x_cvv2_resp_code', + 'cavv_response' => 'x_cavv_response', + ); + foreach ($map as $key => $value) { + $this->$key = (isset($_POST[$value]) ? $_POST[$value] : ""); + } + + $this->approved = ($this->response_code == self::APPROVED); + $this->declined = ($this->response_code == self::DECLINED); + $this->error = ($this->response_code == self::ERROR); + $this->held = ($this->response_code == self::HELD); + } + + /** + * Verify the request is AuthorizeNet. + * + * @return bool + */ + public function isAuthorizeNet() + { + return count($_POST) && $this->md5_hash && ($this->generateHash() == $this->md5_hash); + } + + /** + * Generates an Md5 hash to compare against Authorize.Net's. + * + * @return string Hash + */ + public function generateHash() + { + $amount = ($this->amount ? $this->amount : "0.00"); + return strtoupper(md5($this->md5_setting . $this->api_login_id . $this->transaction_id . $amount)); + } + +} + +/** + * A helper class for using hosted order page. + * + * @package AuthorizeNet + * @subpackage AuthorizeNetSIM + */ +class AuthorizeNetSIM_Form +{ + public $x_address; + public $x_amount; + public $x_background_url; + public $x_card_num; + public $x_city; + public $x_color_background; + public $x_color_link; + public $x_color_text; + public $x_company; + public $x_country; + public $x_cust_id; + public $x_customer_ip; + public $x_description; + public $x_delim_data; + public $x_duplicate_window; + public $x_duty; + public $x_email; + public $x_email_customer; + public $x_fax; + public $x_first_name; + public $x_footer_email_receipt; + public $x_footer_html_payment_form; + public $x_footer_html_receipt; + public $x_fp_hash; + public $x_fp_sequence; + public $x_fp_timestamp; + public $x_freight; + public $x_header_email_receipt; + public $x_header_html_payment_form; + public $x_header_html_receipt; + public $x_invoice_num; + public $x_last_name; + public $x_line_item; + public $x_login; + public $x_logo_url; + public $x_method; + public $x_phone; + public $x_po_num; + public $x_receipt_link_method; + public $x_receipt_link_text; + public $x_receipt_link_url; + public $x_recurring_billing; + public $x_relay_response; + public $x_relay_url; + public $x_rename; + public $x_ship_to_address; + public $x_ship_to_company; + public $x_ship_to_country; + public $x_ship_to_city; + public $x_ship_to_first_name; + public $x_ship_to_last_name; + public $x_ship_to_state; + public $x_ship_to_zip; + public $x_show_form; + public $x_state; + public $x_tax; + public $x_tax_exempt; + public $x_test_request; + public $x_trans_id; + public $x_type; + public $x_version; + public $x_zip; + + /** + * Constructor + * + * @param array $fields Fields to set. + */ + public function __construct($fields = false) + { + // Set some best practice fields + $this->x_relay_response = "FALSE"; + $this->x_version = "3.1"; + $this->x_delim_char = ","; + $this->x_delim_data = "TRUE"; + + if ($fields) { + foreach ($fields as $key => $value) { + $this->$key = $value; + } + } + } + + /** + * Get a string of HTML hidden fields for use in a form. + * + * @return string + */ + public function getHiddenFieldString() + { + $array = (array)$this; + $string = ""; + foreach ($array as $key => $value) { + if ($value) { + $string .= ''; + } + } + return $string; + } + + /** + * Generates a fingerprint needed for a hosted order form or DPM. + * + * @param string $api_login_id Login ID. + * @param string $transaction_key API key. + * @param string $amount Amount of transaction. + * @param string $fp_sequence An invoice number or random number. + * @param string $fp_timestamp Timestamp. + * + * @return string The fingerprint. + */ + public static function getFingerprint($api_login_id, $transaction_key, $amount, $fp_sequence, $fp_timestamp) + { + $api_login_id = ($api_login_id ? $api_login_id : (defined('AUTHORIZENET_API_LOGIN_ID') ? AUTHORIZENET_API_LOGIN_ID : "")); + $transaction_key = ($transaction_key ? $transaction_key : (defined('AUTHORIZENET_TRANSACTION_KEY') ? AUTHORIZENET_TRANSACTION_KEY : "")); + if (function_exists('hash_hmac')) { + return hash_hmac("md5", $api_login_id . "^" . $fp_sequence . "^" . $fp_timestamp . "^" . $amount . "^", $transaction_key); + } + return bin2hex(mhash(MHASH_MD5, $api_login_id . "^" . $fp_sequence . "^" . $fp_timestamp . "^" . $amount . "^", $transaction_key)); + } + +} \ No newline at end of file diff --git a/anet_php_sdk/lib/AuthorizeNetSOAP.php b/anet_php_sdk/lib/AuthorizeNetSOAP.php new file mode 100755 index 0000000..36c30a4 --- /dev/null +++ b/anet_php_sdk/lib/AuthorizeNetSOAP.php @@ -0,0 +1,99 @@ +__setLocation(self::SANDBOX_URL); + } + + /** + * Switch between the sandbox or production gateway. + * + * @param bool + */ + public function setSandbox($bool) + { + $this->__setLocation(($bool ? self::SANDBOX_URL : self::LIVE_URL)); + } + + /** + * Get all types as PHP Code. + * @return string + */ + public function getSoapTypes() + { + $string = ""; + $types = $this->__getTypes(); + foreach ($types as $type) { + if (preg_match("/struct /",$type)) { + $type = preg_replace("/struct /","class ",$type); + $type = preg_replace("/ (\w+) (\w+);/"," // $1\n public \$$2;",$type); + $string .= $type ."\n"; + } + } + return $string; + } + + /** + * Get all methods as PHP Code. + * @return string + */ + public function getSoapMethods() + { + $string = ""; + $functions = array(); + $methods = $this->__getFunctions(); + foreach ($methods as $index => $method) { + $sig = explode(" ", $method, 2); + if (!isset($functions[$sig[1]])) { + $string .= " /**\n * @return {$sig[0]}\n */\n public function {$sig[1]} {}\n\n"; + $functions[$sig[1]] = true; + } + } + return $string; + } + + /** + * Create a file from the WSDL for reference. + */ + public function saveSoapDocumentation($path) + { + $string = "getSoapMethods() . "\n}\n\n" . $this->getSoapTypes() ."\n\n ?>"; + return file_put_contents($path, $string); + } + + + +} \ No newline at end of file diff --git a/anet_php_sdk/lib/AuthorizeNetTD.php b/anet_php_sdk/lib/AuthorizeNetTD.php new file mode 100755 index 0000000..e98a6cd --- /dev/null +++ b/anet_php_sdk/lib/AuthorizeNetTD.php @@ -0,0 +1,209 @@ +_constructXml("getSettledBatchListRequest"); + ($includeStatistics ? + $this->_xml->addChild("includeStatistics", $includeStatistics) : null); + ($firstSettlementDate ? + $this->_xml->addChild("firstSettlementDate", $firstSettlementDate . $utc) : null); + ($lastSettlementDate ? + $this->_xml->addChild("lastSettlementDate", $lastSettlementDate . $utc) : null); + return $this->_sendRequest(); + } + + /** + * Return all settled batches for a certain month. + * + * @param int $month + * @param int $year + * + * @return AuthorizeNetTD_Response + */ + public function getSettledBatchListForMonth($month = false, $year = false) + { + $month = ($month ? $month : date('m')); + $year = ($year ? $year : date('Y')); + $firstSettlementDate = substr(date('c',mktime(0, 0, 0, $month, 1, $year)),0,-6); + $lastSettlementDate = substr(date('c',mktime(0, 0, 0, $month+1, 0, $year)),0,-6); + return $this->getSettledBatchList(true, $firstSettlementDate, $lastSettlementDate); + } + + /** + * This function returns limited transaction details for a specified batch ID + * + * @param int $batchId + * + * @return AuthorizeNetTD_Response + */ + public function getTransactionList($batchId) + { + $this->_constructXml("getTransactionListRequest"); + $this->_xml->addChild("batchId", $batchId); + return $this->_sendRequest(); + } + + /** + * Return all transactions for a certain day. + * + * @param int $month + * @param int $day + * @param int $year + * + * @return array Array of SimpleXMLElments + */ + public function getTransactionsForDay($month = false, $day = false, $year = false) + { + $transactions = array(); + $month = ($month ? $month : date('m')); + $day = ($day ? $day : date('d')); + $year = ($year ? $year : date('Y')); + $firstSettlementDate = substr(date('c',mktime(0, 0, 0, (int)$month, (int)$day, (int)$year)),0,-6); + $lastSettlementDate = substr(date('c',mktime(0, 0, 0, (int)$month, (int)$day, (int)$year)),0,-6); + $response = $this->getSettledBatchList(true, $firstSettlementDate, $lastSettlementDate); + $batches = $response->xpath("batchList/batch"); + foreach ($batches as $batch) { + $batch_id = (string)$batch->batchId; + $request = new AuthorizeNetTD; + $tran_list = $request->getTransactionList($batch_id); + $transactions = array_merge($transactions, $tran_list->xpath("transactions/transaction")); + } + return $transactions; + } + + /** + * This function returns full transaction details for a specified transaction ID. + * + * @param int $transId + * + * @return AuthorizeNetTD_Response + */ + public function getTransactionDetails($transId) + { + $this->_constructXml("getTransactionDetailsRequest"); + $this->_xml->addChild("transId", $transId); + return $this->_sendRequest(); + } + + /** + * This function returns statistics about the settled batch specified by $batchId. + * + * @param int $batchId + * + * @return AuthorizeNetTD_Response + */ + public function getBatchStatistics($batchId) + { + $this->_constructXml("getBatchStatisticsRequest"); + $this->_xml->addChild("batchId", $batchId); + return $this->_sendRequest(); + } + + /** + * This function returns the last 1000 unsettled transactions. + * + * + * @return AuthorizeNetTD_Response + */ + public function getUnsettledTransactionList() + { + $this->_constructXml("getUnsettledTransactionListRequest"); + return $this->_sendRequest(); + } + + /** + * @return string + */ + protected function _getPostUrl() + { + return ($this->_sandbox ? self::SANDBOX_URL : self::LIVE_URL); + } + + /** + * + * + * @param string $response + * + * @return AuthorizeNetTransactionDetails_Response + */ + protected function _handleResponse($response) + { + return new AuthorizeNetTD_Response($response); + } + + /** + * Prepare the XML post string. + */ + protected function _setPostString() + { + $this->_post_string = $this->_xml->asXML(); + + } + + /** + * Start the SimpleXMLElement that will be posted. + * + * @param string $request_type The action to be performed. + */ + private function _constructXml($request_type) + { + $string = '<'.$request_type.' xmlns="AnetApi/xml/v1/schema/AnetApiSchema.xsd">'; + $this->_xml = @new SimpleXMLElement($string); + $merchant = $this->_xml->addChild('merchantAuthentication'); + $merchant->addChild('name',$this->_api_login); + $merchant->addChild('transactionKey',$this->_transaction_key); + } + +} + +/** + * A class to parse a response from the Transaction Details XML API. + * + * @package AuthorizeNet + * @subpackage AuthorizeNetTD + */ +class AuthorizeNetTD_Response extends AuthorizeNetXMLResponse +{ + + +} diff --git a/anet_php_sdk/lib/shared/AuthorizeNetRequest.php b/anet_php_sdk/lib/shared/AuthorizeNetRequest.php new file mode 100755 index 0000000..76d9dbf --- /dev/null +++ b/anet_php_sdk/lib/shared/AuthorizeNetRequest.php @@ -0,0 +1,120 @@ +_api_login = ($api_login_id ? $api_login_id : (defined('AUTHORIZENET_API_LOGIN_ID') ? AUTHORIZENET_API_LOGIN_ID : "9q52ab6YPsL")); + $this->_transaction_key = ($transaction_key ? $transaction_key : (defined('AUTHORIZENET_TRANSACTION_KEY') ? AUTHORIZENET_TRANSACTION_KEY : "728872Hz3aZ7Jqy9")); + $this->_sandbox = (defined('AUTHORIZENET_SANDBOX') ? AUTHORIZENET_SANDBOX : false); + $this->_log_file = (defined('AUTHORIZENET_LOG_FILE') ? AUTHORIZENET_LOG_FILE : true); + } + + /** + * Alter the gateway url. + * + * @param bool $bool Use the Sandbox. + */ + public function setSandbox($bool) + { + $this->_sandbox = $bool; + } + + /** + * Set a log file. + * + * @param string $filepath Path to log file. + */ + public function setLogFile($filepath) + { + $this->_log_file = $filepath; + } + + /** + * Return the post string. + * + * @return string + */ + public function getPostString() + { + return $this->_post_string; + } + + /** + * Posts the request to AuthorizeNet & returns response. + * + * @return AuthorizeNetARB_Response The response. + */ + protected function _sendRequest() + { + $this->_setPostString(); + $post_url = $this->_getPostUrl(); + $curl_request = curl_init($post_url); + curl_setopt($curl_request, CURLOPT_POSTFIELDS, $this->_post_string); + curl_setopt($curl_request, CURLOPT_HEADER, 0); + curl_setopt($curl_request, CURLOPT_TIMEOUT, 45); + curl_setopt($curl_request, CURLOPT_RETURNTRANSFER, 1); + curl_setopt($curl_request, CURLOPT_SSL_VERIFYHOST, 2); + if ($this->VERIFY_PEER) { + curl_setopt($curl_request, CURLOPT_CAINFO, dirname(dirname(__FILE__)) . '/ssl/cert.pem'); + } else { + curl_setopt($curl_request, CURLOPT_SSL_VERIFYPEER, false); + } + + if (preg_match('/xml/',$post_url)) { + curl_setopt($curl_request, CURLOPT_HTTPHEADER, Array("Content-Type: text/xml")); + } + + $response = curl_exec($curl_request); + + if ($this->_log_file) { + + if ($curl_error = curl_error($curl_request)) { + file_put_contents($this->_log_file, "----CURL ERROR----\n$curl_error\n\n", FILE_APPEND); + } + // Do not log requests that could contain CC info. + // file_put_contents($this->_log_file, "----Request----\n{$this->_post_string}\n", FILE_APPEND); + + file_put_contents($this->_log_file, "----Response----\n$response\n\n", FILE_APPEND); + } + curl_close($curl_request); + + return $this->_handleResponse($response); + } + +} diff --git a/anet_php_sdk/lib/shared/AuthorizeNetResponse.php b/anet_php_sdk/lib/shared/AuthorizeNetResponse.php new file mode 100755 index 0000000..969b60a --- /dev/null +++ b/anet_php_sdk/lib/shared/AuthorizeNetResponse.php @@ -0,0 +1,75 @@ +billTo = new AuthorizeNetAddress; + $this->payment = new AuthorizeNetPayment; + } + +} + +/** + * A class that contains all fields for a CIM Payment Type. + * + * @package AuthorizeNet + * @subpackage AuthorizeNetCIM + */ +class AuthorizeNetPayment +{ + public $creditCard; + public $bankAccount; + + public function __construct() + { + $this->creditCard = new AuthorizeNetCreditCard; + $this->bankAccount = new AuthorizeNetBankAccount; + } +} + +/** + * A class that contains all fields for a CIM Transaction. + * + * @package AuthorizeNet + * @subpackage AuthorizeNetCIM + */ +class AuthorizeNetTransaction +{ + public $amount; + public $tax; + public $shipping; + public $duty; + public $lineItems = array(); + public $customerProfileId; + public $customerPaymentProfileId; + public $customerShippingAddressId; + public $creditCardNumberMasked; + public $bankRoutingNumberMasked; + public $bankAccountNumberMasked; + public $order; + public $taxExempt; + public $recurringBilling; + public $cardCode; + public $splitTenderId; + public $approvalCode; + public $transId; + + public function __construct() + { + $this->tax = (object)array(); + $this->tax->amount = ""; + $this->tax->name = ""; + $this->tax->description = ""; + + $this->shipping = (object)array(); + $this->shipping->amount = ""; + $this->shipping->name = ""; + $this->shipping->description = ""; + + $this->duty = (object)array(); + $this->duty->amount = ""; + $this->duty->name = ""; + $this->duty->description = ""; + + // line items + + $this->order = (object)array(); + $this->order->invoiceNumber = ""; + $this->order->description = ""; + $this->order->purchaseOrderNumber = ""; + } + +} + +/** + * A class that contains all fields for a CIM Transaction Line Item. + * + * @package AuthorizeNet + * @subpackage AuthorizeNetCIM + */ +class AuthorizeNetLineItem +{ + public $itemId; + public $name; + public $description; + public $quantity; + public $unitPrice; + public $taxable; + +} + +/** + * A class that contains all fields for a CIM Credit Card. + * + * @package AuthorizeNet + * @subpackage AuthorizeNetCIM + */ +class AuthorizeNetCreditCard +{ + public $cardNumber; + public $expirationDate; + public $cardCode; +} + +/** + * A class that contains all fields for a CIM Bank Account. + * + * @package AuthorizeNet + * @subpackage AuthorizeNetCIM + */ +class AuthorizeNetBankAccount +{ + public $accountType; + public $routingNumber; + public $accountNumber; + public $nameOnAccount; + public $echeckType; + public $bankName; +} + +/** + * A class that contains all fields for an AuthorizeNet ARB Subscription. + * + * @package AuthorizeNet + * @subpackage AuthorizeNetARB + */ +class AuthorizeNet_Subscription +{ + + public $name; + public $intervalLength; + public $intervalUnit; + public $startDate; + public $totalOccurrences; + public $trialOccurrences; + public $amount; + public $trialAmount; + public $creditCardCardNumber; + public $creditCardExpirationDate; + public $creditCardCardCode; + public $bankAccountAccountType; + public $bankAccountRoutingNumber; + public $bankAccountAccountNumber; + public $bankAccountNameOnAccount; + public $bankAccountEcheckType; + public $bankAccountBankName; + public $orderInvoiceNumber; + public $orderDescription; + public $customerId; + public $customerEmail; + public $customerPhoneNumber; + public $customerFaxNumber; + public $billToFirstName; + public $billToLastName; + public $billToCompany; + public $billToAddress; + public $billToCity; + public $billToState; + public $billToZip; + public $billToCountry; + public $shipToFirstName; + public $shipToLastName; + public $shipToCompany; + public $shipToAddress; + public $shipToCity; + public $shipToState; + public $shipToZip; + public $shipToCountry; + + public function getXml() + { + $xml = " + {$this->name} + + + {$this->intervalLength} + {$this->intervalUnit} + + {$this->startDate} + {$this->totalOccurrences} + {$this->trialOccurrences} + + {$this->amount} + {$this->trialAmount} + + + {$this->creditCardCardNumber} + {$this->creditCardExpirationDate} + {$this->creditCardCardCode} + + + {$this->bankAccountAccountType} + {$this->bankAccountRoutingNumber} + {$this->bankAccountAccountNumber} + {$this->bankAccountNameOnAccount} + {$this->bankAccountEcheckType} + {$this->bankAccountBankName} + + + + {$this->orderInvoiceNumber} + {$this->orderDescription} + + + {$this->customerId} + {$this->customerEmail} + {$this->customerPhoneNumber} + {$this->customerFaxNumber} + + + {$this->billToFirstName} + {$this->billToLastName} + {$this->billToCompany} +
{$this->billToAddress}
+ {$this->billToCity} + {$this->billToState} + {$this->billToZip} + {$this->billToCountry} +
+ + {$this->shipToFirstName} + {$this->shipToLastName} + {$this->shipToCompany} +
{$this->shipToAddress}
+ {$this->shipToCity} + {$this->shipToState} + {$this->shipToZip} + {$this->shipToCountry} +
+
"; + + $xml_clean = ""; + // Remove any blank child elements + foreach (preg_split("/(\r?\n)/", $xml) as $key => $line) { + if (!preg_match('/><\//', $line)) { + $xml_clean .= $line . "\n"; + } + } + + // Remove any blank parent elements + $element_removed = 1; + // Recursively repeat if a change is made + while ($element_removed) { + $element_removed = 0; + if (preg_match('/<[a-z]+>[\r?\n]+\s*<\/[a-z]+>/i', $xml_clean)) { + $xml_clean = preg_replace('/<[a-z]+>[\r?\n]+\s*<\/[a-z]+>/i', '', $xml_clean); + $element_removed = 1; + } + } + + // Remove any blank lines + // $xml_clean = preg_replace('/\r\n[\s]+\r\n/','',$xml_clean); + return $xml_clean; + } +} + diff --git a/anet_php_sdk/lib/shared/AuthorizeNetXMLResponse.php b/anet_php_sdk/lib/shared/AuthorizeNetXMLResponse.php new file mode 100755 index 0000000..ede7854 --- /dev/null +++ b/anet_php_sdk/lib/shared/AuthorizeNetXMLResponse.php @@ -0,0 +1,128 @@ +response = $response; + if ($response) { + $this->xml = @simplexml_load_string($response); + + // Remove namespaces for use with XPath. + $this->xpath_xml = @simplexml_load_string(preg_replace('/ xmlns:xsi[^>]+/','',$response)); + } + } + + /** + * Was the transaction successful? + * + * @return bool + */ + public function isOk() + { + return ($this->getResultCode() == "Ok"); + } + + /** + * Run an xpath query on the cleaned XML response + * + * @param string $path + * @return array Returns an array of SimpleXMLElement objects or FALSE in case of an error. + */ + public function xpath($path) + { + return $this->xpath_xml->xpath($path); + } + + /** + * Was there an error? + * + * @return bool + */ + public function isError() + { + return ($this->getResultCode() == "Error"); + } + + /** + * @return string + */ + public function getErrorMessage() + { + return "Error: {$this->getResultCode()} + Message: {$this->getMessageText()} + {$this->getMessageCode()}"; + } + + /** + * @return string + */ + public function getRefID() + { + return $this->_getElementContents("refId"); + } + + /** + * @return string + */ + public function getResultCode() + { + return $this->_getElementContents("resultCode"); + } + + /** + * @return string + */ + public function getMessageCode() + { + return $this->_getElementContents("code"); + } + + /** + * @return string + */ + public function getMessageText() + { + return $this->_getElementContents("text"); + } + + /** + * Grabs the contents of a unique element. + * + * @param string + * @return string + */ + protected function _getElementContents($elementName) + { + $start = "<$elementName>"; + $end = ""; + if (strpos($this->response,$start) === false || strpos($this->response,$end) === false) { + return false; + } else { + $start_position = strpos($this->response, $start)+strlen($start); + $end_position = strpos($this->response, $end); + return substr($this->response, $start_position, $end_position-$start_position); + } + } + +} \ No newline at end of file diff --git a/anet_php_sdk/lib/ssl/cert.pem b/anet_php_sdk/lib/ssl/cert.pem new file mode 100755 index 0000000..b59fbb0 --- /dev/null +++ b/anet_php_sdk/lib/ssl/cert.pem @@ -0,0 +1,253 @@ +-----BEGIN CERTIFICATE----- +MIIEYTCCA0mgAwIBAgIESyDOMjANBgkqhkiG9w0BAQUFADCBsTELMAkGA1UEBhMC +VVMxFjAUBgNVBAoTDUVudHJ1c3QsIEluYy4xOTA3BgNVBAsTMHd3dy5lbnRydXN0 +Lm5ldC9ycGEgaXMgaW5jb3Jwb3JhdGVkIGJ5IHJlZmVyZW5jZTEfMB0GA1UECxMW +KGMpIDIwMDkgRW50cnVzdCwgSW5jLjEuMCwGA1UEAxMlRW50cnVzdCBDZXJ0aWZp +Y2F0aW9uIEF1dGhvcml0eSAtIEwxQzAeFw0xMDAzMzExNzA0MDBaFw0xMjAzMzAx +NzMzNTdaMIGVMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQG +A1UEBxMNTW91bnRhaW4gVmlldzEgMB4GA1UEChMXQ3liZXJzb3VyY2UgQ29ycG9y +YXRpb24xHTAbBgNVBAsTFFBsYXRpbnVtU1NMIFdpbGRjYXJkMRgwFgYDVQQDFA8q +LmF1dGhvcml6ZS5uZXQwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAOSIsv0X +OFMm2cV74o2jSF7zkNGeLHkPsI10xsFXTG1xqjzq4eImAReA3eIp1oHvLmji4kea +rmTbxoURYdsRsWkx61b2vDrKJwjGU+hPvTYna0M4I9fpDgmp7e/Q5TJBWqI7BX9N +2ccL95/2rV0g021JJhkqYMDFERTYRqkLFLfNAgMBAAGjggEdMIIBGTALBgNVHQ8E +BAMCBaAwEwYDVR0lBAwwCgYIKwYBBQUHAwEwMwYDVR0fBCwwKjAooCagJIYiaHR0 +cDovL2NybC5lbnRydXN0Lm5ldC9sZXZlbDFjLmNybDAzBggrBgEFBQcBAQQnMCUw +IwYIKwYBBQUHMAGGF2h0dHA6Ly9vY3NwLmVudHJ1c3QubmV0MEAGA1UdIAQ5MDcw +NQYJKoZIhvZ9B0sCMCgwJgYIKwYBBQUHAgEWGmh0dHA6Ly93d3cuZW50cnVzdC5u +ZXQvcnBhMB8GA1UdIwQYMBaAFB7xq4kG+EkPATN37hR67hl8kyhNMB0GA1UdDgQW +BBQ/gzreJ5piCG2MLGy5XOBCVB9iTTAJBgNVHRMEAjAAMA0GCSqGSIb3DQEBBQUA +A4IBAQCK6J1LZ3kGde6kzS4aGnPq5WUnJTdwB/ASIB15OOdK20Mdi7D0zF0Aevew ++f73shY3f7eozVmh8aCb7uDRojrBgLGdtj0vcRiqUm+e1LKf9p0XPdFMLGzh2E2W ++eLhBTMEYOgGPQDY/sf2MEKHRIgobccFI3LUUXylncY6+UKtUWJQ114duoZH0+o+ +RIlSRgGsGNYkWJ9+jeI6acvG15ahIzIfUx8m0vQp0Nri9/3p/HOezQjNdN0knTlR +pRbXZJ65zOig2wjt4an0OfYnOcqpJ/2yslCv0/jKwumHeygVt68l3J4rH7nUwUzs +B+JUkDiJgBD/+BFADuJkTJLMcn6t +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIE8jCCA9qgAwIBAgIEOGPp/DANBgkqhkiG9w0BAQUFADCBtDEUMBIGA1UEChML +RW50cnVzdC5uZXQxQDA+BgNVBAsUN3d3dy5lbnRydXN0Lm5ldC9DUFNfMjA0OCBp +bmNvcnAuIGJ5IHJlZi4gKGxpbWl0cyBsaWFiLikxJTAjBgNVBAsTHChjKSAxOTk5 +IEVudHJ1c3QubmV0IExpbWl0ZWQxMzAxBgNVBAMTKkVudHJ1c3QubmV0IENlcnRp +ZmljYXRpb24gQXV0aG9yaXR5ICgyMDQ4KTAeFw0wOTEyMTAyMDQzNTRaFw0xOTEy +MTAyMTEzNTRaMIGxMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNRW50cnVzdCwgSW5j +LjE5MDcGA1UECxMwd3d3LmVudHJ1c3QubmV0L3JwYSBpcyBpbmNvcnBvcmF0ZWQg +YnkgcmVmZXJlbmNlMR8wHQYDVQQLExYoYykgMjAwOSBFbnRydXN0LCBJbmMuMS4w +LAYDVQQDEyVFbnRydXN0IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gTDFDMIIB +IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAl6MtPJ7eBdoTwhGNnY7jf8dL +flqfs/9iq3PIKGu6EGSChxPNVxj/KM7A5g4GkVApg9Hywyrb2NtOBMwA64u2lty8 +qvpSdwTB2xnkrpz9PIsD7028GgNl+cGxP3KG8jiqGa4QiHgo2nXDPQKCApy5wWV3 +diRMmPdtMTj72/7bNwJ2oRiXpszeIAlJNiRpQvbkN2LxWW2pPO00nKOO29w61/cK +b+8u2NWTWnrtCElo4kHjWpDBhlX8UUOd4LLEZ7TLMjEl8FSfS9Fv29Td/K9ebHiQ +ld7KOki5eTybGdZ1BaD5iNfB6KUJ5BoV3IcjqrJ1jGMlh9j4PabCzGb/pWZoVQID +AQABo4IBCzCCAQcwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wMwYI +KwYBBQUHAQEEJzAlMCMGCCsGAQUFBzABhhdodHRwOi8vb2NzcC5lbnRydXN0Lm5l +dDAyBgNVHR8EKzApMCegJaAjhiFodHRwOi8vY3JsLmVudHJ1c3QubmV0LzIwNDhj +YS5jcmwwOwYDVR0gBDQwMjAwBgRVHSAAMCgwJgYIKwYBBQUHAgEWGmh0dHA6Ly93 +d3cuZW50cnVzdC5uZXQvcnBhMB0GA1UdDgQWBBQe8auJBvhJDwEzd+4Ueu4ZfJMo +TTAfBgNVHSMEGDAWgBRV5IHREYC+2Im5CKMx+aEkCRa5cDANBgkqhkiG9w0BAQUF +AAOCAQEAB/ZfgoR/gEDHkDRGQiQDzi+ruoOeJXMN7awFacaH7aNc8lfBsUl2mk3y +P93kDv4LPrmY2TKVHTL0Ae6cyMjlP+BTdmL83attPZSQ8sCzPJgnNl4olyL8G0DT +Kw2ttVdt3w/jS+9zAhBl+hvQrDHV4w/oujIwg+5K0L/fIpB6vuw6G8RJBB3xroB3 +PEII26c7KKaAAQPmOaPr34BZG/MsvtxyRHmgbAelbU1EjkJoypR8Lja6hZ7NqsRe +PFS+/i/qaZ0cHimbltjI/lGQ8SSmkAaz8Cmi/3gud1xFIdlEADHzvjJP9QoyDfz8 +uhZ2VrLWSJLyi6Y+t6xcaeoLP2ZFuQ== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIEnzCCBAigAwIBAgIERp6RGjANBgkqhkiG9w0BAQUFADCBwzELMAkGA1UEBhMC +VVMxFDASBgNVBAoTC0VudHJ1c3QubmV0MTswOQYDVQQLEzJ3d3cuZW50cnVzdC5u +ZXQvQ1BTIGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTElMCMGA1UECxMc +KGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDE6MDgGA1UEAxMxRW50cnVzdC5u +ZXQgU2VjdXJlIFNlcnZlciBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wOTAz +MjMxNTE4MjdaFw0xOTAzMjMxNTQ4MjdaMIG0MRQwEgYDVQQKEwtFbnRydXN0Lm5l +dDFAMD4GA1UECxQ3d3d3LmVudHJ1c3QubmV0L0NQU18yMDQ4IGluY29ycC4gYnkg +cmVmLiAobGltaXRzIGxpYWIuKTElMCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5u +ZXQgTGltaXRlZDEzMDEGA1UEAxMqRW50cnVzdC5uZXQgQ2VydGlmaWNhdGlvbiBB +dXRob3JpdHkgKDIwNDgpMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA +rU1LqRKGsuqjIAcVFmQqK0vRvwtKTY7tgHalZ7d4QMBzQshowNtTK91euHaYNZOL +Gp18EzoOH1u3Hs/lJBQesYGpjX24zGtLA/ECDNyrpUAkAH90lKGdCCmziAv1h3ed +Vc3kw37XamSrhRSGlVuXMlBvPci6Zgzj/L24ScF2iUkZ/cCovYmjZy/Gn7xxGWC4 +LeksyZB2ZnuU4q941mVTXTzWnLLPKQP5L6RQstRIzgUyVYr9smRMDuSYB3Xbf9+5 +CFVghTAp+XtIpGmG4zU/HoZdenoVve8AjhUiVBcAkCaTvA5JaJG/+EfTnZVCwQ5N +328mz8MYIWJmQ3DW1cAH4QIDAQABo4IBJzCCASMwDgYDVR0PAQH/BAQDAgEGMA8G +A1UdEwEB/wQFMAMBAf8wMwYIKwYBBQUHAQEEJzAlMCMGCCsGAQUFBzABhhdodHRw +Oi8vb2NzcC5lbnRydXN0Lm5ldDAzBgNVHR8ELDAqMCigJqAkhiJodHRwOi8vY3Js +LmVudHJ1c3QubmV0L3NlcnZlcjEuY3JsMDsGA1UdIAQ0MDIwMAYEVR0gADAoMCYG +CCsGAQUFBwIBFhpodHRwOi8vd3d3LmVudHJ1c3QubmV0L0NQUzAdBgNVHQ4EFgQU +VeSB0RGAvtiJuQijMfmhJAkWuXAwHwYDVR0jBBgwFoAU8BdiE1U9s/8KAGv7UISX +8+1i0BowGQYJKoZIhvZ9B0EABAwwChsEVjcuMQMCAIEwDQYJKoZIhvcNAQEFBQAD +gYEAj2WiMI4mq4rsNRaY6QPwjRdfvExsAvZ0UuDCxh/O8qYRDKixDk2Ei3E277M1 +RfPB+JbFi1WkzGuDFiAy2r77r5u3n+F+hJ+ePFCnP1zCvouGuAiS7vhCKw0T43aF +SApKv9ClOwqwVLht4wj5NI0LjosSzBcaM4eVyJ4K3FBTF3s= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIE2DCCBEGgAwIBAgIEN0rSQzANBgkqhkiG9w0BAQUFADCBwzELMAkGA1UEBhMC +VVMxFDASBgNVBAoTC0VudHJ1c3QubmV0MTswOQYDVQQLEzJ3d3cuZW50cnVzdC5u +ZXQvQ1BTIGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTElMCMGA1UECxMc +KGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDE6MDgGA1UEAxMxRW50cnVzdC5u +ZXQgU2VjdXJlIFNlcnZlciBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw05OTA1 +MjUxNjA5NDBaFw0xOTA1MjUxNjM5NDBaMIHDMQswCQYDVQQGEwJVUzEUMBIGA1UE +ChMLRW50cnVzdC5uZXQxOzA5BgNVBAsTMnd3dy5lbnRydXN0Lm5ldC9DUFMgaW5j +b3JwLiBieSByZWYuIChsaW1pdHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBF +bnRydXN0Lm5ldCBMaW1pdGVkMTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUg +U2VydmVyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGdMA0GCSqGSIb3DQEBAQUA +A4GLADCBhwKBgQDNKIM0VBuJ8w+vN5Ex/68xYMmo6LIQaO2f55M28Qpku0f1BBc/ +I0dNxScZgSYMVHINiC3ZH5oSn7yzcdOAGT9HZnuMNSjSuQrfJNqc1lB5gXpa0zf3 +wkrYKZImZNHkmGw6AIr1NJtl+O3jEP/9uElY3KDegjlrgbEWGWG5VLbmQwIBA6OC +AdcwggHTMBEGCWCGSAGG+EIBAQQEAwIABzCCARkGA1UdHwSCARAwggEMMIHeoIHb +oIHYpIHVMIHSMQswCQYDVQQGEwJVUzEUMBIGA1UEChMLRW50cnVzdC5uZXQxOzA5 +BgNVBAsTMnd3dy5lbnRydXN0Lm5ldC9DUFMgaW5jb3JwLiBieSByZWYuIChsaW1p +dHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBFbnRydXN0Lm5ldCBMaW1pdGVk +MTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUgU2VydmVyIENlcnRpZmljYXRp +b24gQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMCmgJ6AlhiNodHRwOi8vd3d3LmVu +dHJ1c3QubmV0L0NSTC9uZXQxLmNybDArBgNVHRAEJDAigA8xOTk5MDUyNTE2MDk0 +MFqBDzIwMTkwNTI1MTYwOTQwWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAU8Bdi +E1U9s/8KAGv7UISX8+1i0BowHQYDVR0OBBYEFPAXYhNVPbP/CgBr+1CEl/PtYtAa +MAwGA1UdEwQFMAMBAf8wGQYJKoZIhvZ9B0EABAwwChsEVjQuMAMCBJAwDQYJKoZI +hvcNAQEFBQADgYEAkNwwAvpkdMKnCqV8IY00F6j7Rw7/JXyNEwr75Ji174z4xRAN +95K+8cPV1ZVqBLssziY2ZcgxxufuP+NXdYR6Ee9GTxj005i7qIcyunL2POI9n9cd +2cNgQ4xYDiKWL2KjLB+6rQXvqzJ4h6BUcxm1XAX5Uj5tLUUL9wqT6u0G+bI= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIDSTCCArKgAwIBAgIQfmO9EP9/fYY45sRzhqgfGzANBgkqhkiG9w0BAQUFADBM +MQswCQYDVQQGEwJaQTElMCMGA1UEChMcVGhhd3RlIENvbnN1bHRpbmcgKFB0eSkg +THRkLjEWMBQGA1UEAxMNVGhhd3RlIFNHQyBDQTAeFw0wOTA0MDkwMDAwMDBaFw0x +MTA0MTEyMzU5NTlaMIGPMQswCQYDVQQGEwJVUzENMAsGA1UECBMEVXRhaDEWMBQG +A1UEBxMNQW1lcmljYW4gRm9yazEcMBoGA1UEChMTQXV0aG9yaXplLk5ldCBDb3Jw +LjEcMBoGA1UECxMTQVVUSE9SSVpFLk5FVCBDT1JQLjEdMBsGA1UEAxMUc2VjdXJl +LmF1dGhvcml6ZS5uZXQwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAN0dh86L +70MHbun7wTNGV0pNXsnebt3z9mCpndLUiBp5J/b57hQO5/HvevkhkDyCrky/Dn7y +4SEJh6RHYuP4ZBk30DS8iH5dWCRHqSQgpMKhUl/+D7KHbVqgPzOpOR44TiSa1P5m +Fv0qicvRR3iwSK/6ESywNvEJk1iiYPnpnnlvAgMBAAGjgecwgeQwDAYDVR0TAQH/ +BAIwADA2BgNVHR8ELzAtMCugKaAnhiVodHRwOi8vY3JsLnRoYXd0ZS5jb20vVGhh +d3RlU0dDQ0EuY3JsMCgGA1UdJQQhMB8GCCsGAQUFBwMBBggrBgEFBQcDAgYJYIZI +AYb4QgQBMHIGCCsGAQUFBwEBBGYwZDAiBggrBgEFBQcwAYYWaHR0cDovL29jc3Au +dGhhd3RlLmNvbTA+BggrBgEFBQcwAoYyaHR0cDovL3d3dy50aGF3dGUuY29tL3Jl +cG9zaXRvcnkvVGhhd3RlX1NHQ19DQS5jcnQwDQYJKoZIhvcNAQEFBQADgYEARa0l +PaGn4TOw3KOMVu8eiSdho4Nmal6u9AWE3rWHDakO2/a1AkZTM2/Wpt6KI3fp6WWK +LSsa9wLoVYSJ6pI7bmiJTvyx42yPP0PZXQSz05PHgTEGyW2jAn4N1hFvbTj28mZT +jv2jd12xgrmX34nulLdydNaM8J7CauhMvqwwvZ0= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIDIzCCAoygAwIBAgIEMAAAAjANBgkqhkiG9w0BAQUFADBfMQswCQYDVQQGEwJV +UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xNzA1BgNVBAsTLkNsYXNzIDMgUHVi +bGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDQwNTEzMDAw +MDAwWhcNMTQwNTEyMjM1OTU5WjBMMQswCQYDVQQGEwJaQTElMCMGA1UEChMcVGhh +d3RlIENvbnN1bHRpbmcgKFB0eSkgTHRkLjEWMBQGA1UEAxMNVGhhd3RlIFNHQyBD +QTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA1NNn0I0Vf67NMf59HZGhPwtx +PKzMyGT7Y/wySweUvW+Aui/hBJPAM/wJMyPpC3QrccQDxtLN4i/1CWPN/0ilAL/g +5/OIty0y3pg25gqtAHvEZEo7hHUD8nCSfQ5i9SGraTaEMXWQ+L/HbIgbBpV8yeWo +3nWhLHpo39XKHIdYYBkCAwEAAaOB/jCB+zASBgNVHRMBAf8ECDAGAQH/AgEAMAsG +A1UdDwQEAwIBBjARBglghkgBhvhCAQEEBAMCAQYwKAYDVR0RBCEwH6QdMBsxGTAX +BgNVBAMTEFByaXZhdGVMYWJlbDMtMTUwMQYDVR0fBCowKDAmoCSgIoYgaHR0cDov +L2NybC52ZXJpc2lnbi5jb20vcGNhMy5jcmwwMgYIKwYBBQUHAQEEJjAkMCIGCCsG +AQUFBzABhhZodHRwOi8vb2NzcC50aGF3dGUuY29tMDQGA1UdJQQtMCsGCCsGAQUF +BwMBBggrBgEFBQcDAgYJYIZIAYb4QgQBBgpghkgBhvhFAQgBMA0GCSqGSIb3DQEB +BQUAA4GBAFWsY+reod3SkF+fC852vhNRj5PZBSvIG3dLrWlQoe7e3P3bB+noOZTc +q3J5Lwa/q4FwxKjt6lM07e8eU9kGx1Yr0Vz00YqOtCuxN5BICEIlxT6Ky3/rbwTR +bcV0oveifHtgPHfNDs5IAn8BL7abN+AqKjbc1YXWrOU/VG+WHgWv +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIICPDCCAaUCEHC65B0Q2Sk0tjjKewPMur8wDQYJKoZIhvcNAQECBQAwXzELMAkG +A1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFz +cyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2 +MDEyOTAwMDAwMFoXDTI4MDgwMTIzNTk1OVowXzELMAkGA1UEBhMCVVMxFzAVBgNV +BAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmlt +YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUAA4GN +ADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhE +BarsAx94f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/is +I19wKTakyYbnsZogy1Olhec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0G +CSqGSIb3DQEBAgUAA4GBALtMEivPLCYATxQT3ab7/AoRhIzzKBxnki98tsX63/Do +lbwdj2wsqFHMc9ikwFPwTtYmwHYBV4GSXiHx0bH/59AhWM1pF+NEHJwZRDmJXNyc +AA9WjQKZ7aKQRUzkuxCkPfAyAw7xzvjoyVGM5mKf5p/AfbdynMk2OmufTqj/ZA1k +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFCjCCA/KgAwIBAgIERWua3DANBgkqhkiG9w0BAQUFADCBsDELMAkGA1UEBhMC +VVMxFjAUBgNVBAoTDUVudHJ1c3QsIEluYy4xOTA3BgNVBAsTMHd3dy5lbnRydXN0 +Lm5ldC9DUFMgaXMgaW5jb3Jwb3JhdGVkIGJ5IHJlZmVyZW5jZTEfMB0GA1UECxMW +KGMpIDIwMDYgRW50cnVzdCwgSW5jLjEtMCsGA1UEAxMkRW50cnVzdCBSb290IENl +cnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA5MTIxMDIwNTU0M1oXDTE5MTIxMDIx +MjU0M1owgbExCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMuMTkw +NwYDVQQLEzB3d3cuZW50cnVzdC5uZXQvcnBhIGlzIGluY29ycG9yYXRlZCBieSBy +ZWZlcmVuY2UxHzAdBgNVBAsTFihjKSAyMDA5IEVudHJ1c3QsIEluYy4xLjAsBgNV +BAMTJUVudHJ1c3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBMMUUwggEiMA0G +CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC2WwRUd90OJGbcKqHbgMxdx1/9UhZY +2l+UBqm4trljDEcgguzHlU6LuHdSaj21h6nW4cx05abIwNRWT40u1gg+DExDPvBB +k15G7znn2WUqDHZQJ71bDTMzB+D3oqmc4REzrWb80ix6qqNzFr6ThXUP1zeM+iO3 +ZPjjTG7tswW94jbbfN52RNqCcna2bv+UodCG9xDNSlqLsHWMZlKATkhMSYOmQNd3 +gRNNXnJ+SEYiqg/iPmWUOOFycf5KcQm6NX9ViT2B1bgoARB3NloQhdK9YIQrSWGU +DN5MQGoqxHlghCSCMmlKmEviVhC6A0VRINPP2o5UG0W2erqXmlrYxtFfAgMBAAGj +ggEnMIIBIzAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAzBggrBgEF +BQcBAQQnMCUwIwYIKwYBBQUHMAGGF2h0dHA6Ly9vY3NwLmVudHJ1c3QubmV0MDMG +A1UdHwQsMCowKKAmoCSGImh0dHA6Ly9jcmwuZW50cnVzdC5uZXQvcm9vdGNhMS5j +cmwwOwYDVR0gBDQwMjAwBgRVHSAAMCgwJgYIKwYBBQUHAgEWGmh0dHA6Ly93d3cu +ZW50cnVzdC5uZXQvQ1BTMB0GA1UdDgQWBBRbQYqyxEPBvb/IVEFVneCWrf+5oTAf +BgNVHSMEGDAWgBRokORnpKZTgMeGZqTx90tD+4S9bTAZBgkqhkiG9n0HQQAEDDAK +GwRWNy4xAwIAgTANBgkqhkiG9w0BAQUFAAOCAQEAsjvSnsG8O0i23NhaGGZTw701 +DUhCLDUB2BCi4uONLLqmAxHta7FJy1/N7GCzutQC62FPTn7435BfTtOQAhxS2hIA +L5tx2gQSFMGQgy4o0hBAEYsmLeuZVVRvYI7Fgx3Aoz/VihQ5ahsN79NadznPabS9 +aW9PeNOhhqObt9f7qi3w+iah+WcsiEulNNWD+0zxW3AiZhubWU9NzpjbQaT+GqPr +OOb58TkCnUa2ycKePoK2H5/KSqixBl8QNDv92nusM07tprdL85H1nAsRktwTasjV +8TttlmsB5CNMscHg0hIhnynUrZU9pvfnMsV1twtX2KT5wOzsMjMMTa7oCNXsqg== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIEmzCCBASgAwIBAgIEQoctTDANBgkqhkiG9w0BAQUFADCBwzELMAkGA1UEBhMC +VVMxFDASBgNVBAoTC0VudHJ1c3QubmV0MTswOQYDVQQLEzJ3d3cuZW50cnVzdC5u +ZXQvQ1BTIGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTElMCMGA1UECxMc +KGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDE6MDgGA1UEAxMxRW50cnVzdC5u +ZXQgU2VjdXJlIFNlcnZlciBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNzAx +MDUxOTIwMzlaFw0xNzAxMDUxOTUwMzlaMIGwMQswCQYDVQQGEwJVUzEWMBQGA1UE +ChMNRW50cnVzdCwgSW5jLjE5MDcGA1UECxMwd3d3LmVudHJ1c3QubmV0L0NQUyBp +cyBpbmNvcnBvcmF0ZWQgYnkgcmVmZXJlbmNlMR8wHQYDVQQLExYoYykgMjAwNiBF +bnRydXN0LCBJbmMuMS0wKwYDVQQDEyRFbnRydXN0IFJvb3QgQ2VydGlmaWNhdGlv +biBBdXRob3JpdHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC2lbZD +QvrGbSpvSN+UTDlXBe7DeRFBaDbt7P6aAY+hOCj89xBGZi5NHhqxGk7G0cCViLDJ +/zGLMwPbt4N7PiCEXu2yViin+OC5QHE3xctHDpcqaMAilWIV20fZ9dAr/4JLya0+ +3kzbkIBQPwmKhADsMAo9GM37/SpZmiOVFyxFnh9uQ3ltDFyY/kinxSNHXF79buce +tPZoRdGGg1uiio2x4ymA/iVxiK2+vI+sUpZLqlGN5BMxGehOTZ/brLNq1bw5VHHK +enp/kN19HYDZgbtZJsIR/uaT4veA5GX7NDcOKYBwTa84hi6ef1evnheu6xzLKCFf +thzY56IEIvnT2tjLAgMBAAGjggEnMIIBIzAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0T +AQH/BAUwAwEB/zAzBggrBgEFBQcBAQQnMCUwIwYIKwYBBQUHMAGGF2h0dHA6Ly9v +Y3NwLmVudHJ1c3QubmV0MDMGA1UdHwQsMCowKKAmoCSGImh0dHA6Ly9jcmwuZW50 +cnVzdC5uZXQvc2VydmVyMS5jcmwwOwYDVR0gBDQwMjAwBgRVHSAAMCgwJgYIKwYB +BQUHAgEWGmh0dHA6Ly93d3cuZW50cnVzdC5uZXQvQ1BTMB0GA1UdDgQWBBRokORn +pKZTgMeGZqTx90tD+4S9bTAfBgNVHSMEGDAWgBTwF2ITVT2z/woAa/tQhJfz7WLQ +GjAZBgkqhkiG9n0HQQAEDDAKGwRWNy4xAwIAgTANBgkqhkiG9w0BAQUFAAOBgQAM +sIR8LRP+mj2/GAWVPSBIoxaBhxVQFaSIjZ9g1Dpv6y1uOoakqdLBnYl6CBykLbNH +jg9kSm9mA4M/TzSUNqopbYuNAiIrjM13pXCVhpHRtr9SvjNqa5n5b+ESvgTLM7/1 +EhpORLpbFk0wufO0dM5u8mhWWN3Yof1UBfQjkYXJ+Q== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFdDCCBFygAwIBAgIETCA3bTANBgkqhkiG9w0BAQUFADCBsTELMAkGA1UE +BhMCVVMxFjAUBgNVBAoTDUVudHJ1c3QsIEluYy4xOTA3BgNVBAsTMHd3dy5l +bnRydXN0Lm5ldC9ycGEgaXMgaW5jb3Jwb3JhdGVkIGJ5IHJlZmVyZW5jZTEf +MB0GA1UECxMWKGMpIDIwMDkgRW50cnVzdCwgSW5jLjEuMCwGA1UEAxMlRW50 +cnVzdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEwxRTAeFw0xMTAzMjMx +NjQ4MzhaFw0xMzAzMjIyMzE4MDFaMIH4MQswCQYDVQQGEwJVUzETMBEGA1UE +CBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzETMBEGCysG +AQQBgjc8AgEDEwJVUzEZMBcGCysGAQQBgjc8AgECEwhEZWxhd2FyZTEgMB4G +A1UEChMXQ3liZXJzb3VyY2UgQ29ycG9yYXRpb24xHTAbBgNVBA8TFFByaXZh +dGUgT3JnYW5pemF0aW9uMRwwGgYDVQQLExNBVVRIT1JJWkUuTkVUIENPUlAu +MS0wDgYDVQQFEwcyODM4OTIxMBsGA1UEAxMUc2VjdXJlLmF1dGhvcml6ZS5u +ZXQwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvrwbLk7kDJnja +13i9lcXhYlHIwCTKHegPRuAkGDO6hNH0yNVv10kQSWjKhZ6KnoEA2p0F92FN +HwFTUfm0QGlaXW9kPc8nUi94hgY05iYwh96FHNdibqeO2r73GGol/RJkUO69 +ekqP1f+ABi7qWguL29cadX1DmOVQSkIeWc0xn9IVgS8dxnDzKwJ+41M5gLfM +YAJQ/FOwjOpt0j/Kg+38iHZ71FM7ehceYFggn+7y0ZcAcDUx4l6sKBuqFXq7 +viMqP2/Np0TpzmJMi2X8Wy0FDYoilHb9qBJWkl2AYxfjLTTSu27OMAJYyvEM +RmjOkLn7hQBPoSE6u3UKevtF2WPtAgMBAAGjggFJMIIBRTALBgNVHQ8EBAMC +BaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMDMGCCsGAQUFBwEB +BCcwJTAjBggrBgEFBQcwAYYXaHR0cDovL29jc3AuZW50cnVzdC5uZXQwMwYD +VR0fBCwwKjAooCagJIYiaHR0cDovL2NybC5lbnRydXN0Lm5ldC9sZXZlbDFl +LmNybDBBBgNVHSAEOjA4MDYGCmCGSAGG+mwKAQIwKDAmBggrBgEFBQcCARYa +aHR0cDovL3d3dy5lbnRydXN0Lm5ldC9ycGEwHwYDVR0RBBgwFoIUc2VjdXJl +LmF1dGhvcml6ZS5uZXQwHwYDVR0jBBgwFoAUW0GKssRDwb2/yFRBVZ3glq3/ +uaEwHQYDVR0OBBYEFGZazQ8qcWqAiT+oFpV/D7WTbcGlMAkGA1UdEwQCMAAw +DQYJKoZIhvcNAQEFBQADggEBAEG1lvV2JQXDXRmEXkDp5qpF6uj1eNfffViE +QR6XCLPWIuaEcgnieTfFzRPEYbxzUY9jCqM62U37hUTDdMKjZas7fwaZ8RjE +wQASNPrIsHFsXEb0Nbz58g3cY00teCH3qQ9N9uW3TC+OXiSz9aSBxYkHD/63 +2D1rzaZLVHXUoReMMbjwf69zLDN7qsy6VDksHMVjqQugZF0ZCLFPPH5jfdAx +sOtocx7eyUovzO387ve8UMTdw6Anr9Ai7iVaYf4MpMqcuaHVet3QeE97Koy1 +mT3q9FmUGbXM+nCqSs/TQ4jSqOo4zqDnkK/cOgbzjsuJJZ/rCPSxaKvz3b/n +wMWH7kM= +-----END CERTIFICATE----- \ No newline at end of file diff --git a/anet_php_sdk/tests/AuthorizeNetAIM_Test.php b/anet_php_sdk/tests/AuthorizeNetAIM_Test.php new file mode 100755 index 0000000..573327d --- /dev/null +++ b/anet_php_sdk/tests/AuthorizeNetAIM_Test.php @@ -0,0 +1,888 @@ +setFields( + array( + 'amount' => rand(1, 1000), + 'card_num' => '4111111111111111', + 'exp_date' => '0415' + ) + ); + $response = $sale->authorizeAndCapture(); + $this->assertTrue($response->approved); + } + + public function testAuthCaptureSingleDigitMonth() + { + $sale = new AuthorizeNetAIM; + $sale->setFields( + array( + 'amount' => rand(1, 1000), + 'card_num' => '4111111111111111', + 'exp_date' => '415' + ) + ); + $response = $sale->authorizeAndCapture(); + $this->assertTrue($response->approved); + } + + public function testAuthCaptureSingleDigitMonthWithSlash() + { + $sale = new AuthorizeNetAIM; + $sale->setFields( + array( + 'amount' => rand(1, 1000), + 'card_num' => '4111111111111111', + 'exp_date' => '4/15' + ) + ); + $response = $sale->authorizeAndCapture(); + $this->assertTrue($response->approved); + } + + public function testAuthCaptureTwoDigitMonthWithSlash() + { + $sale = new AuthorizeNetAIM; + $sale->setFields( + array( + 'amount' => rand(1, 1000), + 'card_num' => '4111111111111111', + 'exp_date' => '04/15' + ) + ); + $response = $sale->authorizeAndCapture(); + $this->assertTrue($response->approved); + } + + public function testAuthCaptureAlternate() + { + $sale = new AuthorizeNetAIM; + $sale->amount = rand(1, 10000); + $sale->card_num = '6011000000000012'; + $sale->exp_date = '04/15'; + $response = $sale->authorizeAndCapture(); + $this->assertTrue($response->approved); + } + + public function testAuthCaptureShort() + { + $sale = new AuthorizeNetAIM; + $response = $sale->authorizeAndCapture(rand(1, 100), '6011000000000012', '04/16'); + $this->assertTrue($response->approved); + } + + public function testAuthCapturePartial() + { + $amount = 3.69; + + $sale = new AuthorizeNetAIM; + $sale->amount = $amount; + $sale->card_num = '4222222222222'; + $sale->zip = "46225"; + $sale->exp_date = '04/15'; + $sale->allow_partial_auth = true; + $response = $sale->authorizeAndCapture(); + $this->assertTrue($response->held); + $this->assertEquals("1.23", $response->amount); + $this->assertEquals($amount, $response->requested_amount); + $split_tender_id = $response->split_tender_id; + + // Pay the balance with a different card + $sale = new AuthorizeNetAIM; + $sale->amount = $amount - $response->amount; + $sale->card_num = '6011000000000012'; + $sale->exp_date = '04/20'; + $sale->split_tender_id = $split_tender_id; + $sale->allow_partial_auth = true; + $response = $sale->authorizeAndCapture(); + $this->assertTrue($response->approved); + + + } + + public function testAuthCaptureShortNoVerify() + { + $sale = new AuthorizeNetAIM; + $sale->VERIFY_PEER = false; + $response = $sale->authorizeAndCapture(rand(1, 100), '6011000000000012', '04/19'); + $this->assertTrue($response->approved); + } + + // public function testVisaVerify() + // { + // return; // Remove to enable test + // $verify = new AuthorizeNetAIM; + // $verify->amount = "0.00"; + // $verify->card_num = '4012888818888'; + // $verify->exp_date = "0517"; + // $verify->address = "123 Main Street"; + // $verify->zip = "94110"; + // $verify->authentication_indicator = "5"; + // $verify->cardholder_authentication_value = "512"; + // $response = $verify->authorizeOnly(); + // $this->assertTrue($response->approved); + // } + // + // public function testVisaVerifyFail() + // { + // return; // Remove to enable test + // $verify = new AuthorizeNetAIM; + // $verify->amount = "0.00"; + // $verify->card_num = '4012888818888'; + // $verify->exp_date = "0517"; + // $verify->address = "123 Main Street"; + // $verify->zip = "94110"; + // $verify->authentication_indicator = "5"; + // $verify->cardholder_authentication_value = ""; + // $response = $verify->authorizeOnly(); + // $this->assertTrue($response->declined); + // } + // + // public function testMastercardVerify() + // { + // return; // Remove to enable test + // $verify = new AuthorizeNetAIM; + // $verify->amount = "0.00"; + // $verify->card_num = '5424000000000015'; + // $verify->exp_date = "0517"; + // $verify->address = "123 Main Street"; + // $verify->zip = "94110"; + // $verify->authentication_indicator = "2"; + // $verify->cardholder_authentication_value = "512"; + // $response = $verify->authorizeOnly(); + // $this->assertTrue($response->approved); + // } + // + // public function testMastercardVerifyFail() + // { + // return; // Remove to enable test + // $verify = new AuthorizeNetAIM; + // $verify->amount = "0.00"; + // $verify->card_num = '5424000000000015'; + // $verify->exp_date = "0517"; + // $verify->address = "123 Main Street"; + // $verify->zip = "94110"; + // $verify->authentication_indicator = "2"; + // $verify->cardholder_authentication_value = ""; + // $response = $verify->authorizeOnly(); + // $this->assertTrue($response->declined); + // } + + public function testAimResponseFields() + { + + $sale = new AuthorizeNetAIM; + $sale->card_num = '4111111111111111'; + $sale->exp_date = '04/16'; + $sale->amount = $amount = rand(1,99); + $sale->description = $description = "Sale description"; + $sale->first_name = $first_name = "Jane"; + $sale->last_name = $last_name = "Smith"; + $sale->company = $company = "Jane Smith Enterprises Inc."; + $sale->address = $address = "20 Main Street"; + $sale->city = $city = "San Francisco"; + $sale->state = $state = "CA"; + $sale->zip = $zip = "94110"; + $sale->country = $country = "US"; + $sale->phone = $phone = "415-555-5557"; + $sale->fax = $fax = "415-555-5556"; + $sale->email = $email = "foo@example.com"; + $sale->cust_id = $customer_id = "55"; + $sale->customer_ip = "98.5.5.5"; + $sale->invoice_num = $invoice_num = "123"; + $sale->ship_to_first_name = $ship_to_first_name = "John"; + $sale->ship_to_last_name = $ship_to_last_name = "Smith"; + $sale->ship_to_company = $ship_to_company = "Smith Enterprises Inc."; + $sale->ship_to_address = $ship_to_address = "10 Main Street"; + $sale->ship_to_city = $ship_to_city = "San Francisco"; + $sale->ship_to_state = $ship_to_state = "CA"; + $sale->ship_to_zip = $ship_to_zip_code = "94110"; + $sale->ship_to_country = $ship_to_country = "US"; + $sale->tax = $tax = "0.00"; + $sale->freight = $freight = "Freight<|>ground overnight<|>12.95"; + $sale->duty = $duty = "Duty1<|>export<|>15.00"; + $sale->tax_exempt = $tax_exempt = "FALSE"; + $sale->po_num = $po_num = "12"; + + + + $response = $sale->authorizeAndCapture(); + $this->assertTrue($response->approved); + $this->assertEquals("1", $response->response_code); + $this->assertEquals("1", $response->response_subcode); + $this->assertEquals("1", $response->response_reason_code); + $this->assertEquals("This transaction has been approved.", $response->response_reason_text); + $this->assertGreaterThan(1, strlen($response->authorization_code)); + $this->assertEquals("Y", $response->avs_response); + $this->assertGreaterThan(1, strlen($response->transaction_id)); + $this->assertEquals($invoice_num, $response->invoice_num); + $this->assertEquals($description, $response->description); + $this->assertEquals($amount, $response->amount); + $this->assertEquals("CC", $response->method); + $this->assertEquals("auth_capture", $response->transaction_type); + $this->assertEquals($customer_id, $response->customer_id); + $this->assertEquals($first_name, $response->first_name); + $this->assertEquals($last_name, $response->last_name); + $this->assertEquals($company, $response->company); + $this->assertEquals($address, $response->address); + $this->assertEquals($city, $response->city); + $this->assertEquals($state, $response->state); + $this->assertEquals($zip, $response->zip_code); + $this->assertEquals($country, $response->country); + $this->assertEquals($phone, $response->phone); + $this->assertEquals($fax, $response->fax); + $this->assertEquals($email, $response->email_address); + $this->assertEquals($ship_to_first_name, $response->ship_to_first_name); + $this->assertEquals($ship_to_last_name, $response->ship_to_last_name); + $this->assertEquals($ship_to_company, $response->ship_to_company); + $this->assertEquals($ship_to_address, $response->ship_to_address); + $this->assertEquals($ship_to_city, $response->ship_to_city); + $this->assertEquals($ship_to_state, $response->ship_to_state); + $this->assertEquals($ship_to_zip_code, $response->ship_to_zip_code); + $this->assertEquals($ship_to_country, $response->ship_to_country); + $this->assertEquals($tax, $response->tax); + $this->assertEquals("15.00", $response->duty); + $this->assertEquals("12.95", $response->freight); + $this->assertEquals($tax_exempt, $response->tax_exempt); + $this->assertEquals($po_num, $response->purchase_order_number); + $this->assertGreaterThan(1, strlen($response->md5_hash)); + $this->assertEquals("", $response->card_code_response); + $this->assertEquals("2", $response->cavv_response); + $this->assertEquals("XXXX1111", $response->account_number); + $this->assertEquals("Visa", $response->card_type); + $this->assertEquals("", $response->split_tender_id); + $this->assertEquals("", $response->requested_amount); + $this->assertEquals("", $response->balance_on_card); + + + } + + + public function testVoid() + { + // First create transaction to void. + $amount = rand(1, 1000); + $sale = new AuthorizeNetAIM; + $sale->setFields( + array( + 'amount' => $amount, + 'card_num' => '6011000000000012', + 'exp_date' => '0415' + ) + ); + $response = $sale->authorizeAndCapture(); + $this->assertTrue($response->approved); + + $void = new AuthorizeNetAIM; + $void->setFields( + array( + 'amount' => $amount, + 'card_num' => '6011000000000012', + 'trans_id' => $response->transaction_id, + ) + ); + $void_response = $void->Void(); + $this->assertTrue($void_response->approved); + } + + public function testVoidShort() + { + // First create transaction to void. + $amount = rand(1, 1000); + $card_num = '6011000000000012'; + $exp_date = '0415'; + $sale = new AuthorizeNetAIM; + $response = $sale->authorizeAndCapture($amount, $card_num, $exp_date); + $this->assertTrue($response->approved); + + $void = new AuthorizeNetAIM; + $void_response = $void->void($response->transaction_id); + $this->assertTrue($void_response->approved); + } + + public function testAuthCaptureECheckSandbox() + { + $sale = new AuthorizeNetAIM; + $sale->setFields( + array( + 'amount' => rand(1, 1000), + 'method' => 'echeck', + 'bank_aba_code' => '121042882', + 'bank_acct_num' => '123456789123', + 'bank_acct_type' => 'CHECKING', + 'bank_name' => 'Bank of Earth', + 'bank_acct_name' => 'Jane Doe', + 'echeck_type' => 'WEB', + ) + ); + $response = $sale->authorizeAndCapture(); + $this->assertEquals("ECHECK", $response->method); + $this->assertTrue($response->approved); + + } + + public function testAmex() + { + $sale = new AuthorizeNetAIM; + $response = $sale->authorizeAndCapture(rand(1, 100), '370000000000002', '04/16'); + $this->assertTrue($response->approved); + } + + public function testDiscover() + { + $sale = new AuthorizeNetAIM; + $response = $sale->authorizeAndCapture(rand(1, 100), '6011000000000012', '04/16'); + $this->assertTrue($response->approved); + } + + public function testVisa() + { + $sale = new AuthorizeNetAIM; + $response = $sale->authorizeAndCapture(rand(1, 100), '4012888818888', '04/16'); + $this->assertTrue($response->approved); + } + + // public function testJCB() + // { + // return; // Remove to enable test + // $sale = new AuthorizeNetAIM; + // $response = $sale->authorizeAndCapture(rand(1, 100), '3088000000000017', '0905'); + // $this->assertTrue($response->approved); + // } + // + // public function testDinersClub() + // { + // return; // Remove to enable test + // $sale = new AuthorizeNetAIM; + // $response = $sale->authorizeAndCapture(rand(1, 100), '38000000000006', '0905'); + // $this->assertTrue($response->approved); + // } + + public function testAuthOnly() + { + $auth = new AuthorizeNetAIM; + $auth->setFields( + array( + 'amount' => rand(1, 1000), + 'card_num' => '6011000000000012', + 'exp_date' => '0415' + ) + ); + $response = $auth->authorizeOnly(); + $this->assertTrue($response->approved); + } + + public function testAuthCaptureVoid() + { + $amount = rand(1, 1000); + $auth = new AuthorizeNetAIM; + $auth->setFields( + array( + 'amount' => $amount, + 'card_num' => '6011000000000012', + 'exp_date' => '0415' + ) + ); + $auth_response = $auth->authorizeOnly(); + $this->assertTrue($auth_response->approved); + + // Now capture. + $capture = new AuthorizeNetAIM; + $capture->setFields( + array( + 'amount' => $amount, + 'card_num' => '6011000000000012', + 'exp_date' => '0415', + 'trans_id' => $auth_response->transaction_id, + ) + ); + $capture_response = $capture->priorAuthCapture(); + $this->assertTrue($capture_response->approved); + + // Now void + $void = new AuthorizeNetAIM; + $void->setFields( + array( + 'amount' => $amount, + 'card_num' => '0012', + 'trans_id' => $auth_response->transaction_id, + ) + ); + $void_response = $void->void(); + $this->assertTrue($void_response->approved); + } + + // public function testCredit() + // { + // + // } + // + // public function testPriorAuthCapture() + // { + // + // } + // + // public function testCaptureOnly() + // { + // + // } + + public function testAdvancedAIM() + { + $auth = new AuthorizeNetAIM; + $auth->amount = "45.00"; + + // Use eCheck: + $auth->setECheck( + '121042882', + '123456789123', + 'CHECKING', + 'Bank of Earth', + 'Jane Doe', + 'WEB' + ); + + // Set multiple line items: + $auth->addLineItem('item1', 'Golf tees', 'Blue tees', '2', '5.00', 'N'); + $auth->addLineItem('item2', 'Golf shirt', 'XL', '1', '40.00', 'N'); + + // Set Invoice Number: + $auth->invoice_num = time(); + + // Set a Merchant Defined Field: + $auth->setCustomField("entrance_source", "Search Engine"); + + // Authorize Only: + $response = $auth->authorizeOnly(); + $this->assertTrue($response->approved); + if ($response->approved) { + $auth_code = $response->transaction_id; + + // Now capture: + $capture = new AuthorizeNetAIM; + $capture_response = $capture->priorAuthCapture($auth_code); + $this->assertTrue($capture_response->approved); + + // Now void: + $void = new AuthorizeNetAIM; + $void_response = $void->void($capture_response->transaction_id); + $this->assertTrue($void_response->approved); + } + } + + public function testAuthCaptureCustomFields() + { + $sale = new AuthorizeNetAIM; + $sale->setFields( + array( + 'amount' => rand(1, 1000), + 'card_num' => '6011000000000012', + 'exp_date' => '0415' + ) + ); + $sale->setCustomField("foo", "bar"); + $sale->setCustomField("foo2", "bar2"); + $sale->setCustomField("foo3", "bar3"); + $sale->setCustomField("foo4", "bar4"); + $sale->setCustomField("foo5", "bar5"); + $sale->setCustomField("My_MerchantField6", "My Merchant Value6"); + $sale->setCustomField("foo7", "bar7"); + $response = $sale->authorizeAndCapture(); + $this->assertTrue($response->approved); + $this->assertEquals("bar", $response->foo); + $this->assertEquals("bar2", $response->foo2); + } + + public function testEncapCharacter() + { + $description = "john doe's present, with comma"; + $amount = rand(1, 1000); + $sale = new AuthorizeNetAIM; + $sale->setFields( + array( + 'amount' => $amount, + 'card_num' => '6011000000000012', + 'exp_date' => '0415', + 'encap_char' => '$', + 'description' => $description, + ) + ); + $response = $sale->authorizeAndCapture(); + $this->assertTrue($response->approved); + $this->assertEquals($amount, $response->amount); + $this->assertEquals($description, $response->description); + } + + public function testAuthCaptureSetMultipleCustomFields() + { + $sale = new AuthorizeNetAIM; + $sale->setFields( + array( + 'amount' => rand(1, 1000), + 'card_num' => '6011000000000012', + 'exp_date' => '0415' + ) + ); + $sale->setCustomFields(array("foo" => "bar", "foo2" => "bar2")); + $response = $sale->authorizeAndCapture(); + $this->assertTrue($response->approved); + $this->assertEquals("bar", $response->foo); + $this->assertEquals("bar2", $response->foo2); + } + + public function testInvalidMerchantCredentials() + { + $auth = new AuthorizeNetAIM('d', 'd'); + $response = $auth->AuthorizeOnly(); + $this->assertTrue($response->error); + $this->assertEquals($response->response_subcode, 2); + $this->assertEquals($response->response_reason_code, 13); + } + + public function testInvalidCreditCard() + { + $sale = new AuthorizeNetAIM; + $sale->setFields( + array( + 'amount' => rand(1, 1000), + 'card_num' => '123', + 'exp_date' => '0415' + ) + ); + $response = $sale->authorizeAndCapture(); + $this->assertFalse($response->approved); + $this->assertTrue($response->error); + } + + public function testError() + { + $sale = new AuthorizeNetAIM; + $sale->unsetField("login"); + $sale->unsetField("tran_key"); + $sale->unsetField("delim_data"); + + $sale->unsetField("version"); + $sale->unsetField("relay_response"); + + $response = $sale->authorizeAndCapture(); + // An exception should have been thrown. + $this->assertFalse($response->approved); + $this->assertTrue($response->error); + + } + + public function testMultipleLineItems() + { + $merchant = (object)array(); + $merchant->login = AUTHORIZENET_API_LOGIN_ID; + $merchant->tran_key = AUTHORIZENET_TRANSACTION_KEY; + $merchant->allow_partial_auth = "false"; + + $creditCard = array( + 'exp_date' => '02/2012', + 'card_num' => '6011000000000012', + 'card_code' => '452', + ); + + $transaction = array( + 'amount' => rand(100, 1000), + 'duplicate_window' => '10', + // 'email_customer' => 'true', + 'footer_email_receipt' => 'thank you for your business!', + 'header_email_receipt' => 'a copy of your receipt is below', + ); + + $order = array( + 'description' => 'Johns Bday Gift', + 'invoice_num' => '3123', + 'line_item' => 'item1<|>golf balls<|><|>2<|>18.95<|>Y', + ); + + $customer = (object)array(); + $customer->first_name = "Jane"; + $customer->last_name = "Smith"; + $customer->company = "Jane Smith Enterprises Inc."; + $customer->address = "20 Main Street"; + $customer->city = "San Francisco"; + $customer->state = "CA"; + $customer->zip = "94110"; + $customer->country = "US"; + $customer->phone = "415-555-5557"; + $customer->fax = "415-555-5556"; + $customer->email = "foo@example.com"; + $customer->cust_id = "55"; + $customer->customer_ip = "98.5.5.5"; + + $shipping_info = (object)array(); + $shipping_info->ship_to_first_name = "John"; + $shipping_info->ship_to_last_name = "Smith"; + $shipping_info->ship_to_company = "Smith Enterprises Inc."; + $shipping_info->ship_to_address = "10 Main Street"; + $shipping_info->ship_to_city = "San Francisco"; + $shipping_info->ship_to_state = "CA"; + $shipping_info->ship_to_zip = "94110"; + $shipping_info->ship_to_country = "US"; + $shipping_info->tax = "CA"; + $shipping_info->freight = "Freight<|>ground overnight<|>12.95"; + $shipping_info->duty = "Duty1<|>export<|>15.00"; + $shipping_info->tax_exempt = "false"; + $shipping_info->po_num = "12"; + + $sale = new AuthorizeNetAIM; + $sale->setFields($creditCard); + $sale->setFields($shipping_info); + $sale->setFields($customer); + $sale->setFields($order); + $sale->setFields($merchant); + $sale->setFields($transaction); + + $sale->addLineItem('item2', 'golf tees', 'titanium tees', '2', '2.95', 'Y'); + $sale->addLineItem('item3', 'golf shirt', 'red, large', '2', '3.95', 'Y'); + + $response = $sale->authorizeAndCapture(); + + $this->assertTrue($response->approved); + } + + public function testAllFieldsLongMethod() + { + $merchant = (object)array(); + $merchant->login = AUTHORIZENET_API_LOGIN_ID; + $merchant->tran_key = AUTHORIZENET_TRANSACTION_KEY; + $merchant->allow_partial_auth = "false"; + + $creditCard = array( + 'exp_date' => '02/2012', + 'card_num' => '6011000000000012', + 'card_code' => '452', + ); + + $transaction = array( + 'amount' => rand(100, 1000), + 'duplicate_window' => '10', + // 'email_customer' => 'true', + 'footer_email_receipt' => 'thank you for your business!', + 'header_email_receipt' => 'a copy of your receipt is below', + ); + + $order = array( + 'description' => 'Johns Bday Gift', + 'invoice_num' => '3123', + 'line_item' => 'item1<|>golf balls<|><|>2<|>18.95<|>Y', + ); + + $customer = (object)array(); + $customer->first_name = "Jane"; + $customer->last_name = "Smith"; + $customer->company = "Jane Smith Enterprises Inc."; + $customer->address = "20 Main Street"; + $customer->city = "San Francisco"; + $customer->state = "CA"; + $customer->zip = "94110"; + $customer->country = "US"; + $customer->phone = "415-555-5557"; + $customer->fax = "415-555-5556"; + $customer->email = "foo@example.com"; + $customer->cust_id = "55"; + $customer->customer_ip = "98.5.5.5"; + + $shipping_info = (object)array(); + $shipping_info->ship_to_first_name = "John"; + $shipping_info->ship_to_last_name = "Smith"; + $shipping_info->ship_to_company = "Smith Enterprises Inc."; + $shipping_info->ship_to_address = "10 Main Street"; + $shipping_info->ship_to_city = "San Francisco"; + $shipping_info->ship_to_state = "CA"; + $shipping_info->ship_to_zip = "94110"; + $shipping_info->ship_to_country = "US"; + $shipping_info->tax = "CA"; + $shipping_info->freight = "Freight<|>ground overnight<|>12.95"; + $shipping_info->duty = "Duty1<|>export<|>15.00"; + $shipping_info->tax_exempt = "false"; + $shipping_info->po_num = "12"; + + $sale = new AuthorizeNetAIM; + $sale->setFields($creditCard); + $sale->setFields($shipping_info); + $sale->setFields($customer); + $sale->setFields($order); + $sale->setFields($merchant); + $sale->setFields($transaction); + $response = $sale->authorizeAndCapture(); + + $this->assertTrue($response->approved); + } + + public function testResponseMethods() + { + $amount = rand(1, 1000); + $zipcode = "02301"; + + $sale = new AuthorizeNetAIM; + $sale->setFields( + array( + 'amount' => $amount, + 'card_num' => '6011000000000012', + 'exp_date' => '0415', + 'zip' => $zipcode, + ) + ); + + $sale->setCustomField("custom1", "custom1value"); + $sale->setCustomField("custom2", "custom2value"); + $result = $sale->authorizeAndCapture(); + $this->assertTrue($result->approved); + + $this->assertEquals("custom2value", $result->custom2); + $this->assertEquals($amount, $result->amount); + $this->assertEquals("CC", $result->method); + $this->assertEquals("auth_capture", $result->transaction_type); + $this->assertEquals("Discover", $result->card_type); + $this->assertEquals($zipcode, $result->zip_code); + } + + public function testSetBadField() + { + try { + $amount = rand(1, 1000); + $zipcode = "02301"; + + $sale = new AuthorizeNetAIM; + $sale->setFields( + array( + 'amount' => $amount, + 'card_num' => '6011000000000012', + 'exp_date' => '0415', + 'zipcode' => $zipcode, // Should actually be just "zip" + ) + ); + + $result = $sale->authorizeAndCapture(); + $this->assertTrue($result->approved); + // should have thrown an exception by now + $this->assertFalse(true); + } + catch (AuthorizeNetException $e){ + $this->assertTrue(true); + + } + } + +} + + +class AuthorizeNetAIM_Live_Test extends PHPUnit_Framework_TestCase +{ + + public function testAuthCaptureSetECheckMethod() + { + if (MERCHANT_LIVE_API_LOGIN_ID) { + // $this->markTestIncomplete('Depends on whether eChecks is enabled'); + $sale = new AuthorizeNetAIM(MERCHANT_LIVE_API_LOGIN_ID,MERCHANT_LIVE_TRANSACTION_KEY); + $sale->setSandbox(false); + $sale->test_request = 'TRUE'; + $sale->amount = "4.99"; + $sale->setECheck( + '121042882', + '123456789123', + 'CHECKING', + 'Bank of Earth', + 'Jane Doe', + 'WEB' + ); + $response = $sale->authorizeAndCapture(); + $this->assertEquals("ECHECK", $response->method); + $this->assertEquals("18", $response->response_reason_code); + // $this->assertTrue($response->approved); + } + } + + public function testAuthCaptureECheck() + { + if (MERCHANT_LIVE_API_LOGIN_ID) { + // $this->markTestIncomplete('Depends on whether eChecks is enabled'); + $sale = new AuthorizeNetAIM(MERCHANT_LIVE_API_LOGIN_ID,MERCHANT_LIVE_TRANSACTION_KEY); + $sale->setSandbox(false); + $sale->test_request = 'TRUE'; + $sale->setFields( + array( + 'amount' => rand(1, 1000), + 'method' => 'echeck', + 'bank_aba_code' => '121042882', + 'bank_acct_num' => '123456789123', + 'bank_acct_type' => 'CHECKING', + 'bank_name' => 'Bank of Earth', + 'bank_acct_name' => 'Jane Doe', + 'echeck_type' => 'WEB', + ) + ); + $response = $sale->authorizeAndCapture(); + $this->assertEquals("ECHECK", $response->method); + $this->assertEquals("18", $response->response_reason_code); + // $this->assertTrue($response->approved); + } + } + + public function testAuthCaptureLiveServerTestRequest() + { + if (MERCHANT_LIVE_API_LOGIN_ID) { + $sale = new AuthorizeNetAIM(MERCHANT_LIVE_API_LOGIN_ID,MERCHANT_LIVE_TRANSACTION_KEY); + $sale->setSandbox(false); + $sale->setFields( + array( + 'amount' => rand(1, 1000), + 'card_num' => '6011000000000012', + 'exp_date' => '0415' + ) + ); + $sale->setField('test_request', 'TRUE'); + $response = $sale->authorizeAndCapture(); + $this->assertTrue($response->approved); + } + } + + public function testAuthCaptureLiveServer() + { + if (MERCHANT_LIVE_API_LOGIN_ID) { + $sale = new AuthorizeNetAIM(MERCHANT_LIVE_API_LOGIN_ID,MERCHANT_LIVE_TRANSACTION_KEY); + $sale->setSandbox(false); + $sale->test_request = 'TRUE'; + $sale->setFields( + array( + 'amount' => rand(1, 1000), + 'card_num' => '6011000000000012', + 'exp_date' => '0415' + ) + ); + $response = $sale->authorizeAndCapture(); + $this->assertTrue($response->approved); + } + } + + public function testInvalidCredentials() + { + if (MERCHANT_LIVE_API_LOGIN_ID) { + // Post a response to live server using invalid credentials. + $sale = new AuthorizeNetAIM('a','a'); + $sale->setSandbox(false); + $sale->setFields( + array( + 'amount' => rand(1, 1000), + 'card_num' => '6011000000000012', + 'exp_date' => '0415' + ) + ); + $response = $sale->authorizeAndCapture(); + $this->assertTrue($response->error); + $this->assertEquals("13", $response->response_reason_code); + } + } + +} \ No newline at end of file diff --git a/anet_php_sdk/tests/AuthorizeNetARB_Test.php b/anet_php_sdk/tests/AuthorizeNetARB_Test.php new file mode 100755 index 0000000..ef120af --- /dev/null +++ b/anet_php_sdk/tests/AuthorizeNetARB_Test.php @@ -0,0 +1,201 @@ +name = "Short subscription"; + $subscription->intervalLength = "1"; + $subscription->intervalUnit = "months"; + $subscription->startDate = "2011-03-12"; + $subscription->totalOccurrences = "14"; + $subscription->amount = rand(1,100); + $subscription->creditCardCardNumber = "6011000000000012"; + $subscription->creditCardExpirationDate = "2018-10"; + $subscription->creditCardCardCode = "123"; + $subscription->billToFirstName = "john"; + $subscription->billToLastName = "doe"; + + // Create the subscription. + $request = new AuthorizeNetARB; + $response = $request->createSubscription($subscription); + $this->assertTrue($response->isOk()); + $subscription_id = $response->getSubscriptionId(); + + // Get the subscription status + $status_request = new AuthorizeNetARB; + $status_response = $status_request->getSubscriptionStatus($subscription_id); + $this->assertEquals("active",$status_response->getSubscriptionStatus()); + + // Update the subscription + $update_request = new AuthorizeNetARB; + $updated_subscription_info = new AuthorizeNet_Subscription; + $updated_subscription_info->billToFirstName = "jane"; + $updated_subscription_info->billToLastName = "smith"; + $updated_subscription_info->creditCardCardNumber = "6011000000000012"; + $updated_subscription_info->creditCardExpirationDate = "2019-10"; + $updated_subscription_info->creditCardCardCode = "423"; + $update_response = $update_request->updateSubscription($subscription_id, $updated_subscription_info); + $this->assertTrue($update_response->isOk()); + + // Cancel the subscription + $cancellation = new AuthorizeNetARB; + $cancel_response = $cancellation->cancelSubscription($subscription_id); + $this->assertTrue($cancel_response->isOk()); + + // Get the subscription status + $status_request = new AuthorizeNetARB; + $status_response = $status_request->getSubscriptionStatus($subscription_id); + $this->assertEquals("canceled", $status_response->getSubscriptionStatus()); + + } + + + public function testCreateSubscriptionLong() + { + + $subscription = new AuthorizeNet_Subscription; + $subscription->name = "test subscription"; + $subscription->intervalLength = "1"; + $subscription->intervalUnit = "months"; + $subscription->startDate = "2015-03-12"; + $subscription->totalOccurrences = "14"; + $subscription->trialOccurrences = ""; + $subscription->amount = "6.99"; + $subscription->trialAmount = ""; + $subscription->creditCardCardNumber = "6011000000000012"; + $subscription->creditCardExpirationDate = "2018-10"; + $subscription->creditCardCardCode = "123"; + $subscription->bankAccountAccountType = ""; + $subscription->bankAccountRoutingNumber = ""; + $subscription->bankAccountAccountNumber = ""; + $subscription->bankAccountNameOnAccount = ""; + $subscription->bankAccountEcheckType = ""; + $subscription->bankAccountBankName = ""; + $subscription->orderInvoiceNumber = ""; + $subscription->orderDescription = ""; + $subscription->customerId = "12"; + $subscription->customerEmail = "foo@domain.com"; + $subscription->customerPhoneNumber = ""; + $subscription->customerFaxNumber = ""; + $subscription->billToFirstName = "john"; + $subscription->billToLastName = "doe"; + $subscription->billToCompany = ""; + $subscription->billToAddress = ""; + $subscription->billToCity = ""; + $subscription->billToState = ""; + $subscription->billToZip = ""; + $subscription->billToCountry = ""; + $subscription->shipToFirstName = ""; + $subscription->shipToLastName = ""; + $subscription->shipToCompany = ""; + $subscription->shipToAddress = ""; + $subscription->shipToCity = ""; + $subscription->shipToState = ""; + $subscription->shipToZip = ""; + $subscription->shipToCountry = ""; + + $refId = "ref" . time(); + + // Create the request and send it. + $request = new AuthorizeNetARB; + $request->setRefId($refId); + $response = $request->createSubscription($subscription); + + + // Handle the response. + + $this->assertTrue($response->isOk()); + $this->assertEquals($response->getMessageCode(), "I00001"); + $this->assertEquals($response->getMessageText(), "Successful."); + $this->assertEquals($response->getRefId(), $refId); + $this->assertEquals($response->getResultCode(), "Ok"); + + // Cancel the subscription to avoid duplicate errors in future + + $cancellation = new AuthorizeNetARB; + $cancellation->setRefId($refId); + $cancel_response = $cancellation->cancelSubscription($response->getSubscriptionId()); + + + + $this->assertTrue($cancel_response->isOk()); + + } + + public function testCreateSubscriptionECheck() + { + + $subscription = new AuthorizeNet_Subscription; + $subscription->name = "my test echeck subscription"; + $subscription->intervalLength = "1"; + $subscription->intervalUnit = "months"; + $subscription->startDate = "2015-04-12"; + $subscription->totalOccurrences = "2"; + $subscription->trialOccurrences = ""; + $subscription->amount = "11.99"; + $subscription->trialAmount = ""; + $subscription->bankAccountAccountType = "checking"; + $subscription->bankAccountRoutingNumber = "121000248"; + $subscription->bankAccountAccountNumber = "12345678"; + $subscription->bankAccountNameOnAccount = "John Doe"; + $subscription->bankAccountEcheckType = "WEB"; + $subscription->bankAccountBankName = "Bank of Earth"; + $subscription->orderInvoiceNumber = ""; + $subscription->orderDescription = ""; + $subscription->customerId = "12"; + $subscription->customerEmail = "foo@domain.com"; + $subscription->customerPhoneNumber = ""; + $subscription->customerFaxNumber = ""; + $subscription->billToFirstName = "john"; + $subscription->billToLastName = "doe"; + $subscription->billToCompany = ""; + $subscription->billToAddress = ""; + $subscription->billToCity = ""; + $subscription->billToState = ""; + $subscription->billToZip = ""; + $subscription->billToCountry = ""; + $subscription->shipToFirstName = ""; + $subscription->shipToLastName = ""; + $subscription->shipToCompany = ""; + $subscription->shipToAddress = ""; + $subscription->shipToCity = ""; + $subscription->shipToState = ""; + $subscription->shipToZip = ""; + $subscription->shipToCountry = ""; + + $refId = "ref" . time(); + + // Create the request and send it. + $request = new AuthorizeNetARB; + $request->setRefId($refId); + + $response = $request->createSubscription($subscription); + + + // Handle the response. + + $this->assertTrue($response->isOk()); + $this->assertEquals($response->getMessageCode(), "I00001"); + $this->assertEquals($response->getMessageText(), "Successful."); + $this->assertEquals($response->getRefId(), $refId); + $this->assertEquals($response->getResultCode(), "Ok"); + + + // Cancel the subscription to avoid duplicate errors in future + + + $cancellation = new AuthorizeNetARB; + $cancellation->setRefId($refId); + $cancel_response = $cancellation->cancelSubscription($response->getSubscriptionId()); + + $this->assertTrue($cancel_response->isOk()); + + } + +} \ No newline at end of file diff --git a/anet_php_sdk/tests/AuthorizeNetCIM_Test.php b/anet_php_sdk/tests/AuthorizeNetCIM_Test.php new file mode 100755 index 0000000..75c58d9 --- /dev/null +++ b/anet_php_sdk/tests/AuthorizeNetCIM_Test.php @@ -0,0 +1,355 @@ +getCustomerProfileIds(); + $customers = $response->getCustomerProfileIds(); + + foreach ($customers as $customer) { + $response = $request->deleteCustomerProfile($customer); + $this->assertTrue($response->isOk()); + } + + + } + + public function testXPath() + { + + // Create new customer profile + $request = new AuthorizeNetCIM; + $customerProfile = new AuthorizeNetCustomer; + $customerProfile->description = $description = "Some Description of customer 2"; + $customerProfile->merchantCustomerId = $merchantCustomerId = time().rand(1,150); + $customerProfile->email = $email = "test2@domain.com"; + + // Add payment profile. + $paymentProfile = new AuthorizeNetPaymentProfile; + $paymentProfile->customerType = "individual"; + $paymentProfile->payment->creditCard->cardNumber = "4111111111111111"; + $paymentProfile->payment->creditCard->expirationDate = "2021-04"; + $customerProfile->paymentProfiles[] = $paymentProfile; + + $response = $request->createCustomerProfile($customerProfile); + $this->assertTrue($response->isOk()); + $array = $response->xpath('customerProfileId'); + $this->assertEquals($response->getCustomerProfileId(), "{$array[0]}"); + + $profile = $request->getCustomerProfile($response->getCustomerProfileId()); + + $this->assertEquals($email, (string)array_pop($profile->xpath('profile/email'))); + $this->assertEquals($email, (string)array_pop($profile->xpath('profile/email'))); + $this->assertEquals($description, (string)array_pop($profile->xpath('profile/description'))); + $this->assertEquals($merchantCustomerId, (string)array_pop($profile->xpath('profile/merchantCustomerId'))); + + } + + + + public function testCreateCustomerProfile() + { + // Create new customer profile + $request = new AuthorizeNetCIM; + $customerProfile = new AuthorizeNetCustomer; + $customerProfile->description = "Description of customer"; + $customerProfile->merchantCustomerId = time().rand(1,100); + $customerProfile->email = "blahbla@domain.com"; + + // Add payment profile. + $paymentProfile = new AuthorizeNetPaymentProfile; + $paymentProfile->customerType = "individual"; + $paymentProfile->payment->creditCard->cardNumber = "4111111111111111"; + $paymentProfile->payment->creditCard->expirationDate = "2015-10"; + $customerProfile->paymentProfiles[] = $paymentProfile; + + // Add another payment profile. + $paymentProfile2 = new AuthorizeNetPaymentProfile; + $paymentProfile2->customerType = "business"; + $paymentProfile2->payment->bankAccount->accountType = "businessChecking"; + $paymentProfile2->payment->bankAccount->routingNumber = "121042882"; + $paymentProfile2->payment->bankAccount->accountNumber = "123456789123"; + $paymentProfile2->payment->bankAccount->nameOnAccount = "Jane Doe"; + $paymentProfile2->payment->bankAccount->echeckType = "WEB"; + $paymentProfile2->payment->bankAccount->bankName = "Pandora Bank"; + $customerProfile->paymentProfiles[] = $paymentProfile2; + + + // Add shipping address. + $address = new AuthorizeNetAddress; + $address->firstName = "john"; + $address->lastName = "Doe"; + $address->company = "John Doe Company"; + $address->address = "1 Main Street"; + $address->city = "Boston"; + $address->state = "MA"; + $address->zip = "02412"; + $address->country = "USA"; + $address->phoneNumber = "555-555-5555"; + $address->faxNumber = "555-555-5556"; + $customerProfile->shipToList[] = $address; + + // Add another shipping address. + $address2 = new AuthorizeNetAddress; + $address2->firstName = "jane"; + $address2->lastName = "Doe"; + $address2->address = "11 Main Street"; + $address2->city = "Boston"; + $address2->state = "MA"; + $address2->zip = "02412"; + $address2->country = "USA"; + $address2->phoneNumber = "555-512-5555"; + $address2->faxNumber = "555-523-5556"; + $customerProfile->shipToList[] = $address2; + + $response = $request->createCustomerProfile($customerProfile); + $this->assertTrue($response->isOk()); + $this->assertEquals(2, count($response->getCustomerShippingAddressIds())); + $this->assertEquals(2, count($response->getCustomerPaymentProfileIds())); + $customerProfileId = $response->getCustomerProfileId(); + + $this->assertEquals($response->getCustomerProfileId(), "{$response->xml->customerProfileId}"); + + + + $response = $request->getCustomerProfile($customerProfileId); + $this->assertEquals($customerProfile->description, (string)$response->xml->profile->description); + $this->assertEquals($customerProfile->merchantCustomerId, (string)$response->xml->profile->merchantCustomerId); + $this->assertEquals($customerProfile->email, (string)$response->xml->profile->email); + $this->assertEquals(substr($customerProfile->paymentProfiles[0]->payment->creditCard->cardNumber, -4, 4), substr((string)$response->xml->profile->paymentProfiles->payment->creditCard->cardNumber, -4, 4)); + + + + $this->assertTrue($response->isOk()); + + + } + + public function testGetCustomerProfile() + { + // Create new customer profile + $request = new AuthorizeNetCIM; + $customerProfile = new AuthorizeNetCustomer; + $customerProfile->description = "Description of customer"; + $customerProfile->merchantCustomerId = time().rand(1,10); + $customerProfile->email = "blahlah@domain.com"; + $response = $request->createCustomerProfile($customerProfile); + $this->assertTrue($response->isOk()); + $customerProfileId = $response->getCustomerProfileId(); + + $response = $request->getCustomerProfile($customerProfileId); + + $this->assertTrue($response->isOk()); + + } + + public function testCreateCustomerProfileWithValidationMode() + { + // Create new customer profile + $request = new AuthorizeNetCIM; + $customerProfile = new AuthorizeNetCustomer; + $customerProfile->description = "Some Description of customer 2"; + $customerProfile->merchantCustomerId = time().rand(1,10); + $customerProfile->email = "test2@domain.com"; + + // Add payment profile. + $paymentProfile = new AuthorizeNetPaymentProfile; + $paymentProfile->customerType = "individual"; + $paymentProfile->payment->creditCard->cardNumber = "4111111111111111"; + $paymentProfile->payment->creditCard->expirationDate = "2015-04"; + $customerProfile->paymentProfiles[] = $paymentProfile; + + // Add another payment profile. + $paymentProfile2 = new AuthorizeNetPaymentProfile; + $paymentProfile2->customerType = "individual"; + $paymentProfile2->payment->creditCard->cardNumber = "4222222222222"; + $paymentProfile2->payment->creditCard->expirationDate = "2019-10"; + $customerProfile->paymentProfiles[] = $paymentProfile2; + + $response = $request->createCustomerProfile($customerProfile, "testMode"); + + $this->assertTrue($response->isOk()); + + $validationResponses = $response->getValidationResponses(); + foreach ($validationResponses as $vr) { + $this->assertTrue($vr->approved); + } + + } + + public function testUpdateSplitTenderGroup() + { + // Create a partial auth test transaction + $amount = 4.92; + + $sale = new AuthorizeNetAIM; + $sale->amount = $amount; + $sale->card_num = '4222222222222'; + $sale->zip = "46225"; + $sale->exp_date = '04/24'; + $sale->allow_partial_auth = true; + $response = $sale->authorizeAndCapture(); + $this->assertTrue($response->held); + $this->assertEquals("1.23", $response->amount); + $this->assertEquals($amount, $response->requested_amount); + $split_tender_id = $response->split_tender_id; + + // Charge a bit more + $sale = new AuthorizeNetAIM; + $sale->amount = 1.23; + $sale->card_num = '6011000000000012'; + $sale->exp_date = '04/26'; + $sale->split_tender_id = $split_tender_id; + $sale->allow_partial_auth = true; + $response = $sale->authorizeAndCapture(); + $this->assertTrue($response->approved); + + // Void the group of partial auths. + + $request = new AuthorizeNetCIM; + $response = $request->updateSplitTenderGroup($split_tender_id, "voided"); + $this->assertTrue($response->isOk()); + } + + public function testAll() + { + // Create new customer profile + $request = new AuthorizeNetCIM; + $customerProfile = new AuthorizeNetCustomer; + $customerProfile->description = "Description of customer"; + $customerProfile->merchantCustomerId = time().rand(1,10); + $customerProfile->email = "blahblahblah@domain.com"; + $response = $request->createCustomerProfile($customerProfile); + $this->assertTrue($response->isOk()); + $customerProfileId = $response->getCustomerProfileId(); + + // Update customer profile + $customerProfile->description = "New description"; + $customerProfile->email = "newemail@domain.com"; + $response = $request->updateCustomerProfile($customerProfileId, $customerProfile); + $this->assertTrue($response->isOk()); + + // Add payment profile. + $paymentProfile = new AuthorizeNetPaymentProfile; + $paymentProfile->customerType = "individual"; + $paymentProfile->payment->creditCard->cardNumber = "4111111111111111"; + $paymentProfile->payment->creditCard->expirationDate = "2015-10"; + $response = $request->createCustomerPaymentProfile($customerProfileId, $paymentProfile); + $this->assertTrue($response->isOk()); + $paymentProfileId = $response->getPaymentProfileId(); + + // Update payment profile. + $paymentProfile->payment->creditCard->cardNumber = "4111111111111111"; + $paymentProfile->payment->creditCard->expirationDate = "2017-11"; + $response = $request->updateCustomerPaymentProfile($customerProfileId,$paymentProfileId, $paymentProfile); + $this->assertTrue($response->isOk()); + + // Add shipping address. + $address = new AuthorizeNetAddress; + $address->firstName = "john"; + $address->lastName = "Doe"; + $address->company = "John Doe Company"; + $address->address = "1 Main Street"; + $address->city = "Boston"; + $address->state = "MA"; + $address->zip = "02412"; + $address->country = "USA"; + $address->phoneNumber = "555-555-5555"; + $address->faxNumber = "555-555-5556"; + $response = $request->createCustomerShippingAddress($customerProfileId, $address); + $this->assertTrue($response->isOk()); + $customerAddressId = $response->getCustomerAddressId(); + + // Update shipping address. + $address->address = "2 First Street"; + $response = $request->updateCustomerShippingAddress($customerProfileId, $customerAddressId, $address); + $this->assertTrue($response->isOk()); + + // Create Auth & Capture Transaction + $transaction = new AuthorizeNetTransaction; + $transaction->amount = "9.79"; + $transaction->customerProfileId = $customerProfileId; + $transaction->customerPaymentProfileId = $paymentProfileId; + $transaction->customerShippingAddressId = $customerAddressId; + + $lineItem = new AuthorizeNetLineItem; + $lineItem->itemId = "4"; + $lineItem->name = "Cookies"; + $lineItem->description = "Chocolate Chip"; + $lineItem->quantity = "4"; + $lineItem->unitPrice = "1.00"; + $lineItem->taxable = "true"; + + $lineItem2 = new AuthorizeNetLineItem; + $lineItem2->itemId = "4"; + $lineItem2->name = "Cookies"; + $lineItem2->description= "Peanut Butter"; + $lineItem2->quantity = "4"; + $lineItem2->unitPrice = "1.00"; + $lineItem2->taxable = "true"; + + $transaction->lineItems[] = $lineItem; + $transaction->lineItems[] = $lineItem2; + + + $response = $request->createCustomerProfileTransaction("AuthCapture", $transaction); + $this->assertTrue($response->isOk()); + $transactionResponse = $response->getTransactionResponse(); + $this->assertTrue($transactionResponse->approved); + $transactionId = $transactionResponse->transaction_id; + + // Void the transaction + $transaction = new AuthorizeNetTransaction; + $transaction->transId = $transactionId; + $response = $request->createCustomerProfileTransaction("Void", $transaction); + $this->assertTrue($response->isOk()); + $transactionResponse = $response->getTransactionResponse(); + $this->assertTrue($transactionResponse->approved); + + + // Delete Shipping Address + $response = $request->deleteCustomerShippingAddress($customerProfileId, $customerAddressId); + $this->assertTrue($response->isOk()); + + // Delete payment profile. + $response = $request->deleteCustomerPaymentProfile($customerProfileId, $paymentProfileId); + $this->assertTrue($response->isOk()); + + + // Delete the profile id for future testing. + $response = $request->deleteCustomerProfile($customerProfileId); + $this->assertTrue($response->isOk()); + } + + + + + public function testGetCustomerProfileIds() + { + // Create new customer profile + $request = new AuthorizeNetCIM; + $customerProfile = new AuthorizeNetCustomer; + $customerProfile->description = "Description of customer"; + $customerProfile->merchantCustomerId = time().rand(1,10); + $customerProfile->email = "blahblahblah@domain.com"; + $response = $request->createCustomerProfile($customerProfile); + $this->assertTrue($response->isOk()); + $customerProfileId = $response->getCustomerProfileId(); + + $response = $request->getCustomerProfileIds(); + $this->assertTrue($response->isOk()); + $this->assertTrue(in_array($customerProfileId, $response->getCustomerProfileIds())); + + + } + + + + +} \ No newline at end of file diff --git a/anet_php_sdk/tests/AuthorizeNetCP_Test.php b/anet_php_sdk/tests/AuthorizeNetCP_Test.php new file mode 100755 index 0000000..aa8c580 --- /dev/null +++ b/anet_php_sdk/tests/AuthorizeNetCP_Test.php @@ -0,0 +1,179 @@ +setFields( + array( + 'amount' => rand(1, 1000), + 'card_num' => '4111111111111111', + 'exp_date' => '0415', + 'device_type' => '4', + ) + ); + $response = $sale->authorizeAndCapture(); + $this->assertTrue($response->approved); + } + + // public function testMd5() + // { + // return; + // $sale = new AuthorizeNetCP(CP_API_LOGIN_ID, CP_TRANSACTION_KEY); + // $sale->setFields( + // array( + // 'amount' => rand(1, 1000), + // 'card_num' => '4111111111111111', + // 'exp_date' => '0415', + // 'device_type' => '4', + // ) + // ); + // $response = $sale->authorizeAndCapture(); + // $this->assertTrue($response->approved); + // $this->assertTrue($response->isAuthorizeNet(CP_API_LOGIN_ID)); + // } + + public function testAuthCaptureTrack1() + { + $sale = new AuthorizeNetCP(CP_API_LOGIN_ID, CP_TRANSACTION_KEY); + $sale->setFields( + array( + 'amount' => rand(1, 1000), + 'device_type' => '4', + ) + ); + $sale->setTrack1Data('%B4111111111111111^CARDUSER/JOHN^1803101000000000020000831000000?'); + $response = $sale->authorizeAndCapture(); + $this->assertTrue($response->approved); + } + + public function testAuthCaptureTrack2() + { + $sale = new AuthorizeNetCP(CP_API_LOGIN_ID, CP_TRANSACTION_KEY); + $sale->setFields( + array( + 'amount' => rand(1, 1000), + 'device_type' => '4', + ) + ); + $sale->setTrack2Data('4111111111111111=1803101000020000831?'); + $response = $sale->authorizeAndCapture(); + $this->assertTrue($response->approved); + } + + public function testAuthCaptureTrack2Error() + { + $sale = new AuthorizeNetCP(CP_API_LOGIN_ID, CP_TRANSACTION_KEY); + $sale->setFields( + array( + 'amount' => rand(1, 1000), + 'device_type' => '4', + ) + ); + $sale->setTrack2Data('4411111111111111=1803101000020000831?'); + $response = $sale->authorizeAndCapture(); + $this->assertFalse($response->approved); + $this->assertTrue($response->error); + $this->assertEquals(6, $response->response_reason_code); + } + + public function testResponseFields() + { + $sale = new AuthorizeNetCP(CP_API_LOGIN_ID, CP_TRANSACTION_KEY); + $sale->setFields( + array( + 'amount' => rand(1, 1000), + 'device_type' => '4', + ) + ); + $sale->user_ref = $user_ref = "someCustomVariable123"; + $sale->setTrack1Data('%B4111111111111111^CARDUSER/JOHN^1803101000000000020000831000000?'); + $response = $sale->authorizeAndCapture(); + + + $this->assertTrue($response->approved); + $this->assertEquals('1.0',$response->version); + $this->assertEquals('1',$response->response_code); + $this->assertEquals('1',$response->response_reason_code); + $this->assertEquals('(TESTMODE) This transaction has been approved.',$response->response_reason_text); + $this->assertEquals('000000',$response->authorization_code); + $this->assertEquals('P',$response->avs_code); + $this->assertEquals('',$response->card_code_response); + $this->assertEquals('0',$response->transaction_id); + $this->assertStringMatchesFormat('%x',$response->md5_hash); + $this->assertEquals($user_ref, $response->user_ref); + $this->assertEquals('XXXX1111',$response->card_num); + $this->assertEquals('Visa',$response->card_type); + + + } + + public function testXmlResponse() + { + $sale = new AuthorizeNetCP(CP_API_LOGIN_ID, CP_TRANSACTION_KEY); + $sale->setFields( + array( + 'amount' => rand(1, 1000), + 'device_type' => '4', + 'response_format' => '0', + ) + ); + $sale->user_ref = $user_ref = "dummyvalue323"; + $sale->setTrack1Data('%B4111111111111111^CARDUSER/JOHN^1803101000000000020000831000000?'); + $response = $sale->authorizeAndCapture(); + + + $this->assertTrue($response->approved); + $this->assertEquals('1.0',$response->version); + $this->assertEquals('1',$response->response_code); + $this->assertEquals('1',$response->response_reason_code); + $this->assertEquals('This transaction has been approved.',$response->response_reason_text); + $this->assertEquals('000000',$response->authorization_code); + $this->assertEquals('P',$response->avs_code); + $this->assertEquals('',$response->card_code_response); + $this->assertEquals('0',$response->transaction_id); + $this->assertStringMatchesFormat('%x',$response->md5_hash); + $this->assertEquals($user_ref, $response->user_ref); + $this->assertEquals('XXXX1111',$response->card_num); + $this->assertEquals('Visa',$response->card_type); + + + } + + public function testXmlResponseFailure() + { + $sale = new AuthorizeNetCP(CP_API_LOGIN_ID, CP_TRANSACTION_KEY); + $sale->setFields( + array( + 'amount' => rand(1, 1000), + 'device_type' => '4', + 'response_format' => '0', + ) + ); + $sale->user_ref = $user_ref = "dummyvalue323"; + $sale->setTrack1Data('%B4111111111111^CARDUSER/JOHN^1803101000000000020000831000000?'); + $response = $sale->authorizeAndCapture(); + + + $this->assertTrue($response->error); + $this->assertEquals('1.0',$response->version); + $this->assertEquals('3',$response->response_code); + $this->assertEquals('6',$response->response_reason_code); + $this->assertEquals('The credit card number is invalid.',$response->response_reason_text); + $this->assertEquals('000000',$response->authorization_code); + $this->assertEquals('P',$response->avs_code); + $this->assertEquals('',$response->card_code_response); + $this->assertEquals('0',$response->transaction_id); + $this->assertStringMatchesFormat('%x',$response->md5_hash); + $this->assertEquals($user_ref, $response->user_ref); + $this->assertEquals('XXXX1111',$response->card_num); + + + } + + +} \ No newline at end of file diff --git a/anet_php_sdk/tests/AuthorizeNetDPM_Test.php b/anet_php_sdk/tests/AuthorizeNetDPM_Test.php new file mode 100755 index 0000000..78b7e5a --- /dev/null +++ b/anet_php_sdk/tests/AuthorizeNetDPM_Test.php @@ -0,0 +1,25 @@ +assertEquals("db88bbebb8f699acdbe70daad897a68a",AuthorizeNetDPM::getFingerprint("123","123","123","123","123")); + } + + public function testGetCreditCardForm() + { + $fp_sequence = "12345"; + $this->assertContains('',AuthorizeNetDPM::getCreditCardForm('2', $fp_sequence, 'ht', '2', '1', true)); + } + + public function testRelayResponseUrl() + { + $return_url = 'http://yourdomain.com'; + + $this->assertContains('window.location="'.$return_url.'";', AuthorizeNetDPM::getRelayResponseSnippet($return_url)); + } + +} \ No newline at end of file diff --git a/anet_php_sdk/tests/AuthorizeNetSIM_Test.php b/anet_php_sdk/tests/AuthorizeNetSIM_Test.php new file mode 100755 index 0000000..62ef5a3 --- /dev/null +++ b/anet_php_sdk/tests/AuthorizeNetSIM_Test.php @@ -0,0 +1,56 @@ +assertEquals("8FC33C32ABB3EDD8BBC4BE3E904CB47E",$message->generateHash()); + } + + public function testAmount() + { + $_POST['x_amount'] = "4.12"; + $_POST['x_response_code'] = "1"; + $message = new AuthorizeNetSIM("528udYYwz","test"); + $this->assertEquals("4.12",$message->amount); + $this->assertTrue($message->approved); + } + + public function testIsAuthNet() + { + $_POST['x_amount'] = "4.12"; + $_POST['x_trans_id'] = "123"; + $_POST['x_MD5_Hash'] = "8FC33C32ABB3EDD8BBC4BE3E904CB47E"; + $message = new AuthorizeNetSIM("528udYYwz","test"); + $this->assertTrue($message->isAuthorizeNet()); + + + $_POST['x_amount'] = "4.12"; + $_POST['x_trans_id'] = "123"; + $_POST['x_MD5_Hash'] = "8FC33C32BB3EDD8BBC4BE3E904CB47E"; + $message = new AuthorizeNetSIM("528udYYwz","test"); + $this->assertFalse($message->isAuthorizeNet()); + } + + public function testIsError() + { + $_POST['x_amount'] = "4.12"; + $_POST['x_response_code'] = "3"; + $_POST['x_ship_to_state'] = "CA"; + $message = new AuthorizeNetSIM("528udYYwz","test"); + $this->assertEquals("3",$message->response_code); + $this->assertTrue($message->error); + $this->assertFalse($message->approved); + $this->assertEquals("CA",$message->ship_to_state); + } + + + + +} \ No newline at end of file diff --git a/anet_php_sdk/tests/AuthorizeNetSSL_Test.php b/anet_php_sdk/tests/AuthorizeNetSSL_Test.php new file mode 100755 index 0000000..b4191e1 --- /dev/null +++ b/anet_php_sdk/tests/AuthorizeNetSSL_Test.php @@ -0,0 +1,23 @@ +&1", $output, $return_value); + $this->assertEquals(0, $return_value); + $this->assertTrue(in_array('Verify return code: 0 (ok)', array_map('trim', $output))); + exec("echo | openssl s_client -connect apitest.authorize.net:443 -showcerts -verify 10 -CAfile ../lib/ssl/cert.pem 2>&1", $output, $return_value); + $this->assertEquals(0, $return_value); + $this->assertTrue(in_array('Verify return code: 0 (ok)', array_map('trim', $output))); + } + + public function testLiveSSLCertIsValid() + { + exec("echo | openssl s_client -connect secure.authorize.net:443 -showcerts -verify 10 -CAfile ../lib/ssl/cert.pem 2>&1", $output, $return_value); + $this->assertEquals(0, $return_value); + $this->assertTrue(in_array('Verify return code: 0 (ok)', array_map('trim', $output))); + exec("echo | openssl s_client -connect api.authorize.net:443 -showcerts -verify 10 -CAfile ../lib/ssl/cert.pem 2>&1", $output, $return_value); + $this->assertEquals(0, $return_value); + $this->assertTrue(in_array('Verify return code: 0 (ok)', array_map('trim', $output))); + } +} diff --git a/anet_php_sdk/tests/AuthorizeNetTD_Test.php b/anet_php_sdk/tests/AuthorizeNetTD_Test.php new file mode 100755 index 0000000..4e12168 --- /dev/null +++ b/anet_php_sdk/tests/AuthorizeNetTD_Test.php @@ -0,0 +1,96 @@ +getSettledBatchList(); + $this->assertTrue($response->isOk()); + $this->assertEquals("I00001",(string)array_pop($response->xpath("messages/message/code"))); + } + + public function testGetSettledBatchListIncludeStatistics() + { + $request = new AuthorizeNetTD; + $response = $request->getSettledBatchList(true); + $this->assertTrue($response->isOk()); + } + + public function testGetSettledBatchListForMonth() + { + $request = new AuthorizeNetTD; + $response = $request->getSettledBatchListForMonth(); + $this->assertTrue($response->isOk()); + } + + public function testGetTransactionsForDay() + { + $request = new AuthorizeNetTD; + $transactions = $request->getTransactionsForDay(12, 8, 2010); + $this->assertTrue(is_array($transactions)); + } + + public function testGetTransactionList() + { + $request = new AuthorizeNetTD; + $response = $request->getSettledBatchList(); + $this->assertTrue($response->isOk()); + $batches = $response->xpath("batchList/batch"); + $batch_id = (string)$batches[0]->batchId; + $response = $request->getTransactionList($batch_id); + $this->assertTrue($response->isOk()); + } + + public function testGetTransactionDetails() + { + $sale = new AuthorizeNetAIM; + $amount = rand(1, 100); + $response = $sale->authorizeAndCapture($amount, '4012888818888', '04/17'); + $this->assertTrue($response->approved); + + $transId = $response->transaction_id; + + $request = new AuthorizeNetTD; + $response = $request->getTransactionDetails($transId); + $this->assertTrue($response->isOk()); + + $this->assertEquals($transId, (string)$response->xml->transaction->transId); + $this->assertEquals($amount, (string)$response->xml->transaction->authAmount); + $this->assertEquals("Visa", (string)$response->xml->transaction->payment->creditCard->cardType); + + } + + public function testGetUnsettledTransactionList() + { + $sale = new AuthorizeNetAIM; + $amount = rand(1, 100); + $response = $sale->authorizeAndCapture($amount, '4012888818888', '04/17'); + $this->assertTrue($response->approved); + + $request = new AuthorizeNetTD; + $response = $request->getUnsettledTransactionList(); + $this->assertTrue($response->isOk()); + $this->assertTrue($response->xml->transactions->count() >= 1); + } + + public function testGetBatchStatistics() + { + $request = new AuthorizeNetTD; + $response = $request->getSettledBatchList(); + $this->assertTrue($response->isOk()); + $this->assertTrue($response->xml->batchList->count() >= 1); + $batchId = $response->xml->batchList->batch[0]->batchId; + + $request = new AuthorizeNetTD; + $response = $request->getBatchStatistics($batchId); + $this->assertTrue($response->isOk()); + } + + +} \ No newline at end of file diff --git a/anet_php_sdk/tests/AuthorizeNet_SOAP_Test.php b/anet_php_sdk/tests/AuthorizeNet_SOAP_Test.php new file mode 100755 index 0000000..20b87d7 --- /dev/null +++ b/anet_php_sdk/tests/AuthorizeNet_SOAP_Test.php @@ -0,0 +1,31 @@ +assertTrue($client->saveSoapDocumentation($filepath) > 1); + unlink($filepath); + } + + public function testGetCustomerIds () + { + $client = new AuthorizeNetSOAP; + $result = $client->GetCustomerProfileIds( + array( + 'merchantAuthentication' => array( + 'name' => AUTHORIZENET_API_LOGIN_ID, + 'transactionKey' => AUTHORIZENET_TRANSACTION_KEY, + ), + ) + ); + $customer_ids = $result->GetCustomerProfileIdsResult->ids->long; + $this->assertTrue(is_array($customer_ids)); + } + +} \ No newline at end of file diff --git a/anet_php_sdk/tests/AuthorizeNet_Test_Config.php b/anet_php_sdk/tests/AuthorizeNet_Test_Config.php new file mode 100755 index 0000000..1038042 --- /dev/null +++ b/anet_php_sdk/tests/AuthorizeNet_Test_Config.php @@ -0,0 +1,47 @@ +

AuthorizeNet_SOAP_

  • Save soap doc
  • Get customer ids

AuthorizeNetAIM_Sandbox_

  • Auth capture
  • Auth capture alternate
  • Auth capture short
  • Auth capture partial
  • Auth capture short no verify
  • Aim response fields
  • Void
  • Void short
  • Auth capture e check sandbox
  • Amex
  • Discover
  • Visa
  • Auth only
  • Auth capture void
  • Advanced a i m
  • Auth capture custom fields
  • Encap character
  • Auth capture set multiple custom fields
  • Invalid merchant credentials
  • Invalid credit card
  • Error
  • Multiple line items
  • All fields long method
  • Response methods
  • Set bad field

AuthorizeNetAIM_Live_

  • Auth capture set e check method
  • Auth capture e check
  • Auth capture live server test request
  • Auth capture live server
  • Invalid credentials

AuthorizeNetARB_

  • All methods
  • Create subscription long
  • Create subscription e check

AuthorizeNetCIM_

  • Delete all customer profiles
  • X path
  • Create customer profile
  • Get customer profile
  • Create customer profile with validation mode
  • Update split tender group
  • All
  • Get customer profile ids

AuthorizeNetCP_

  • Auth capture
  • Auth capture track 1
  • Auth capture track
  • Auth capture track 2 error
  • Response fields
  • Xml response
  • Xml response failure

AuthorizeNetDPM_

  • Generate fingerprint
  • Get credit card form
  • Relay response url

AuthorizeNetSIM_

  • Generate hash
  • Amount
  • Is auth net
  • Is error

AuthorizeNetTD_

  • Get settled batch list
  • Get settled batch list include statistics
  • Get settled batch list for month
  • Get transactions for day
  • Get transaction list
  • Get transaction details
\ No newline at end of file diff --git a/css/glm-donate-admin.css b/css/glm-donate-admin.css new file mode 100755 index 0000000..254f0ac --- /dev/null +++ b/css/glm-donate-admin.css @@ -0,0 +1,302 @@ +/* +* GLM-donate - Default Stylesheet +*/ + +h1.donate-title { + color:#ddd; + margin-bottom:20px; +} + +#glm-donate-tab-settings th { + width:280px; +} + +#glm-donate-tab-settings ul { + padding-left:20px; +} + +#glm-donate-tab-settings li { + list-style: disc; + list-style-type:none; +} + +/* jQuery Tabs */ + +ul#glm-donate-tabs-nav { + position:relative; + margin-bottom:10px; + height:41px; + overflow:visible; + border-bottom:1px solid #ddd +} + +ul#glm-donate-tabs-nav li { + text-align:center; + position:relative; + display:block; + float:left; + width:130px; + height:40px; + margin:0 10px 0 2px; + border-top:1px solid #cccccc; + border-left:1px solid #cccccc; + border-right:1px solid #cccccc; + background: #f2f2f2; + overflow:visible; + -moz-border-radius-topleft: 7px; + -moz-border-radius-topright: 0px; + -webkit-border-radius: 7px 7px 0px 0px; + border-radius: 7px 7px 0px 0px; + opacity:0.8; +} + +ul#glm-donate-tabs-nav li.ui-state-active, +ul#glm-donate-tabs-nav li:hover { + background: #fff; + opacity:1; +} + +ul#glm-donate-tabs-nav li.ui-state-active a:before, +ul#glm-donate-tabs-nav li:hover a:before { + position: absolute; + content: " "; + top:0; + bottom:-1px; + left:0; + right:0; + border-bottom:1px solid #fff; + z-index:200; +} + +ul#glm-donate-tabs-nav li a { + position:absolute; + top:0; + left:0; + color:#777; + display:block; + padding:10px 15px; + height:20px; + line-height:20px; + width:100px; + text-decoration: none; + text-shadow: 0 1px 1px rgba(255,255,255,0.8); + text-transform:uppercase; + overflow:visible; +} + +ul#glm-donate-tabs-nav li.ui-state-active { + background: #fff; +} + +ul#glm-donate-tabs-nav li.ui-state-active a { + color:#555; +} + +/* Transactions Table */ + +table.glm-donate-projects, +table.glm-donate-transactions { + margin-top:20px; + border-spacing: 0px; + width:95%; +} + +table.glm-donate-projects thead, +table.glm-donate-transactions thead { + position:relative; + background-color:#f2f2f2; +} + +table.glm-donate-projects tr.glm-donate-absolute, +table.glm-donate-transactions tr.glm-donate-absolute { + position:absolute; + z-index:0; + width:95%; + height:38px; +} + +table.glm-donate-projects tr.glm-donate-absolute:before, +table.glm-donate-transactions tr.glm-donate-absolute:before { + content: ''; + position:absolute; + z-index:2; + display:block; + top:1px; + left:0; + bottom:1px; + right:0; + -webkit-border-radius: 7px; + -moz-border-radius: 7px; + border-radius: 7px; + -webkit-box-shadow: inset 0px 1px 1px 0px rgba(0, 0, 0, 0.15),inset 0px 2px 3px 1px rgba(0, 0, 0, 0.1); + -moz-box-shadow: inset 0px 1px 1px 0px rgba(0, 0, 0, 0.15),inset 0px 2px 3px 1px rgba(0, 0, 0, 0.1); + box-shadow: inset 0px 1px 1px 0px rgba(0, 0, 0, 0.15),inset 0px 2px 3px 1px rgba(0, 0, 0, 0.1); +} + +table.glm-donate-projects th, +table.glm-donate-transactions th { + border-top: 1px solid #fff; + border-bottom: 1px solid #ddd; +} + +table.glm-donate-projects th, +table.glm-donate-transactions th { + text-align:left; + color:#777; + text-shadow: 0 1px 0px #ffffff; +} + + +table.glm-donate-transactions td img.avatar { + float:left; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +table.glm-donate-transactions td span.donate-name { + line-height:30px; + padding-left:15px; +} + +table.glm-donate-transactions td.donate-comment { + font-style:italic; + font-family:serif; + color:#777; + font-size:14px; + line-height:14px; +} + +table.glm-donate-transactions span.donate-netamount { + color:#07DE00; + font-weight:bold; + font-size:14px; +} + +table.glm-donate-projects th:first-child, +table.glm-donate-transactions th:first-child { + -moz-border-radius-topleft: 7px; + -moz-border-radius-topright: 0px; + -moz-border-radius-bottomright: 0px; + -moz-border-radius-bottomleft: 7px; + -webkit-border-radius: 7px 0px 0px 7px; + border-radius: 7px 0px 0px 7px; +} + +table.glm-donate-projects th:last-child, +table.glm-donate-transactions th:last-child { + -moz-border-radius-topleft: 0px; + -moz-border-radius-topright: 7px; + -moz-border-radius-bottomright: 7px; + -moz-border-radius-bottomleft: 0px; + -webkit-border-radius: 0px 7px 7px 0px; + border-radius: 0px 7px 7px 0px; +} + +table.glm-donate-projects tr td, +table.glm-donate-transactions tr td { + border-bottom: 1px solid #ddd; +} + +table.glm-donate-projects tr th, +table.glm-donate-projects tr td, +table.glm-donate-transactions tr th, +table.glm-donate-transactions tr td { + padding: 10px 15px; +} + +.dot-donate-live { + margin-right:10px; + position:relative; + top:2px; + display:inline-block; + background:#07DE00; + width:12px; + height:12px; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + -webkit-box-shadow: inset 0px 3px 2px 1px rgba(255, 255, 255, 0.2); + -moz-box-shadow: inset 0px 3px 2px 1px rgba(255, 255, 255, 0.2); + box-shadow: inset 0px 5px 3px 1px rgba(255, 255, 255, 0.2); +} + +.dot-donate-public { + margin-right:10px; + position:relative; + top:2px; + display:inline-block; + background:#0068DE; + width:12px; + height:12px; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + -webkit-box-shadow: inset 0px 3px 2px 1px rgba(255, 255, 255, 0.2); + -moz-box-shadow: inset 0px 3px 2px 1px rgba(255, 255, 255, 0.2); + box-shadow: inset 0px 5px 3px 1px rgba(255, 255, 255, 0.2); +} + +.dot-donate-test { + margin-right:10px; + position:relative; + top:2px; + display:inline-block; + background:#ddd; + width:12px; + height:12px; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + -webkit-box-shadow: inset 0px 2px 2px 1px rgba(0,0,0, 0.1); + -moz-box-shadow: inset 0px 2px 2px 1px rgba(0,0,0, 0.1); + box-shadow: inset 0px 2px 3px 1px rgba(0,0,0, 0.1); +} + +.progress-donate-wrap { + position:relative; + display:block; + background:#ddd; + width:100px; + height:16px; + -webkit-border-radius: 8px; + -moz-border-radius: 8px; + border-radius: 8px; + -webkit-box-shadow: inset 0px 2px 2px 1px rgba(0,0,0, 0.1); + -moz-box-shadow: inset 0px 2px 2px 1px rgba(0,0,0, 0.1); + box-shadow: inset 0px 2px 3px 1px rgba(0,0,0, 0.1); +} + +.progress-donate-value { + margin-right:10px; + position:absolute; + z-index:50; + top:2px; + left:2px; + display:block; + background:#0068DE; + height:12px; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + -webkit-box-shadow: inset 0px 3px 2px 1px rgba(255, 255, 255, 0.2); + -moz-box-shadow: inset 0px 3px 2px 1px rgba(255, 255, 255, 0.2); + box-shadow: inset 0px 5px 3px 1px rgba(255, 255, 255, 0.2); +} + +#glm-donate-tab-transactions form.pagination { + display:inline; + float:left; + margin:10px 10px 0 0; +} + +.glm-donate-absolute +{ +background:linear-gradient(to top, #373737 0px, #464646 5px) repeat scroll 0 0 #464646; +color:#ffffff; +} + +.required { + color: red; + padding-left: 5px; +} diff --git a/css/glm-donate-display.css b/css/glm-donate-display.css new file mode 100755 index 0000000..1a6a946 --- /dev/null +++ b/css/glm-donate-display.css @@ -0,0 +1,351 @@ +/* +* GLM-donate - Default Stylesheet +*/ + +#glm-donate-wrap { + display:block; + padding:10px; + margin:0px; + width: 400px; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif !important; +} + +/* Payment Form Link */ + +#glm-donate-modal-button { + margin:20px 0; + padding: 8px 15px; + min-width:100px; + display:inline-block; + text-align:center; + font-weight: bold; + font-size: 12px; + background: #1275FF; + border: 1px solid #155FB0; + color: white; + text-decoration: none; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-image: -webkit-gradient(linear, left top, left bottom, from(#77B7FF), to(#017AFF)); + background-image: -moz-linear-gradient(top, #77B7FF, #017AFF); + background-image: -o-linear-gradient(top, #77B7FF, #017AFF); + -webkit-box-shadow: inset 0 1px 0 #98c9ff; + -moz-box-shadow: inset 0 1px 0 #98c9ff; + box-shadow: inset 0 1px 0 #98c9ff; + -o-border-radius: 4px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + cursor: pointer; cursor: hand; +} + +#glm-donate-types { + display:block; + width:256px; + height:18px; + background: url('../images/types.png') no-repeat top left; + margin-bottom:20px; +} + +/* Payment Form Elements */ + +form#glm-donate-payment-form { + display:block; +} + +.donate-row-right, +.donate-row-left{width:50%;} + +form#glm-donate-payment-form h2.donate-header { + padding:10px; + color:#fff; + font-size:14px; + font-weight:bold; + text-shadow: 0 -1px 1px rgba(0,0,0,0.3); + border-top:1px solid #268DFC; + border-bottom:1px solid #004EA2; + background:#0068DE; + margin-bottom:10px; + -moz-border-radius-topleft: 5px; + -moz-border-radius-topright: 5px; + -moz-border-radius-bottomright: 0px; + -moz-border-radius-bottomleft: 0px; + -webkit-border-radius: 5px 5px 0px 0px; + border-radius: 5px 5px 0px 0px; +} + +form#glm-donate-payment-form p.donate-display-comment { + margin:3px 0; + font-size:12px; + color:#777; +} + +form#glm-donate-payment-form label { + letter-spacing:1px; + text-transform:uppercase; +} + +form#glm-donate-payment-form .donate-row { + overflow:visible; + clear:both; + padding:5px 10px; +} + +form#glm-donate-payment-form .donate-row-left, +form#glm-donate-payment-form .donate-row-right { + float:left; + overflow:auto; +} + +form#glm-donate-payment-form .donate-submit-button { + position:relative; + margin:10px; + padding: 8px 15px; + display:block; + font-weight: bold; + font-size: 12px; + background: #1275FF; + border: 1px solid #155FB0; + color: white; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-image: -webkit-gradient(linear, left top, left bottom, from(#77B7FF), to(#017AFF)); + background-image: -moz-linear-gradient(top, #77B7FF, #017AFF); + background-image: -o-linear-gradient(top, #77B7FF, #017AFF); + -webkit-box-shadow: inset 0 1px 0 #98c9ff; + -moz-box-shadow: inset 0 1px 0 #98c9ff; + box-shadow: inset 0 1px 0 #98c9ff; + -o-border-radius: 4px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + cursor: pointer; cursor: hand; +} + +.donate-spinner { + display:none; + margin:10px; + padding: 8px 15px; + height:15px; + width:70px; + content:" "; + background: url('../images/spinner.gif') no-repeat 50% 50%; + border: 1px solid #afd5ff; + -o-border-radius: 4px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; +} + +.donate-valid { + color: #638731 !important; + background-color:#d9fba8 !important; +} + +.donate-invalid { + color:#873d31 !important; + background-color:#fbbcb1 !important; +} + +.glm-donate-poweredby { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif !important; + color:#777; + font-size:10px; + padding:0 20px; +} + +.glm-donate-poweredby a { + color:#0068DE; + text-decoration: none; +} + +/* Response Styling */ + +.glm-donate-notification { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 12px; + width:360px; + padding:10px; + margin:10px 0 10px 10px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; +} + +.glm-donate-currency { + text-transform: uppercase; +} + +.glm-donate-success { + color:#345607; + background-color:#D1F2A5; + text-shadow:0 1px 1px rgba(255,255,255,0.2); +} + +.glm-donate-failure { + color:#4E1E0F; + background-color:#FF9F80; + text-shadow:0 1px 1px rgba(255,255,255,0.1); +} + +/* Form Styling */ + + +form#glm-donate-payment-form .glm-donate-details label { + color:#777; +} + +form#glm-donate-payment-form .glm-donate-card label { + color:#0068DE; +} + +form#glm-donate-payment-form .glm-donate-card input { + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; +} + +form#glm-donate-payment-form .glm-donate-card input.card-cvc { + width:120px; +} + +form#glm-donate-payment-form label, +form#glm-donate-payment-form input, +form#glm-donate-payment-form select, +form#glm-donate-payment-form textarea { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif !important; + font-size: 14px !important; + font-weight: normal; + line-height: normal; + margin-bottom: 3px !important; +} +form#glm-donate-payment-form textarea, +form#glm-donate-payment-form input { + position:relative; + width:338px; + background-color:#fff; +} + +input.glm-donate-name {background: url('../images/h-name.png') no-repeat 8px 8px;} +input.glm-donate-email {background: url('../images/h-email.png') no-repeat 8px 10px;} +textarea.glm-donate-comment {background: url('../images/h-comment.png') no-repeat 8px 10px;} +input.glm-donate-card-amount {background: url('../images/h-amount.png') no-repeat 8px 8px;} +input.card-number {background: url('../images/h-card.png') no-repeat 8px 10px;} +input.card-cvc {background: url('../images/h-cvc.png') no-repeat 8px 10px;} + +form#glm-donate-payment-form select { + cursor: pointer; +} + +input[type=checkbox], input[type=radio] { + cursor: pointer; +} + +.donate-expiry { + font-size:12px; + letter-spacing:1px; + color:#bbb; + text-shadow:0 1px 0 #fff; +} + +form#glm-donate-payment-form select { + margin-top:0px !important; + display:block; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + padding: 2px 7px 2px 7px !important; + height: auto !important; + text-shadow: 0 1px 0 white; + background-image: -webkit-gradient(linear, left top, left bottom, from(#F9F9F9), to(#E8E8E8)); + background-image: -moz-linear-gradient(top, #F9F9F9, #E8E8E8); + background-image: -o-linear-gradient(top, #F9F9F9, #E8E8E8); + -webkit-box-shadow: inset 0 1px 0 white; + -moz-box-shadow: inset 0 1px 0 white; + box-shadow: inset 0 1px 0 white; +} + +form#glm-donate-payment-form select:hover { + background-image: -webkit-gradient(linear, left top, left bottom, from(#E8E8E8), to(#F9F9F9)); + background-image: -moz-linear-gradient(top, #E8E8E8, #F9F9F9); + background-image: -o-linear-gradient(top, #E8E8E8, #F9F9F9); +} + +form#glm-donate-payment-form input, +form#glm-donate-payment-form textarea, +form#glm-donate-payment-form select, +form#glm-donate-payment-form .uneditable-input { + display: inline-block; + height: 18px; + padding: 8px 8px 8px 32px; + font-size: 13px; + line-height: 18px; + color: #808080; + border: 1px solid #ccc; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +form#glm-donate-payment-form input[type=checkbox], form#glm-donate-payment-form input[type=radio] { + width: auto; + height: auto; + padding: 0; + margin: 3px 0; + *margin-top: 0; + /* IE6-7 */ + + line-height: normal; + border: none; +} + +form#glm-donate-payment-form select { + height: 27px; + line-height: 27px; +} + +form#glm-donate-payment-form input[type=button], form#glm-donate-payment-form input[type=reset], form#glm-donate-payment-form input[type=submit] { + width: auto; + height: auto; +} + +form#glm-donate-payment-form input[type=checkbox] { + position:relative; + top:2px; + margin-right:5px; +} + +form#glm-donate-payment-form select[multiple] { + height: inherit; + background-color: #ffffff; +} +form#glm-donate-payment-form textarea { + height: auto; +} + +:-moz-placeholder { + color: #bfbfbf; +} +::-webkit-input-placeholder { + color: #bfbfbf; +} +form#glm-donate-payment-form input, form#glm-donate-payment-form textarea { + -webkit-transition: border linear 0.2s, box-shadow linear 0.2s; + -moz-transition: border linear 0.2s, box-shadow linear 0.2s; + -ms-transition: border linear 0.2s, box-shadow linear 0.2s; + -o-transition: border linear 0.2s, box-shadow linear 0.2s; + transition: border linear 0.2s, box-shadow linear 0.2s; + -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1); + -moz-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1); +} +form#glm-donate-payment-form input:focus, form#glm-donate-payment-form textarea:focus { + outline: 0; + border-color: rgba(0, 104, 222, 0.8); + -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1), 0 0 8px rgba(0, 104, 222, 0.6); + -moz-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1), 0 0 8px rgba(0, 104, 222, 0.6); + box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1), 0 0 8px rgba(0, 104, 222, 0.6); +} +input[type=file]:focus, input[type=checkbox]:focus, select:focus { + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; + outline: 1px dotted #666; +} diff --git a/css/glm-donate-thickbox.css b/css/glm-donate-thickbox.css new file mode 100755 index 0000000..171f7bb --- /dev/null +++ b/css/glm-donate-thickbox.css @@ -0,0 +1,187 @@ + +/* ----------------------------------------------------------------------------------------------------------------*/ +/* ---------->>> thickbox specific link and font settings <<<------------------------------------------------------*/ +/* ----------------------------------------------------------------------------------------------------------------*/ +#TB_window { + font: 12px "Helvetica Neue", Helvetica, Arial, sans-serif; + color: #333333; +} + +#TB_secondLine { + font: 10px "Helvetica Neue", Helvetica, Arial, sans-serif; + color:#666666; +} + +#TB_window a:link {color: #666666;} +#TB_window a:visited {color: #666666;} +#TB_window a:hover {color: #000;} +#TB_window a:active {color: #666666;} +#TB_window a:focus{color: #666666;} + +/* ----------------------------------------------------------------------------------------------------------------*/ +/* ---------->>> thickbox settings <<<-----------------------------------------------------------------------------*/ +/* ----------------------------------------------------------------------------------------------------------------*/ +#TB_overlay { + position: fixed; + z-index:10000; + top: 0px; + left: 0px; + height:100%; + width:100%; +} + +.TB_overlayMacFFBGHack {background: url(macFFBgHack.png) repeat;} +.TB_overlayBG { + background-color:#000; + -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=75)"; + filter:alpha(opacity=75); + -moz-opacity: 0.75; + opacity: 0.75; +} + +* html #TB_overlay { /* ie6 hack */ + position: absolute; + height: expression(document.body.scrollHeight > document.body.offsetHeight ? document.body.scrollHeight : document.body.offsetHeight + 'px'); +} + +#TB_window { + position: fixed; + background: #ffffff; + z-index: 10002; + color:#000000; + visibility: hidden; + text-align:left; + top:50%; + left:50%; + -moz-box-shadow: rgba(0,0,0,1) 0 4px 30px; + -webkit-box-shadow: rgba(0,0,0,1) 0 4px 30px; + -khtml-box-shadow: rgba(0,0,0,1) 0 4px 30px; + box-shadow: rgba(0,0,0,1) 0 4px 30px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; + overflow:hidden !important; +} + +#TB_window iframe { + overflow:hidden !important; +} + +* html #TB_window { /* ie6 hack */ + position: absolute; + margin-top: expression(0 - parseInt(this.offsetHeight / 2) + (TBWindowMargin = document.documentElement && document.documentElement.scrollTop || document.body.scrollTop) + 'px'); +} + +#TB_window img#TB_Image { + display:block; + margin: 15px 0 0 15px; + border-right: 1px solid #ccc; + border-bottom: 1px solid #ccc; + border-top: 1px solid #666; + border-left: 1px solid #666; +} + +#TB_caption{ + height:25px; + padding:7px 30px 10px 25px; + float:left; +} + +#TB_closeWindow{ + height:25px; + padding:11px 25px 10px 0; + float:right; +} + +#TB_closeAjaxWindow{ + padding:6px 10px 0; + text-align:right; + float:right; +} + +#TB_ajaxWindowTitle{ + float:left; + padding:6px 10px 0; +} + +#TB_title{ + color:#fff; + font-size:14px; + font-weight:bold; + text-shadow: 0 -1px 1px rgba(0,0,0,0.3); + background: #2F7ED6; + -webkit-box-shadow: inset 0px 1px 0px 0px #75acea; + -moz-box-shadow: inset 0px 1px 0px 0px #75acea; + box-shadow: inset 0px 1px 0px 0px #75acea; + background-image: -webkit-gradient(linear, left top, left bottom, from(#60A0E7), to(#3A7AC1)); + background-image: -moz-linear-gradient(top, #60A0E7, #3A7AC1); + background-image: -o-linear-gradient(top, #60A0E7, #3A7AC1); + padding:10px; + height:27px; + -moz-border-radius-topleft: 5px; + -moz-border-radius-topright: 5px; + -moz-border-radius-bottomright: 0px; + -moz-border-radius-bottomleft: 0px; + -webkit-border-radius: 5px 5px 0px 0px; + border-radius: 5px 5px 0px 0px; +} + +#TB_ajaxContent{ + clear:both; + padding:2px 15px 15px 15px; + overflow:auto; + text-align:left; + line-height:1.4em; +} + +#TB_ajaxContent.TB_modal{ + padding:15px; +} + +#TB_ajaxContent p{ + padding:5px 0px 5px 0px; +} + +#TB_load{ + position: fixed; + display:none; + z-index:10003; + top: 50%; + left: 50%; + background-color: #E8E8E8; + border: 1px solid #555; + margin: -45px 0pt 0pt -125px; + padding: 40px 15px 15px; +} + +* html #TB_load { /* ie6 hack */ +position: absolute; +margin-top: expression(0 - parseInt(this.offsetHeight / 2) + (TBWindowMargin = document.documentElement && document.documentElement.scrollTop || document.body.scrollTop) + 'px'); +} + +#TB_HideSelect{ + z-index:9999; + position:fixed; + top: 0; + left: 0; + background-color:#fff; + border:none; + filter:alpha(opacity=0); + -moz-opacity: 0; + opacity: 0; + height:100%; + width:100%; +} + +* html #TB_HideSelect { /* ie6 hack */ + position: absolute; + height: expression(document.body.scrollHeight > document.body.offsetHeight ? document.body.scrollHeight : document.body.offsetHeight + 'px'); +} + +#TB_iframeContent{ + clear:both; + border:none; + margin-bottom:-1px; + _margin-bottom:1px; + overflow:hidden !important; +} diff --git a/css/glm-donate-widget.css b/css/glm-donate-widget.css new file mode 100755 index 0000000..9e879db --- /dev/null +++ b/css/glm-donate-widget.css @@ -0,0 +1,62 @@ +.glm-donate-recent { + +} + +.glm-donate-recent .donate-item { + min-height:70px; + position:relative; + margin:5px 0; +} + +.glm-donate-recent .donate-item img.avatar { + position:absolute; + top:0; + left:0; + width:50px; + height:50px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; +} + +.glm-donate-recent .donate-item .donate-recent-comment { + padding-left:60px; +} + +.glm-donate-recent .donate-item .donate-recent-content:before { + content:'\2018'; +} + +.glm-donate-recent .donate-item .donate-recent-content:after { + content:'\2019'; +} + +.glm-donate-recent .donate-item .donate-recent-name { + margin: 0 0 0.5em 0; + font-weight:bold; +} + +.glm-donate-recent .donate-item .donate-recent-content { + color:#777; +} + + +.donate_btn_submit +{ +height: 28px; +float: none; +padding: 0 22px; +margin: 0 28px 0 218px; +background: #608e3a; +border: none; +line-height: 28px; +font-size: 14px; +color: #ffffff; +font-family: 'proxima-nova'; +font-weight: bold; +border-radius: 15px; +-webkit-border-radius: 15px; +-moz-border-radius: 15px; +} +.donate_btn_submit:hover { background:#4e7a29; } + diff --git a/includes/donate-display.php b/includes/donate-display.php new file mode 100755 index 0000000..b079fca --- /dev/null +++ b/includes/donate-display.php @@ -0,0 +1,1391 @@ +get_results( "SELECT * FROM ".$wpdb->prefix."donate_setting" ); + define("AUTHORIZENET_API_LOGIN_ID",$mysetting[0]->api_login); // Add your API LOGIN ID + define("AUTHORIZENET_TRANSACTION_KEY",$mysetting[0]->key); // Add your API transaction key + if($mysetting[0]->mod==0){ + define("AUTHORIZENET_SANDBOX",true); // Set to false to test against production + define("TEST_REQUEST", true); // You may want to set to true if testing against production + } + else + { + define("AUTHORIZENET_SANDBOX",false); // Set to false to test against production + define("TEST_REQUEST", false); + } + // You only need to adjust the two variables below if testing DPM + define("AUTHORIZENET_MD5_SETTING",""); // Add your MD5 Setting. + + $REQUEST = $_REQUEST; + if($paypalp = authorizepayment($METHOD_TO_USE,$REQUEST,$address1,$city,$state,$country,$zipcode,$emailaddress,$plan)) + { + $sql = "INSERT INTO `".$wpdb->prefix."donate` (`first_name`, `last_name`, `organization`, `address`, `city`, `country`, `state`, `zip`, `phone`, `email`, `donation_type`, `amount`, `invoice_num`,`comment`, `status`,`date`) + VALUES ('".$first_name."', '".$last_name."','".$organization."','".$address."','".$city."','".$country."','".$state."','".$zip."','".$phone."','".$email."','".$donation_type."','".$amount."','".$invoice_num."','".$comment."', '1',now());"; + $wpdb->query($sql); + + $post = get_post($post->ID); + $slug = $post->post_name; + + header("Location:".site_url().$_SERVER['REQUEST_URI']); + exit; + } + else + { + header("Location:".site_url().$_SERVER['REQUEST_URI']); + exit; + } + + } + } + +function wp_donate_form() { + ob_start(); + global $wpdb; + ?> + + + + diff --git a/includes/donate-display_1.php b/includes/donate-display_1.php new file mode 100644 index 0000000..7dd6fb4 --- /dev/null +++ b/includes/donate-display_1.php @@ -0,0 +1,1367 @@ +get_results( "SELECT * FROM ".$wpdb->prefix."donate_setting" ); + define("AUTHORIZENET_API_LOGIN_ID",$mysetting[0]->api_login); // Add your API LOGIN ID + define("AUTHORIZENET_TRANSACTION_KEY",$mysetting[0]->key); // Add your API transaction key + if($mysetting[0]->mod==0){ + define("AUTHORIZENET_SANDBOX",true); // Set to false to test against production + define("TEST_REQUEST", true); // You may want to set to true if testing against production + } + else + { + define("AUTHORIZENET_SANDBOX",false); // Set to false to test against production + define("TEST_REQUEST", false); + } + // You only need to adjust the two variables below if testing DPM + define("AUTHORIZENET_MD5_SETTING",""); // Add your MD5 Setting. + + $REQUEST = $_REQUEST; + if($paypalp = authorizepayment($METHOD_TO_USE,$REQUEST,$address1,$city,$state,$country,$zipcode,$emailaddress,$plan)) + { + $sql = "INSERT INTO `".$wpdb->prefix."donate` (`first_name`, `last_name`, `organization`, `address`, `city`, `country`, `state`, `zip`, `phone`, `email`, `donation_type`, `amount`, `comment`, `status`,`date`) + VALUES ('".$first_name."', '".$last_name."','".$organization."','".$address."','".$city."','".$country."','".$state."','".$zip."','".$phone."','".$email."','".$donation_type."','".$amount."','".$comment."', '1',now());"; + $wpdb->query($sql); + + $post = get_post($post->ID); + $slug = $post->post_name; + + header("Location:".site_url().$_SERVER['REQUEST_URI']); + exit; + } + else + { + header("Location:".site_url().$_SERVER['REQUEST_URI']); + exit; + } + + } + } + +function wp_donate_form() { + ob_start(); + global $wpdb; + ?> + + + + diff --git a/includes/donate-function.php b/includes/donate-function.php new file mode 100755 index 0000000..fbdfc4e --- /dev/null +++ b/includes/donate-function.php @@ -0,0 +1,290 @@ +setSandbox(AUTHORIZENET_SANDBOX); + $transaction->setFields( + array( + 'amount' => $REQUEST['amount'], + 'invoice_num' => $REQUEST['invoice_num'], + 'card_num' => $REQUEST['x_card_num'], + 'exp_date' => $REQUEST['exp_month'].'/'.$REQUEST['exp_year'], + 'first_name' => $REQUEST['first_name'], + 'last_name' => $REQUEST['last_name'], + 'address' => $REQUEST['address'], + 'city' => $REQUEST['city'], + 'state' => $REQUEST['state'], + 'country' => $REQUEST['country'], + 'zip' => $REQUEST['zip'], + 'email' => $REQUEST['email'], + ) + ); + $response = $transaction->authorizeAndCapture(); + if ($response->approved) + { + $_SESSION['donate_msg'] = $response->response_reason_text; + return true; + } + else + { + //echo "1"; + $_SESSION['donate_msg'] = $response->response_reason_text; + } + } + elseif (count($REQUEST)) + { + $response = new AuthorizeNetSIM; + if ($response->isAuthorizeNet()) + { + if ($response->approved) + { + // Transaction approved! Do your logic here. + // Redirect the user back to your site. + //$return_url = $site_root . 'thank_you_page.php?transaction_id=' .$response->transaction_id; + //echo "2"; + + return true; + } + else + { + // There was a problem. Do your logic here. + // Redirect the user back to your site. + $_SESSION['donate_msg'] = $response->response_reason_text; + // echo "3"; + header("Location:".site_url().$_SERVER['REQUEST_URI']); + exit; + + } + echo AuthorizeNetDPM::getRelayResponseSnippet($return_url); + } + else + { + //echo "4"; + $_SESSION['donate_msg'] = "MD5 Hash failed. Check to make sure your MD5 Setting matches the one in"; + } + } + + } +} + +function checkInvoice($invoice_num) { + if (!preg_match("/^[0-9]{5}$/", $invoice_num)) { + return false; + } + return true; +} + +function checkCreditCard($cardnumber, $cardname, &$errornumber, &$errortext) { + + // Define the cards we support. You may add additional card types. + // Name: As in the selection box of the form - must be same as user's + // Length: List of possible valid lengths of the card number for the card + // prefixes: List of possible prefixes for the card + // checkdigit Boolean to say whether there is a check digit + // Don't forget - all but the last array definition needs a comma separator! + + $cards = array(array('name' => 'AMEX', + 'length' => '15', + 'prefixes' => '34,37', + 'checkdigit' => true + ), + array('name' => 'Diners Club Carte Blanche', + 'length' => '14', + 'prefixes' => '300,301,302,303,304,305', + 'checkdigit' => true + ), + array('name' => 'DINERS', + 'length' => '14,16', + 'prefixes' => '305,36,38,54,55', + 'checkdigit' => true + ), + array('name' => 'Discover', + 'length' => '16', + 'prefixes' => '6011,622,64,65', + 'checkdigit' => true + ), + array('name' => 'Diners Club Enroute', + 'length' => '15', + 'prefixes' => '2014,2149', + 'checkdigit' => true + ), + array('name' => 'JCB', + 'length' => '16', + 'prefixes' => '35', + 'checkdigit' => true + ), + array('name' => 'Maestro', + 'length' => '12,13,14,15,16,18,19', + 'prefixes' => '5018,5020,5038,6304,6759,6761', + 'checkdigit' => true + ), + array('name' => 'MASTERCARD', + 'length' => '16', + 'prefixes' => '51,52,53,54,55', + 'checkdigit' => true + ), + array('name' => 'Solo', + 'length' => '16,18,19', + 'prefixes' => '6334,6767', + 'checkdigit' => true + ), + array('name' => 'Switch', + 'length' => '16,18,19', + 'prefixes' => '4903,4905,4911,4936,564182,633110,6333,6759', + 'checkdigit' => true + ), + array('name' => 'VISA', + 'length' => '16', + 'prefixes' => '4', + 'checkdigit' => true + ), + array('name' => 'VISA Electron', + 'length' => '16', + 'prefixes' => '417500,4917,4913,4508,4844', + 'checkdigit' => true + ), + array('name' => 'LaserCard', + 'length' => '16,17,18,19', + 'prefixes' => '6304,6706,6771,6709', + 'checkdigit' => true + ) + ); + + $ccErrorNo = 0; + + $ccErrors [0] = 'Please enter a valid ' . $cardname . ' number.'; + $ccErrors [1] = "No card number provided"; + $ccErrors [2] = "Credit card number has invalid format"; + $ccErrors [3] = "Credit card number is invalid"; + $ccErrors [4] = "Credit card number is wrong length"; + + // Establish card type + $cardType = -1; + for ($i = 0; $i < sizeof($cards); $i++) { + + // See if it is this card (ignoring the case of the string) + if (strtolower($cardname) == strtolower($cards[$i]['name'])) { + $cardType = $i; + break; + } + } + + // If card type not found, report an error + if ($cardType == -1) { + $errornumber = 0; + $errortext = $ccErrors [$errornumber]; + return false; + } + + // Ensure that the user has provided a credit card number + if (strlen($cardnumber) == 0) { + $errornumber = 1; + $errortext = $ccErrors [$errornumber]; + return false; + } + + // Remove any spaces from the credit card number + $cardNo = str_replace(' ', '', $cardnumber); + + // Check that the number is numeric and of the right sort of length. + if (!preg_match("/^[0-9]{13,19}$/", $cardNo)) { + $errornumber = 2; + $errortext = $ccErrors [$errornumber]; + return false; + } + + + // Now check the modulus 10 check digit - if required + if ($cards[$cardType]['checkdigit']) { + $checksum = 0; // running checksum total + $mychar = ""; // next char to process + $j = 1; // takes value of 1 or 2 + // Process each digit one by one starting at the right + for ($i = strlen($cardNo) - 1; $i >= 0; $i--) { + + // Extract the next digit and multiply by 1 or 2 on alternative digits. + $calc = $cardNo{$i} * $j; + + // If the result is in two digits add 1 to the checksum total + if ($calc > 9) { + $checksum = $checksum + 1; + $calc = $calc - 10; + } + + // Add the units element to the checksum total + $checksum = $checksum + $calc; + + // Switch the value of j + if ($j == 1) { + $j = 2; + } else { + $j = 1; + }; + } + + // All done - if checksum is divisible by 10, it is a valid modulus 10. + // If not, report an error. + if ($checksum % 10 != 0) { + $errornumber = 3; + $errortext = $ccErrors [$errornumber]; + return false; + } + } + + // The following are the card-specific checks we undertake. + // Load an array with the valid prefixes for this card + $prefix = explode(',', $cards[$cardType]['prefixes']); + + // Now see if any of them match what we have in the card number + $PrefixValid = false; + for ($i = 0; $i < sizeof($prefix); $i++) { + $exp = '/^' . $prefix[$i] . '/'; + if (preg_match($exp, $cardNo)) { + $PrefixValid = true; + break; + } + } + + // If it isn't a valid prefix there's no point at looking at the length + if (!$PrefixValid) { + $errornumber = 3; + $errortext = $ccErrors [$errornumber]; + return false; + } + + // See if the length is valid for this card + $LengthValid = false; + $lengths = explode(',', $cards[$cardType]['length']); + for ($j = 0; $j < sizeof($lengths); $j++) { + if (strlen($cardNo) == $lengths[$j]) { + $LengthValid = true; + break; + } + } + + // See if all is OK by seeing if the length was valid. + if (!$LengthValid) { + $errornumber = 4; + $errortext = $ccErrors [$errornumber]; + return false; + }; + + // The credit card is in the required format. + return true; +} + + +?> diff --git a/includes/donate-options.php b/includes/donate-options.php new file mode 100755 index 0000000..d914db3 --- /dev/null +++ b/includes/donate-options.php @@ -0,0 +1,199 @@ + + query($wpdb->prepare("DELETE FROM ".$wpdb->prefix."donate WHERE id = %d",$_GET['id'])); + header("Location:".site_url().'/wp-admin/admin.php?page=wp_donate'); + exit; + } + elseif($_GET['id']!='') + { + ?> +
+

WP Donate

+
+ + + + get_results( "SELECT * FROM ".$wpdb->prefix."donate where id='".$_GET['id']."'" ); + foreach($myrows as $myrows_value) + { + ?> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
First Name :first_name;?>
Last Name :last_name;?>
Organization :organization;?>
Address :address;?>
City :city;?>
Country :country;?>
State :state;?>
Zip : zip;?>
Phone :phone;?>
Email :email;?>
Donation Type :donation_type;?>
Amount :$amount;?>
Invoice Number: invoice_num;?>
Comment :comment;?>
Date :date;?>
Action : status==1){echo "Complete";} else {echo "Pending";}?>
/wp-admin/admin.php?page=wp_donate' value="Back" />
+
+
+ + + +
+

WP Donate

+ +
+
+ + get_results( "SELECT * FROM ".$wpdb->prefix."donate"); + if(count($myrows)>0) + { + ?> + + + + + + + + + + + + + + + + + + + + + +
PersonEmailAmountDateCommentAction
first_name.' '.$myrows_value->last_name ;?>email;?>$amount;?>date;?>comment;?>Delete
+
+
+ get_results( "SELECT * FROM ".$wpdb->prefix."donate_setting" ); + ?> +
+ +
    +
  • + Authorize.net Mode + +
  • +
  • + API Login + +
  • +
  • + Transaction Key + +
  • +
    + +
+
+
+ +
+ diff --git a/js/glm-donate.js b/js/glm-donate.js new file mode 100755 index 0000000..89ee1f7 --- /dev/null +++ b/js/glm-donate.js @@ -0,0 +1,117 @@ +/** + * GLM-donate + * + * @since 1.4 + * + */ + +// var glm-donate-key declared in DOM from localized script + +donate.setPublishableKey( wpdonatekey ); + +// donate Token Creation & Event Handling + +jQuery(document).ready(function($) { + + var resetdonateForm = function() { + $("#glm-donate-payment-form").get(0).reset(); + $('input').removeClass('donate-valid donate-invalid'); + } + + function donateResponseHandler(status, response) { + if (response.error) { + + $('.donate-submit-button').prop("disabled", false).css("opacity","1.0"); + $(".payment-errors").show().html(response.error.message); + + } else { + + var form$ = $("#glm-donate-payment-form"); + var token = response['id']; + form$.append(""); + + var newdonateForm = form$.serialize(); + + $.ajax({ + type : "post", + dataType : "json", + url : ajaxurl, + data : newdonateForm, + success: function(response) { + + $('.glm-donate-details').prepend(response); + $('.donate-submit-button').prop("disabled", false).css("opacity","1.0"); + resetdonateForm(); + + } + + }); + + } + } + + $("#glm-donate-payment-form").submit(function(event) { + + event.preventDefault(); + $(".glm-donate-notification").hide(); + + $('.donate-submit-button').prop("disabled", true).css("opacity","0.4"); + + var amount = $('.glm-donate-card-amount').val() * 100; //amount you want to charge in cents + + donate.createToken({ + name: $('.glm-donate-name').val(), + number: $('.card-number').val(), + cvc: $('.card-cvc').val(), + exp_month: $('.card-expiry-month').val(), + exp_year: $('.card-expiry-year').val() + }, donateResponseHandler); + + // prevent the form from submitting with the default action + + return false; + + }); +}); + +// Form Validation & Enhancement + +jQuery(document).ready(function($) { + + $('.card-number').focusout( function() { + + var cardValid = donate.validateCardNumber( $(this).val() ); + var cardType = donate.cardType( $(this).val() ); + + // Card Number Validation + + if ( cardValid ) { + $(this).removeClass('donate-invalid').addClass('donate-valid'); + } else { + $(this).removeClass('donate-valid').addClass('donate-invalid'); + } + + // Card Type Information + + /* + if ( cardType && cardValid ) { + // Display Card Logo + } + */ + + }); + + // CVC Validation + + $('.card-cvc').focusout( function() { + + if ( donate.validateCVC( $(this).val() ) ) { + $(this).removeClass('donate-invalid').addClass('donate-valid'); + } else { + $(this).removeClass('donate-valid').addClass('donate-invalid'); + } + + }); + +}); + diff --git a/js/list.min.js b/js/list.min.js new file mode 100755 index 0000000..27cac39 --- /dev/null +++ b/js/list.min.js @@ -0,0 +1 @@ +(function(d,e){var a=d.document,c;var b=function(g,t,p){var r=this,o,q,n,s,i,f,h,m="";this.listContainer=a.getElementById(g);this.items=[];this.searched=false;this.filtered=false;this.list=null;this.templateEngines={};this.maxVisibleItemsCount=t.maxVisibleItemsCount||200;q=function(u,w){w.list=w.list||g;w.listClass=w.listClass||"list";w.searchClass=w.searchClass||"search";w.sortClass=w.sortClass||"sort";o=new f(r,w);r.list=c.getByClass(w.listClass,r.listContainer,true);c.addEvent(c.getByClass(w.searchClass,r.listContainer),"keyup",r.search);h=c.getByClass(w.sortClass,r.listContainer);c.addEvent(h,"click",r.sort);if(w.valueNames){var x=n.get(),v=w.valueNames;if(w.indexAsync){n.indexAsync(x,v)}else{n.index(x,v)}}if(u!==e){r.add(u)}};n={get:function(){var w=r.list.childNodes,v=[];for(var x=0,u=w.length;x0){setTimeout(function(){n.indexAsync(u,v)},10)}}};this.add=function(v,A){if(A){l(v,A)}var y=[],x=false;if(v[0]===e){v=[v]}for(var w=0,u=v.length;wr.maxVisibleItemsCount)?true:false;z=new i(v[w],e,x)}if(!x){o.add(z,t)}r.items.push(z);y.push(z)}return y};var l=function(v,x,u){var w=v.splice(0,100);u=u||[];u=u.concat(r.add(w));if(v.length>0){setTimeout(function(){l(v,x,u)},10)}else{x(u)}};this.remove=function(z,y,v){var x=0;for(var w=0,u=r.items.length;w"});w=w.replace(/<\/?[^>]+(>|$)/g,"");v=v.toString().replace(/&(lt|gt);/g,function(x,D){return(D=="lt")?"<":">"});v=v.replace(/<\/?[^>]+(>|$)/g,"");var z=this.chunkify(w);var B=this.chunkify(v);for(var u=0;z[u]&&B[u];u++){if(z[u]!==B[u]){var C=Number(z[u]),A=Number(B[u]);if(y){if(C==z[u]&&A==B[u]){return C-A}else{return(z[u]>B[u])?1:-1}}else{if(C==z[u]&&A==B[u]){return A-C}else{return(z[u]>B[u])?-1:1}}}}return z.length-B.length},chunkify:function(A){var D=[],v=0,C=-1,B=0,z,w;while(z=(w=A.charAt(v++)).charCodeAt(0)){var u=(z==45||z==46||(z>=48&&z<=57));if(u!==B){D[++C]="";B=u}D[C]+=w}return D}};this.search=function(F,w){var v=[],E,D,C,B,z,w=(w===e)?r.items[0].values():w,F=(F===e)?"":F,A=F.target||F.srcElement;F=(A===e)?F.toLowerCase():A.value.toLowerCase();z=r.items;F=F.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&");o.clear();if(F===""){k.search();r.searched=false;j()}else{r.searched=true;for(var x=0,u=z.length;x-1)){E=true}}}if(E){D.found=true;v.push(D)}else{D.found=false}}j()}m=F;return v};this.filter=function(z){var y=e;k.filter();if(z===e){r.filtered=false}else{y=[];r.filtered=true;var x=r.items;for(var v=0,u=x.length;v=1){k.removeChild(k.firstChild)}}}};c={getByClass:(function(){if(a.getElementsByClassName){return function(g,f,h){if(h){return f.getElementsByClassName(g)[0]}else{return f.getElementsByClassName(g)}}}else{return function(m,g,o){var p=[],q="*";if(g==null){g=a}var k=g.getElementsByTagName(q);var f=k.length;var n=new RegExp("(^|\\s)"+m+"(\\s|$)");for(var l=0,h=0;l0))){return true}return false},hasClass:function(h,g){var f=this.getAttribute(h,"class");return(f.search(g)>-1)},addClass:function(h,g){if(!this.hasClass(h,g)){var f=this.getAttribute(h,"class");f=f+" "+g+" ";f=f.replace(/\s{2,}/g," ");h.setAttribute("class",f)}},removeClass:function(h,g){if(this.hasClass(h,g)){var f=this.getAttribute(h,"class");f=f.replace(g,"");h.setAttribute("class",f)}}};d.List=b;d.ListJsHelpers=c})(window); \ No newline at end of file diff --git a/js/paymentmethods.js b/js/paymentmethods.js new file mode 100755 index 0000000..73a3d7f --- /dev/null +++ b/js/paymentmethods.js @@ -0,0 +1,19 @@ +function PaymentMethod(name,creditCard,cardType,cardCvv,cardHolderName,enableRecurring){this.name=name;this.creditCard=creditCard;this.cardType=cardType;this.cardCvv=cardCvv;this.cardHolderName=cardHolderName;this.enableRecurring=enableRecurring;} +PaymentMethod.prototype.getName=function(){return this.name;} +PaymentMethod.prototype.getCreditCard=function(){return this.creditCard;} +PaymentMethod.prototype.getCardType=function(){return this.cardType;} +PaymentMethod.prototype.getCardCvv=function(){return this.cardCvv;} +PaymentMethod.prototype.getCardHolderName=function(){return this.cardHolderName;} +PaymentMethod.prototype.getEnableRecurring=function(){return this.enableRecurring;} +function PaymentMethods(){this.length=0;this.methods=new Array();} +PaymentMethods.prototype.Add=function(paymentMethod){this.methods[this.length]=paymentMethod;this.length=this.length+1;} +PaymentMethods.prototype.Find=function(name){for(var i=0;i0) +show=recurrings[form.campaign_id.value];} +if(method.getEnableRecurring()&&show){trDonationType.style.display='';if(form.donation_type[1].checked){trFrequency.style.display='';if(trNumberDonations){trNumberDonations.style.display='';}}}else{trDonationType.style.display='none';trFrequecy.style.display='none';if(trNumberDonations){trNumberDonations.style.display='none';} +form.donation_type[0].checked=true;}}} \ No newline at end of file diff --git a/readme.txt b/readme.txt new file mode 100755 index 0000000..606090d --- /dev/null +++ b/readme.txt @@ -0,0 +1,68 @@ +=== glm-donate === +Contributors: ketanajani +Donate link: http://webconfines.com +Tags: donate, authorizeNet , credit card, payment, pay, transfer, charge, widget, form, chargly, recurly, recent, donation, donations, charity, transaction, money, wordpress +Requires at least: 3.0 +Tested up to: 3.6 +Stable tag: 0.6 +License: GPLv2 or later +License URI: http://www.gnu.org/licenses/gpl-2.0.html + +GLM-donate provides a payment form and recent donor by utilizing AuthorizeNet. + +== Description == + +WP Donate provides a payment form and recent donor widget by utilizing Authorize.net. + +What glm-donate provides: + +1. Listing of donor at admin area +1. At admin area it allows to set details related to payment gateway +1. From displayed at client side using Shortcode +1. Autherize.net payment gateway integration for accepting donation + +If you need any modification in plugin or need some extra functionality than please let us know here http://www.webconfines.com/contact-us + +== Installation == + +WP Donate can be used by either calling up a simple shortcode or adding the function to your template as below: + +1. Upload the folder `glm-donate` to the `/wp-content/plugins/` directory +1. Activate the plugin through the 'Plugins' menu in WordPress +1. Go to WP Donate (for both Test & Live) +1. Place `[Display Donate]` in your content or `` in your template. + +== Frequently Asked Questions == += Will it work on my Theme? = +GLM-donate features an inline form so that it can fit any theme. that you can customize it yourself. += Can I expand this plugin = +Yes you can customize or expand plugin by adding new payment gateways to receive donation or customization can be made in form related to fields. += About SSL = +In order to process transactions in a secure manner, you need to [purchase an SSL Certificate](http://www.noeltock.com/sslcertificates/). This way consumers can purchase/donate with confidence. There are multiple plugins for then enforcing that SSL be used on your page, [here's one](http://wordpress.org/extend/plugins/wordpress-https/). += Support available? = +If you need any modification in plugin or need some extra functionality than please let us know here http://www.webconfines.com/contact-us += What are limitations of this plugin? = +It is only available to users with Authorize.Net payment gateway to receive donations. + +== Screenshots == +1. screenshot-1.png +2. screenshot-2.png +3. screenshot-3.png +3. screenshot-4.png + +== Changelog == + += 1.2 = +* Provided some more details about plugin + += 1.3 = +* Removed error message and redirected to correct page after success. + += 1.4 = +* Modified database interactions for improvements and solved page redirect bug after successful payment by providing robust solution. + += 1.5 = +* Modified donation limit. Earlier it was minimum $10 and maximum $1000, now minimum is $1 and maximum is $100000 + +== Upgrade Notice == +Nothing yet diff --git a/screenshot-1.png b/screenshot-1.png new file mode 100755 index 0000000000000000000000000000000000000000..d0d0b21de32b795bca4a2c572b980493c91a2992 GIT binary patch literal 59138 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 Sr+Pa4w_RONEm`&Ox&H;I67qxq literal 0 HcmV?d00001 diff --git a/screenshot-2.png b/screenshot-2.png new file mode 100755 index 0000000000000000000000000000000000000000..417bd9df04c0a663c7bba575af9a27add8e7bf64 GIT binary patch literal 67551 zcmb@uWmHsa`v+_*1_%;ITDnmXa6m#~7(%*RItO$pi2*@T0U4x~mZ4K>kQPx=V(13x zMu|ZN2HtzldCvcR4##J$_rv?e#d7W0aqs(zUtBv_T@`laBJIT!Cr(^ZRFKm=apElO z#EDai7tVqI2}Zm)bK(T^2}QYk+D}YZlg@vP{<>GeE!N>Xekhr$Q7o-c0xueXgj#4qI6QHF<^K*>{Qvdvj#B#Za>uy6=DPiL$Mf`$p7!TxHRHxy)nJaTk?fg4 z!j?^!6GR+iV|a9U79s>xsV%BzHR}ccd{oVp;UUjY|NCKSx(o=7Oowkgnm5^C>`>43 zF?$h*z7G?%KBEH#M)2jn9Mx9>CRKfkT8f&Iq<4SF&zKF8Ojoh@v7!G zGG+N|eM%zSMN!jp;;Qm<$%AI^#4{jz=`eC?))?)FA{y8$@h_AlClv>$@dU9 z>M~GhBH=h*RgT!=TS6b*ya$FfGDCJOzANtwMJ_FLW~_E`pBL#VDz5XL|p)w1~ZMO=zCAG|Wk-3Zl&e5sPEANoa>U}eb_@|e2Mhh6%Y*7@TPP3dyV zYj1*nL*mgrKQV!ps+kV$DtM+(3Z7gI<)G(NYSWQ#(-B`-t+cbZQdB<@%Ws6JN{OY9 zG5&b4*}m3DCS7LT9y_eanKb*wuH2#D*eV-?-DgoulRR1(Eb?S2H?Bme(u&%3fAZd0 zwic}2)@;)h91nWZAu>4h>*vgPBh9@k0&aAzxS7%QsV`*pL*wczR@8^AWN)4f&$-D% zTt(uFnDf};^T}7_tj44RR%u)rFVY0+etf>P)~{#Qp-gpaLnW@9x{T4J%B@&6NjzwI z@Z;l|#Jen@~R&&S|>hpJ^ z`g`lD|2ng|Sqqu)oC-W}Hh$yYj81V*SenT4`x1#pD8om}hWX!Wt#9sc)O#-7*XfBw zi^rJ8)bGtFsGd^{nPXO8mxO5JUawk6@t=_7yvHN!Ghkp_*=g5~ zH+j`h6At$W4PuTifj;@9`zFSyk1=SNJ&xEujsjUUMzP0RY z*C6pUOZMGt9iO!mQuOYU+#M3EKd>mOKlCn)KHWg}T;DZElu)Hj*HFIXPgchmt5N0T zOIU8E(lh=(ukQaY;wGuk4?>?>LGO9SC!d_F*F?prr576PoR9o2%cq@_{f=&4Gvf`} zRnl)VKL3wW0p7qnWoE(2gvJ)^)UM6O6V1mb8aA-l$!fG`VbiDzgQLeZvWpZ$b5OW( zy6ylqJmtKeYDR+N{sR)<68?4Bj1R)Y$^G(r-nV4Q(X+WZ>FhA~>_}2GO>HZX#}hBW z`*UO5R|YzCa=EZHX1-WOauPl!$Q_$+f6ypqUXU>u$y7-&oM{RhH&-RbyG0nS$Z8Xv zOBs08ljTLN-55JXHC{MytNOzw)}GaCMgD|5MGm~!fQje0wYLBv=QVSC)oHIKHkxCe#05h6#d=j6YFHgY@*r4co%E<~v9h*pj1qREq0X+7(+O7PCB( z+g)3uTC8)%lO=t`&! zSG_NrirkLF^yQK(zBwf9S2wY3n}V9ed9fc7EJ<=(GES+r{eI1_=}?tQHUD4V&sRtq zP0t0MCjsb%I=M zNE$c0tWH*%f#YBy+@+p?@lm;i19=Rgk-xuIkz&M0Va$^|GZQZDL0<5Z9`Q=C3O|@O z8gpBd4lN&6Vi_(u&=F2;oXc)95Q!EWd-QBc<(*Q*qiD)db{Kn4=7V?BX<;I;5Jtja z{b7vK&iY8r>!qrd!b{`HQf@VTVV+SbVu~(d%KmQMFJ&J|&2-GM#~DwjmHFeBIGbe$ z70W^+{05mgE^gJb+viI&FG{9M2hw{lzE|yBA-hzU=-LTUedrLjQkyQFz4%O1qoMI7 znP&XBc*5x((n?kMbr#mKQ z_a0-R_hhAdgeG>UK9Dj`>^iq9W^nZFy4TNWt13;X7IGUXZc9p-Cgf@*JFX5DuUA*! zjq`|G8M|Kj#cqSj?MCo{etsRb_iXkiA5ZS)TT4{&Gg9#u`1QE2>*LiGYxPHmh2d>0 z+$UMgr&;US>L^V(?OA?_zp?-H^d#=rOgLx4GvlHK>l+RUKB3h7tI|h%;h~?kJGJ>Q zx2h|S-jIFq@$m3qt4q|rhi$Ns14ag&;zoYj88k~_6-P@jDx;L%aDVq4dsxzDSG51QVL9nBsrdB|b zfMcr$L5EcblDp67`=jA4LYu-sqr@Wf!o)(dPp58yVNBbjvGOI9BKbR7ts$0)_$;|f z8$u2D<`&589-}KerWZSHYbyKVV|=6a2jh1fiH0{w}FXdnuz8io9*R<$C&^@c z!2#1q3;ER}b*QB#*{_q&Um6m)bzaDxw~qQv+HJw=RiQXr4Hmg;@2fPqy$oKRN)u(D zq8!e~lz%lfa*L7Hv}nF$B)P$<8Q8WU*UjdQy*|F7kI){SqAJc6)hQD(Hu|iSLY;ml z8$-U22|WMv%u3XSsHGykqU2F|{-yb%FlRmF<@vR~=lh};pOuejrDsj9GhtK;t}~2L z@glUz+ocfN5v7JxIr8$kOiP7KVTz8dP8w&NhFUcGa~^Gg=4#}FdE*%FiFC!!dCf?D zAAqbjLxw(#=KJ~hP_{pp(;N4?f)aS4yr#X}hilW5xe{#;l?vO3Q)znyzok9od6 zKOAC#@G0hVtp#18;qWbD^Jb#{>chTTH6{Kp%w+s$>t|zxylYE2aPrIk1poBN78qnR`(gG&2;) z5LGQHMTXC}0RpP9HY$-t$WN4S_lj?_g9wm=Q)ke}cyPRoO}th4`wQ)$ch2N{ z-#_SPu-_QUwto;{+{!_O5FTEf?8BCDXq=qxnY11Ty9c=y*=l)eY%q}ttE_%lS4Dc! zKbQ4dn2jDH|RA-6T3?Uav1&h%|0GOtx9(-{-w?eeBRynkug|k#5CUW)r8~4 z?}H03HpA#ao8?Sck-j{g?wjE)$fZ|Es;7iAC8x;{S0AVN+18NvELA&Xx;B!>vGC>b z+VYL{&HAoQ*zE_ib}Y7(f4vbYg%3O*lt~5g^l?-6Ke575i#{G{qM=GCrPmIg&NbRE zY4ZYmXFEX%loUq7#iJF@^Vmy#P)&@x+Ar!5l)tP_1uxZeR&kfxyX#I7P4SVZMF*Z+JpJRZI{o^aQ+ROErePzbrYO8`XNvrkq_m@ugnUOfuzGo|7 zd*CkgmW8-rB{+>zLnjKo_!WI9griJ=O+HI4Wqn?L>#8!3!-3LRUW+M|)9**adFK^( zuplANSqra5nNQ ziJG_A5i}7s^f6o!XXdF=7+T(v*|_0JgWPph+Kil;7$ zB}o;m?NIoKP+qfQc%BabH6otZsLxi##`3K4R$~nmL`h>G6H=w5=G;=>JMP`tpz^p^ zA$+*=s`g`TB6-^=Mm8HWnoF^g1Wr2cB)DJnNmo4x_rl zh0Qswo$P<;MU&BA;bIn-C-Xf!gfjYK>F`zT8ANBDLIc(1W@EM$l3&mxH>|ihFn=cEAjt zVNzxn5k?OYDp08YZ2GDNyFHsdKUqWt-`D+;jj+TQY`A!ym=IQo^~H$=I6JAlW10YqYN5*|6+B2L#FjsMnEcUp808tHwEG?ihd0|XXi-=@e#U;rI3Ln#6|87(TEM@apD2 zvXG#AQtCI|WhvU}iODx=ieN~Q{>HlX_R0~1HA5-Npt-ta{wUN-ddqK~kho9an>&3? zY9YepQC7EsbZRz0-z_Q|-6J7aVi_Vl#cqqpS%=tgKsITul_7PjGyFT>5i1R1D z9Upw;*VVMw8SCDDM`)#9>l@8h%+AqigHK0CC#9cXNkRLfHX)xDWHfw96;LHOeV^8W zWY3Gkvx<>nkWn*1Du_C_+URm9%Uj(_753HW(P+&NXZ~VO>vc~$ZHBV#{7vutUBYEV zDW-f}aUBjhCXSw<-P=qJQ1u5vw{+qzpBr4RHa=%mu4u>+e!Y z5WNADC7)$Eo?idt+5@KLPCyJ3ZP0Ib&q55palTr=_y5xH|MmFk;IMd#!bs#TM445W zH2Qe?{Byeu%Y%d9!iG<0?xCoejdNcdtFeFWDK58DE!g|8ie#=&M;rKrPGjOlQ%NQcGEpBtc$kX3@*=`55U|%OoiIe^QU?{USWclkN zykdMl*Ly19yzzE+T!#0$nm=Cae)mhsUw)k{I=s>417XV}DJUoN^P<@?3nZKF{yyzF zw^lZb!mIZvd5x;HlSh@y0}CYlN;|_zA6I-`vCMU+9@uHYer8dTIG#@adfP$wnAst; zl%U|f{-BwmWB|fGiCHJ&W`BKSn?`FxWuEBJ)7|>wAV<;R_62(D^L<6{vL3U-ww?=q z?`XjWS}J$^kMpWAm(gDd!Kz6U`V=*&6nhvYz3*_xqv&-Q%sP#o#On6L7^?kceHQx~ zO==@E!%^{0TGRz4NfMsJH^P>OI>t$ho62)X)I#+}qtIDHuh|`)779%Ua?Rn@#YT>f zx)t$?DEY*K@xlF@K320nIq5{LoztC58TsjkRU$liqxqxC%trl2?O{@z@B4EMv7JtX-%Rn|FOcq* zOhz@%Q6@*7cZ?|Zyfm_?aoXt{JaQ=N!@w-)Z#T-x3r|kHpS9z=Rpqv%sRtwAcU(y{ z0f94{U1(NsUG0vXKFYVr*u*V~a8`K>`VlU1-ZO(N*o}UGzcksK*LNKJSSUGJ6qNLr6u*6OIPEDo<-r>2hF5d zGzB+$dhi&y4OM$g@#srm#}rkghn`TjHQc0MX+3hYHt!OojgI_(WD6*aIfp)MLaB%g zyHU5_33Q!V?{N&=NMgHN7CiYJvx=L7*7m^eTEwe%)reQhtx9vJ!UUw$Y%5>oAK){i z3Kn`Bo#vVfJiOV&x85q0*(cOGBs@=#i^A{ixpNxqwd}y;H+{~n?7;m!))d#h6^BP+ zc!xOkb`kX{n+LC2sE@)#g;?yV0=&nr$rjw(X%n5@oQcBm4%IDd)$%k;i+t0Ck2s(U zC9y04g#&A?@7KL%?Xdj5hQCiNPi5{yXn8H%2J#I=ty->*mRN_P^@=T^E4^9aYthC;Z8;(_1|{?uwZXjs!7s#XMaJdDFNj{kUIN zgr1eU!z0o={jEAw{qJv`S?Swq!H!Qp1*rXl*Vg=8&4*@2AN~GZ9nb1VJInoDi{*E$Kg6%Bhn-L6*2;WM>k~b12hrfHZ zm2BjwB^H;}$sdW!Q`#%3E-y+rS0gtP%4yodgbk%mxWrkVSj|Se?I#sNJmajIs zRxgqc@fZd|I#_DC~&f1i9@AC`6LSCCzA~Lumbu#3`Xmztx zlhm2WelFv7z+MoAt>)JItO+q{efir9P_8F`spp}a0OEEZ#rNMe3?U=|=?HCt@An{@ z2MBFVn00sRJ&&fPtZM&yLZ^fWpw=ZcbV_YhIAM*9E$RE^)`Y2Z<*V^60kHE>KfI9D zrm<&kwMU=Xqc4ZLwVDv0`Oq9)$&w&bmaXCz3_c~UK;&yN=JlAT?4YiP3?ZImE?Zi~ z^d+0gz?_Va6w7_O{(OhT(;%GsXq|9 zyIh}l@C`Fg{Z0IZCSl4*jYDntQdcxfW!B3y@n_Ov@R8`7%}%*9qaPom_fFTlxs+{> zRk`Q!8-ILM;jlaA+GT9iU(UgmqrKob=>hFhjudwM;9``-O#qs8Jj83!G9UN)bjyxTb$yKH{Vav@wWYtjB~$x zf;Vqv>>%EIb8!n!27W+YI9IinvycSRcTBMB0p46w3!w##2ok^A8dvGMAWkmW zkY(3BHL!=o4RbC`rB8Wm*fr2{EM%wWjc7zX*Gac|OQDP6iPwZ^=mc)+VB@_fl$CFnqR*BIk~p<8HpLJomf0J$s&*(R&nytUo^|aaJyh zvpmcaXZ}v^tI$$r-`fOztEjC}@>0gU4g0V!lP%j!nZh>`&I7beL_}0W)XGkEvL2RX z*|37AVPVIoB)fSkAFBMtN|;s`b*|#m3X&C@SK>Tgm1w6Ax791`TP*S2LsZO}LN&@G zv+B-_hO3HPeLeje^@0jkk2KrUK|aquvryx;WxP|2DB_@XQU53pdv%Tsk*kvzyL9ik z_vFw1IY^ONd)Cg};}s@EFyM1EI^=fr*fwX6GRASV=6ULu)DRkn1}?25WA(+o3tEKN z>{l(xw2DoygYIjXKhRWnf3IabqWFBQ)2lW&-sTyv6sYx8L` zCEK6kU7lW%$DSzxx4-xk#`GX2yKYLK;_+qq&dj!if04n&nk`cWFwRmWZ@?}UhW-j; z_H0Gm{_1>95H9a4)QiA)OV?vrJIOLtqE6=q4&{Dg2xetB7jV@_!2B^x^sm0Ga+ z8u?2<=Kf{JA|lH-X5gvzpe1Mew1yDc3eVC$nAUn%&(Vdk)4I1+sp{(mSC~lTe|lhR z*w|OF_<#YymdPWPm3x@v(22FvNX#cZDOx!p$|OQN*2(m3GWRfp0#fzp`~3>28MMdn zrHsaJU*zK(PwDvugdJm1dQ^SY8ef#fROKk9Z3>2#W`Lk3*t~w^CT1qsj@FVd^F#;2(3`5jh2i6uoU=ZT3#br}a{POOg=dJcR+$Uty8>O{HDHPu(AY zr7JyE($5nhu@J1D>CiHr5AZoINc_16g-&IF_WwD(ihS@O!^vO)#iCUD{*6fUv+OW* zg_K{Iy!gs=2(|EUp=FG`%L=J(1DQSsQn;Cdg!yMM1@?@8j z&ZuUPs+Gt5x=FOZ_I)jEE)PX9MfnIvQ5xmB$RX@k*juF!cpu9!*_~@5@o`kmwZB=- zbmdfSw&hEZc!63953`yU4RbCoNNyFC*CLvFr#kK0&MSe2)2QwEGs&}d`H{qz>Ts=9 z1FGe4sq%R$V{k|sKRW|EP5D_97DJ7yDzg%yk1DstPrZkYDl(BOdnOx&6Y5ep85M?9%U801EPl zMv^P6w*%6KbeXDLjepN8oCu&KVTNg)(Tx;@p<-u;ZC8Ku*fPxf7v8wu-k&e~B(F^g zfn9RCseSo(*JM_o2D>ehTBQ?9QGfaK$sZADaW(}A_l{QA($$o}ZxGr-Pvf({{pE>( zz6;=|x5MaF!VH3I#kpWRE`l)kt7M3>F9Mg&k^b&SLa`?hw=J^@e@LL{`F-che*cK- zk3ig?Z5CZ|kVn~!M+-6kt}3gifn`wM-p&$zGHd5h^O5#OL(rA0V4?Yv+vzOf#3rC3RQhqezz>l>O*IUo=tf`ru#1#X_jv-(x;Z3iv zW4yL(=%oE>cGgD4)>8u!+BER-p9$`MZm)EB^qT5wzVEj5!Xp-v{~$zNNe~)jIqdT; zbFvb1m-xaH&2K5qZwgmKC0hu`<_Fhc+6_hW;bI<+aND}OLV5{DcQ@X?9TdqkDrk9X zivXGXL9!(Nx7(NbstU0gr$-YpW;m^ggFets;6UsqVy37&qri>zr=byGDWiHn!u?i_ z){ggD^TU#j9EMpoJ8Qwc5|#VO`-t4y|Dt4k2#KWo!{reLyPRb7=Ai@5Wess|rS3)* zqjS%i3=^8%SC@oQWvNe8+!&N^xC73y@7?2nnK1vPS!I5*1MsZ$TFE=vYyKU^kKhgV z(>wUkhlW-xli#lfP=2g|*RuTF71|-DqhHO>Sy7!3L%%ug?! zCB2Q1`E=p0ok|A>@Gj0$Us1LgGY)aZ z(W|(bEOsKyNl(slg`WIvDqv2y@H`exyA6CDb7z*k7LshGj}A)t&FaQpkTE$Ans}Nh zJ^0+BQP1wzSI#+tQs}|Xq|n*`;;?x4sE;+PfJlY5w3w@&ZhlZIuER6(BTu!39YzQ$ zE>zBGG+qV$pTULy89!z8I>}g|p^pF*WW{fUaf?U;cFEX%!iZy$O0eP|5b;Ofw0-tg zuH)jajX-A?Reh$SHVTd+_}A2ujD~ie)uR#>>U)wU@=A4b)I0HYzj8!!O!_C*CdaGp zihjX39d*1g_NbBEUfO+JM7$m2S%jOd)fK?U3}m=We)>OmNs*K%0a5(!E(2Ej&Ws4f4)I4@QcrA)~f&eO$HO!(Xtuk?ga&X zsxwhOl*A1+LMb>Te7SXJ%z?M9?`UR=d;LSELYsy}j*eC}2jUN{y_W9}#0w7p1Jd1# z%AM5Pofk*iNVCm)lS2|Mj^;f}6K^AHT$(=)7V~Lxs%uA}l_pcQN$1+*DgYKRtVGOh zs>Elg21s0te43tdcops2B)+Hud7Y=76Pd*^SYTx9I{)qQ=W>8ORO?teHlLRbP4JNv zN+;**7k?()AkrKjM;&SZB}x3}&uQ`tz{3UwwoO{(OHzi!bZ=l^H?dMJX^fLekvtP} z9|VaNHoZBSDv|OgyISLF=*yrK2q+;DzCg)62)u+ zaCp0W;xe@llpGk7`vEn=^u>e!?nF2cG&@seQ%ql-^q9`Jan1Qf5Dpt{Bx#nEAZQe$!>*t|K5#l};xDiKjj0 zLBI*e0Fl2XyZ^@mV{PghwxqHFeBqL9V8J7_+S$ zfo4aZr5yhS=#FM7Iz!OZH1Y`@ry9=60uk+|acPO}tevi^qx|KIka+T5Z6}FfdVY+S zZ1b@=q=cNDwTn=@H}3{|5{PRIToMefjJ~E`e*(IN_Jo0Bhg(quXo5X65u?bESpt(EHc}5rN4_l{+t@>}Ig- zBcp~EjaDp>D-)7ImAQ_%{cJ(xS`~`E$fhrOzhIm$dRV^p}WeFUX3iQY0U@eU+lRhG2?TekM2k*va@KX*-Z61#I= z@IoEN;_Joz4gVuYUcExMxV{3TLDZe;3weOGfL2`3XC2x-W#FU{V-rQ+Z+rx7@uCE6 z`+@v-CcZzv0zTSucmKL=BKftYQI~p#-Eu3}sf~WM7!Z2HvSgB0AgQ#u=Z)Y77ta=~ zRZMudf2p_l8sgD?@BHxILdwQKuu@4e+lrofEoh_pddiL|?Z6(!3=?+g49Rb1hoWM6 zblQk+;_B6scBjEY6O8k?c)~5q7b@?Bz7lQVoTNI`{DxL$zCVMACiT|duc0)f*&66o zqM;SE3U8OacKY?;z_nf8nIus?spCtau*j8uAXz8vw^`vdY!St&=CO+d(Iyi|3jofW-fSkOE}PE8rRUBd!d&rpA5F9?)5=oy_)4Ys@pQj0i7EOt7MPsL ztG9cUleQ-T344V}YAm?t#NFZ>igmK`INL8KuTq~;>xZWHO$ zBl?qE0kN& zJ#X^}pDEGHwxX>XB(1>9HUVa)>JxWUtxB!Rl+0VOrJdsK>$SV4oQ>sDND>TTxBh6H zp)9kUzKD%Zxs6HatlMcs+0##&{KuY&j~V2mKt;a%8_~BR%d8S#^?DwGIV++!e4l8M ze?vxlyG2!UN4sKts2vMZ@-U1EX=R)2m08`S+(A_Ca1%Z*H14#~aXEe0R>SdW3c9T$ zzzZ$~hvdSs#A=W1#W+i{Eq!hq_-yDi%m$-^=exh(KD#zj?yB)lDe9`SI>&TET#JT( z5$2oc>JS!6ns;U;`d1A&xrZ`4`Kne)G35YWVSp5I`}z&jW7S0+K}2)wV_A1MBl%!w zl|QRP6q2sm!rdHOn(WsJI+z78Nk}X6|#fv<{ zOBTF`8^i*rI79%BY*EJnzUs|3-U1K^DAoK#bi>_LMsvRwVwxM>>XLSeGxMvo=Ld2e z)5)@l_88s@qxwLC;_cYmSrU^jvZ#3pO`c=e=8Xt|ZwA6KXQkgn3cv>Q4Q4Psj>;t= zXCe@9bitU``8pODXgT6pKi1I4=<7r;1fIQ=58e;1M_F*L1^Zz~;o+Wd3Wa8yV=f%$ zmsh(XHw53264x%#-Ceu^!4KP}3^N`6c$s+X2J8~9HiN!MO>!q%^5>Up5DKB#%VFzK zKcX`j7gLWb>s4)MhZR*V^Hc+~G(21q*V6Bn=7Db3{4o1@5Ji8bD}?tLuM>S6XxWRP zPkGlk7w=feZU6d@jiU?EZV>!h#bi~%PROBlgj{s06E+RnNvqMR5vE=#WOTxX zUvqJ0MC8}ndaDY+7tfoKo6WhD@}1a4Q8r8Wn{lLun-;n$`yKHjrBSNl+~=PT6l=== za*PaP_ixQGqeI+AdW@0$v+OgElCVXi#aj&{oOu8~s~C45Ghw1B^7c!pBFmEYCU8p3I`zX)^BZ(V*tZnRNc{HW z`*>jd_av|O9DDrIF`H{PoAkLiaR}w$*H0W6CT!lZTpz1kcQpf+OR?M@L0uFf%aVn)%3>WUvdqy+wI8&t z0Y3giBKsbH0>-L5X}1Uq*~wxRwrs^ZrF{BKZ>AW9PA-^5v&h9vmI8ecGCCB4)`-+1 z&+rak6lrY(qfJ%x=;HLWWI!CmAVE?W@XTTP*;4@1+{sGuYYVp8A?&Ql7hNf*LH-f_ zrHE}Ml3h9RQU4tY_hsVr)O{3ncY-pDwmlW4HQzkZ)@JhLdysC0v&owX* zJa4zL@4Iouq+fL{7>I+g9v$v)n6Ujk*xM=q6?^>$2NZ?Zrf6-_l)0c)NDYY>5_0~} znDF0VK;7cP^GGz&dInh{h0I>1kpx?WtD-=Ulb#7Ix^u##Ttu1gu#m0*#Vv1O1o4>o zzCTPi*;z(YAMZTMf=vMil6Ti2RbKm~KKRfaQHQ4cqh;>Z?vB_N=QZqzTYcNKd%`N- zvuQZ8MXi6QZ;^Z5OHdEZ3R@@~dH5gqONc_DiH8DO+{3j(Hve%!F1t-nFN2*T5Du@> zb}4yDvI~7>)@KtX#JbfMt{jL^L{Q{~v|UO*T;Cv(N>P=p8();l8DBiyH_m9N+b=lG zg^>}~o3DPeq;;WRDnz@jw_{Gf>oNZ%xdb?|%r2C~v1qrF2vA38XX$snz10XmO91T- zvE}g``pGQ?&FO1g+z9P6ft=kwEcY6&r&A&gk=u^N z>suR9H3QdNFgIj!!AX6;L3yOJL(|Ta>qKv%}^OY|E|RnaUywITX@!8 z*E)p|yl=YcD+dWbAutG21i?M@fl%;^Z;nK*KF@kN{57IQ4eFlztEDSBVnNS&>`yOA zn_Su`%Iko2w8GilXKQ+9%>6H?37)W{FqPo$gRm>yzcxp|Gy0=Fh8u1+>4xyT)iL6& z6iMGPqWG;l;08?CZ8}7;0`%KfEQ{xkg`|Z7b2NRDC_EmFlMcqoR3Dpj@)m?FJh(zkfJ-%)MP)#TW zV>m%qVeK^=1lnrB?TYp@6Fvo5X%Ejz0_lI4lv!SJXqd-6HsQ}xv!0g2z;Ijcwk-uyy{zr-=kKaG0hJx zt;G*NT`%yALIbj=Jgz?ZJ0e6hTcfown7*#>y}gM~jSJ^s+{umbiY|ZCS<^}CRtR1u zG7&xEQU71&4qV&E>zEse?%u@}AETH}YXcS%B7S6qLP7tjJzI)4nYHuy#)>|6hw4{} zIGdsFHW=VnUlWCo^nnT8-I}DF7A&@&&*SASN&HLJ)$I8z9#QDFOZe3|Ex6olcSc9V z>1ackYFs@#!VuX=t7B{=jy(L2f5F2b?)13*j`*4>L@q`dDBkWZvz6<#YuSVERr`5k zN^R@jI`s3#x{l(xe-e3MhW}5u2!B6W9#n*4NUjS(@fsNkDm$Eh`Bc4 zg1dM5x%j1IAR10x@4fGIszpOr{x6+0{J4T-B?c7f+Y{YXDxl5bAxc%8z0KYN)!3LC z>1@~Ef&8Sp30Oq0u?N<{C2Q@@b^8npKS{J2X-S>L?{OCkFG z^6~s|5!^KQC!VD^>R5ULXkV1Y9hy?q&H!>hR!u}hh2z?kFng43c%AG&U1wbSr!s81 zl56uGCZyt=ZcNQB0;BXd>Fq?)?+!o##axbh{CCm*CqWZ^^;8A`w;}ZWH=>dT&CjvI z*kNFz*x8$iJHg|Bp7T5Q_+#MA>A{5N*Fu49$)Ki3lq2CEZgllN*L zTw|If)$8}C^JNEEOfPZR1dt-t3vt-rxuF9hfzR2n$L1~>Z~@GpWUM&08~&3MC?&vq zvk+tdS|Qtlot6;WzI^al$N&OZyvUk!1K5;#|W;y~baN<`Vi zkD9!{JLstl_Nsybs_thK9R~Pmp4S$bRAZ8WjRh*qV#t3JoZ*zL^4DWk^*>w_R0f!s z@!y2IhLSud-hIde9;k2=F!2w)NgvOr0Dc;nt~~zxp9ZNAU8Gdp-pvf2LtsSST*Psp z4Di0AfFCuf2SCdfjHs6axk>Onz2s`cu4`B+s2c-?iYC?bL(hn|&!CQ{xcd}fW1jhH z{rhWNzel_Vic&{=5p>M92@;;pohOuIc&vfoCPZ-RNe>?PKOz9UQ&ExVP`@^2&6+9r zK|&heIU-uVAH50blMy|H`-(_HRLJzp80Oa*i!w0E8Up=7-e&$C_6y+YJDM6Izrqu0r^ zU*68O6!Vn$LOYndY-(2KfgZp43#jAHQG^^uZ`A@O8ab6DV~h~EwYAb1!Il=c)pqwC<&&0kDA+===(r^>Z- zhNyFOyVUJ9DM9U!xV;5cRH1$`3ylPmq+x~gc=T-c>})sp)+%TO3$#k{xGzgd#0siXRqo>8fTqOioe?)5wG;cO25tDq{6Aw%SKyq?Tj z`S^V1t1i`(*sWf!-&}mQ8pw*Ph&qpYgmC}CKJH{9muMlb**_?;(7b-;_!~`E0bK$SO|12*NsF`= z6X$uH!51#*#GDfy%Yc0n^ROW>k*fzJrxEb+gN8`nyl(y z>j(`OJ{lqRA-DF$%0zwoJ;*bnzYy!kn>3cx7Pl{UhuB>(ZGH4_&z+1S$5kcN#G}S5 zI70d)t1uOW2Uti7^`Q|8!1qM+u6X(SKkUl5E&s2Ry+6N`jcrYi`6{su<_v!)LrxX` zDDw24l^s1C?KIZehwoe32s}2z(G(6Zn#LtEbk~OM-2I@TXnIMp8AY!W^6JvXSDz9g zu1``(_o*m2tUn^SsIE)TF~oc% zk}(X3mK)sgyl}A_z%uNtJOIb&bxDrI59XPhFw#v6>}>YJP^g-DxhU~46usnHkQ)4O z`HCp6NlN#Is&@8fJnA+5Igv--Zs%!bq+O|BJ~IG21!{jROoLozc23&s?Yy*>!!erX zM8G#zuxh3r!`8U=F6nA)7=Bf_8hlqqWmL$LYVP#G=;R@_gAp>V1?wCE-*gmnDHRh~ zb(s8SYE$$&!JLj|?;gx-ax^zu(6Pez=7dy2F_&{EHo!7dp42|x+;hjl<%)xLiQ~j| zTZZ_7^5%Vyl9luR@M{a8sqI{L(&33NtrPTfP;t;J_uTjFs=3bhg^?9@iCk1=j^$}f z`_b8xy$7~RVaF5O8!r%hSU@WdaXfhYCdySiYY+^HTN9~Tz+zW&X(suNy_Y>-4dCz= zAME9WWJfiqYV;t=n;}h`Xr1Li;C**msDCw(2SWrYcD%-?9%CG4s8^UE1&2&2ghl*J zP~K*=)c%|{-7R53 z{Pth>4}ipzD*%)IakKweoqsALe-!|TE{To1Mt?xu6rmAl|GjoI7S1n6$>;l0G@0nv zkh|k?>Zp0K>(FS%{qUnw@rcI67iO&kzYgYCR@$u~M2?7a4OuxCYm`save24!CRB6% z9geMCRhuJm`n&swIt7OP>mO%OiOQ7M>wqvA4dEIY8;s(qmt#>&x%V^VC{gKU7x;FN zV+stx2cs$9b!Ch6t0&;vy%b;eh=AssaFV;9Vnz6Nzj#k2BP5)9sIWZ8-ryDhZ^o&}6g|HKz4uF1Mn-r1g^Sh$T{Dq({NIr=B$FA!oV6GzP16 z@r4XWI~FKtLx2u;7Qgx6Ww1Sx$k9_~?@su1L6wvjsXX6bcaYJbIonL*+ZwLZW#UiR z(XIDG8UaJQf`N1NelqU-rkdSkQp;z`YxFK&>-qE;RMu^QZSlRwU`T7 z&`Ee+oNrGTus=|8l}-)(YMW~_YzFQIe9OQu+L$&PyK45z%?Gh)@a2|L@CBb9!1P&} z`4h?+z$Zxtsy$uAlCYnJfBC3i#aG6CTc-0;yUZZoN5l_@x~fJV{A?EW+O*pBa|GYlN%CIK$sDVzTckBR zBH>K@U{p`hPcB)Py4vUH06riGhL1dEn!`N_8cBv^RZVcP zz(vSye+M*4w!3h*~BW@J`?e3Mv{@BM?RuIH21=g7U~{v}DwBs~CoP ztWn#4y0rG5+;E~&{w{^6o5LsFdLD&du7dx*J_iVRVy>zRZ9)9bXCS7@&?&Bls~Ks3iAAA*gclpLsukp~{0Ti>p(KDTF%EQ@<~gOMd`iyI4f_c9y&bL5*z= z3Wx+GwoUOtqSJu6CV=Pe(+SS=0Gjg<$`J~RPBYyF2L6szGTZfS!@aGjQnQXau2*CD zR6Isc!YU9dfh<28IL1U~lBs9!VzEJe1xAkVp855xga%@tVa1>vv;qy0V&|5$olL9C z*F}hCm|eMXXB~3KoJlqAs7kIg&E2$>@jLDMaw7Ayj69^aB`Drvd;jo!rfjtvF1|go zA@YKTMCLMk&bwzb-7A%bDL4QtOOrge8e6vEQ6?}7fnWGTc+zIFKW!0E@WM`PIwGX$ zNLY>K65L~B1v13dl1$ekj?!y&7mVr1_?s6wxzhaiHJ}e}BnSnv`%L#`BheCL^*a)h zB=%ye>K!TIvuQIru_{X7BOigmmcNVc%`%E$*e%Hin!}p>bWAq&>FnBFT*0EjWP7-v zI<2D2MM>#wPC~w(f+LbWOM}Y3w*l3pUYK!WBBpbnztku2ls7FyIZ?gwN>7>{JcEjb zh0xb;zsv>n!0>@-z~Tl;S-?j3E5265d*e^%ITIT-Aiv*+a|Yv@z~KINx8aj|(``v%v-YUwnh&s5OHSTR-cy?9D$@)9Q|K zmjFmFj9C^jmi(StdcI zlN#q+&MQCCouP9X!(&m@NEz(8yok63t!8^~Nb(451=H=^u9K4zPn5VTt%>3ha$9K; zKqABDQ|eC>X4mKbh_t&e&1Zc{`JH9()2-a?P#nA9&D)X&9LcN(vVV-pJwAHc&hC+H zXtqtjorv}aU!Jn)l@!Rr-N$6jor>uPGH;v1PFeq(TWPZR1y&uc6_!i2j&qtf3$`$Q zC6`w}GV9Mxnx)kExuOnZP-K#U+4+U?^(D>x|J{TS_{bv-Uv~`qLr>FeY8qaX=gsx3 zF==@tNJNqASta0D=Q`7#g+-IPghq#&iOKRt9#A-cj_G*B!|N)c*-9#50lU-}Z(aSw zx%#%!VHAAJScbyW{8;+{Sy{HWf~_;3cqv79o^D0tqK)j-sY`ZrL%xK%Vhz6~N_;&b zg|^r+qh`zI)vkSb_c;6V9m19mfmDOtS!y6mwYWdZ9~!o|+2%E*6HPAUpvV+M-Qyz< z3sJ!!&mQ=-rYa3|u@UZ?5P3sw)t8?zE8%`x@_DxS7VG^{5Jyl8QKlC(j%;~SdA!!c z?CuuIhn0Su+h+g}CB#HO`$P>4K*VZivT(qID-*#tJ|*cDaP~A2Wl^Vs|Ju=i?cNjW z%WH2B(@jucKL2juD7QH!&84iqhoQFbo{(@oR6fl2G-BD37VvhiqKlE<$Hg*+(nw9P zH<}|k?M-_7vf>k(7Pgz%3tl~X6duIa>!bM6*E&Tw2ZX)c6&#K82kk%KpQC56 zI(KuAN%PU*_b?p$tJn1bueGihd+qIVv8k_QyiN-6#QAg5+U{00Iw)v0MN`>^{jW zS#J86{LsvT+oOvH0Uw(Av2%pYeD|t;PnbK|AOS6~e0(Vb);=B7IdPh_N|Ls0p=vCd zatv&;Y9SBBL5@}p&qmRkEml3_rCjJ1=eI2n2%h4yQ{Cj%xFaKNl@%q??IT8N27IJ5 z&fL>O2OP*Mt7(rW^^;d89(#v> zVY;Y5ayII}o8MJU(hH}bMh`?pFy2+(R0KVXUtUh)kY7n+ z<^M0Ta&?O2!fByv6hg7CE1Ks;;SG{STToRdcKPr&bTGt(l6GBS;NHuiOy6t^r~Ivd zSvgXeC$=(`+u-)8Y>VNB;TI~YiOD@uZ}VN=G^zjMK@C^nk$;LSW|#xZdqaEFh98OR zW-Y<3*gg5I-wd@p095k*`N_|zIeAu@YQ_OV)Q0FaJx^WP5yA_cAArNoyY}diYr%8M z|Hyj)prSy~xVK?9KkK8=XD;6#SRsJehCATgdI`2r9oP==!Vcq;A`Dj{R6aV8hPR?j zwh!#YlZ1SY>B4p?5G?a`^PPJ11~|NXK=Ypwk~kseO0S%J{UC^3&fMW6K3;M9zdL7< zKm57-RM8t0SlVpg@%;+X{R7-7|0QY`>57AN-mT-EUjH4rKk+XgdY>!J9VCoWpFv)c z2bD!|iyaIoN7607-vS(wDJ6T>=Sri>(+(sB3pUGp5GvaX+ytp#fe{h8kWSH5T*rSW z10wD60Sc5wXscJ(rXR_YJnONyvyLc)!1Jqg!K5oPw~YLQVlmyB{30t6Cml?z#yqjr z`pd3C{$q}{T*81x4VQw7I(wU9$9*OMpL_~MGg}fzxDFDW+mSPjzip9!dL^{*T|+UC z4iOb0^)!eZO%N5OMvi7bP}HUwiCa~<&u^M==-(x;-c4K3&Px$p^G9o@T^HJ3L5&W) zb7h||;yOI=KH+Zp&5&!NSh?@0`1gh5qJ-#>Jao;FmoR8k2d^Km1r)7%R^&LfDBnWtW-P|GGu2qB5!{U+>(aBZ5cCT&=Nd?I^oFc%o{#yS3M{%6JZU%Hj#hpZnENqv(z$w3P3DZyz~72(D#wMVn#`T+ zcWL(;*79_RM_zBd(px{wWaW_X6#K1!RSEkK%%qaluM>=U58>PSdb1-zu`EaboWQ5V z@r|3pUm`MGs4D^tr)Nlhp4hS%;G3_4G_4#o=KZkn8$3`z3PLa`5+|sBx z-*vkCLO+_whRW7n%yif8;K_ZR<|zJ%+Bw^AP&?uzQP#6fx^y7j?By)ey~4W@3?0da zBj2`@Rd%-!C%kOL)=suM_AIac)4{b`+ZHKjo6>;Edw*N&leLXHAz|Z-h%PB6U@Tv^ zJU;?dc^gjQi3s|B;VnVQiU}-vnvk%Z11d5?=C|!XFYU??5KS|7`Tx*{GgdCt?+rA} z9$WAU6OmZ(E3%4Ji~=mBLI}>K#6S9Qtr#_FkFX=xJk^ajXK<|Gbsh{H)4eTj8{N%}*&oA%l z8+1TFI|z=@dmvJ>tsn}csX1knDQq@d!JRP>6cRS$EU_HaTVT*Hyjbj?V87wnOTTOr zaV~6nKrN(etQ2G5e?g-_y*2S^yqKYAk%xz^#8qbCO4YXRr3R98o%uY~;G>wwm@zy` zDwJ1qJCH3I>U?27zmE)qSTA&g!9tTw|BJ}s_RPG2;*B3GMjkZco{3Jm_dO zeW8wQJ}(Xsev8rfw$1v5hh!!FMM$ofpUaZ;pmVZW)@egEU}t>!4s6mo4_N%U2i`kd z&rrZC1IcpZg-36!lc5yj9DvB!XP)ZZDm{ zs(&D84u?+&j(Nu~dVsVO;^*5c`rvh$ANh*3%FX&%2nO-80$prwm6RU(%CdBn6b8hz z=ES_(36Lg{18LrC?y^FmhA!igN#|ew zqXjsaqxF5gepDS{LZS@ZvUXOI_DVpW#Mh^V?0=AN{St9iuMN!YO-m@czZpWjVe|pO zUNYhRr0DYba)Uk@%oHk;&w+RDm0?NX&O< zg&|=PNOb%*sM0_fO50o^RkR8^;bI!cZWW-%ESzg4Rsag=E2+$O3hQxQteDnW8mWei zJFztgw;zOIwt_w0Zh^_I#aa6ByIK3@W|c<$#&JYfnbF3GLYE*ufz1eNTp#u!WSkAe z+0>XrPah?H07#=^r{4X|6N?$;ca~sT`(94Dl{|HXq-UQ#gr2nb$ z<-b#$6KxbgP#}LIDicI}M&=Wsr%sSc5HIUcG6keXJfHg36ENYka0+D$cTc^0N~Tb! z5%MI|!!1afhwaXNKro%)rYk+I`il^z3a@IRY)~%=5vOi98}8nLVx^Q!QSdE|U;6GU zn6gX=oO8JcD8EAH_~K$0oiJKx>a1ExW&pt*kZH~ndu`kp!X;ZG3TednbH~8``+IVc z5NeLl=SWFfwOH9){inW}G3d&jfDfw+%-L#v@^P12Bww*5eTSAdp*wtDel6C34*KgV z!;lmM7sVv8;X@~=&A`bdZdd8{HBdnKQYDPu0yD}{#i43*jXCAd{0R~S{Kxxwy9yxo zNd+Og(#=^J6|x2+Py~IopKdKh^tiNMKkk?7Z)fM^+etsNa{#@xq8VF&>cd4qN+AA? z?eyb!6XqESCR=xXuxhKuVAA_DxEE26DmnzrLS*;SR@1@X6& z?g$enMh+RFq=}pX_0&{azy*A(aH(O6ML-nxz=}uitUXI9sd%Wo|6`Tb*V6)x`hm$% z?)O6AgFB=TB$%y!l}%GDW%9d|G1E3fI>%3_ltvn?OeFQlf)>qf&o(72`6^csdW%ZeY# zh~eV8mX&FF>LqK|*@6p_-gZ&4hqiCTmRK3wU6*7Pgh?LNWnCofn7r&`F;}H}OoA@@ z)DpjB6B3&b+k5ly#0(Og-<`{#eYzw2$QLjGwc}U?P0|FE-+fntN3_KXnE)p;gUvj$(OWFpKl8d zb~q|PGqLdS7}t|cuHXX^M&ZGKYJ>R)J{07A6CM_;JfEZ1#|`L$m3t7A6j}8dP8E%) z6Plf8`7Yz;;3+!Uxitiz6ViW%=FvFu8G$1u`j<(Nf``5qX6{Pd1>DbS3VIJ{2Uq(e zUWxE(ptq=#z@<@qt$&5}zx7jr798cId^kea?Wa#)U!mB|LA=D?WI%3z% zX`S-}I^rSzfL!&|OoGA_u}2f}3#d-h=z=JfMT02?ryQPbBcPH{Ddo{Q^iKE)TZiRa z0i%*{-ImxT1dip>meDu7qo0#GLS_BxEimg^Uq+^npM^5j1#ah|sr<2@@sT6oR-lYL z)mKsfXtlj@`fXCE33NH!WxkL$x_7EHYer#mEc}7Gn2IFH6u%vx+gP@)N<@IB2CckR z0y&*zHr6&BO5w_SABS&2iosFR8jVXl(pTdS9dz!IsowTyMBZjEVPuI-YLX;QWL_M6`Pc$sQ0Z?F$}q60FqxW30c}G$U{k*B=!ZaL(J?@aReOmT|d?Il;-R2k?-8 z`5ZWX>OSQM}fP&%d8V#by32bKKa3csIz& zWbzd;{Aq(L-fl~)t9{~=1NcYiz5o2zRVn;)y*j?WnAddHgr9?`du+QeKjae=OSJ9g zd@Ih~so>+l;yV0(2cES_WtCqu5NB&I!soar_smRV(NrYxb*Rb5M(3$nrhWeTO!#1< z3vWu?3{I3E{NbomJxKH^`4};s7{@Vku5dU&MmF(^>nF-+Kw-k5N@DHeAN#*Q>?C^m zgb|ddd~<&N8u)uCkt!ora=4#wH3#-g+(*Mn;amJUGRQsV9$-ZAvXlF+lc2Y(GgiDx zJj!h{Dd2vC4ZOXIU0MDaMda^k@aj}XXOATn5RPXqIfd-fEr3uhy5*(dpTG3r=GDIW zUSo~b(R(NU9em^x9(Z*fLrZ_uX5k@!)&ta+q;n0oW^S~vzyG$iWEOI@lke~;pC=05 zzs|tOm}Wa(ca7s(*H2&bmrL6?t6abS@H`V!BM>qkRVm#k;3`K{@o0t(UtGm|*g?PG z6&v{PBO8mu_r=uobBk%S*Qq4UpJ99a@BjMiks?0^%lL5kW16G51sHn(I*({%vyH1g z0y9ZYNk!@BoB3ztoC%6fp)D>_QcK>_o2l<~r zA~tRn!mEB=im23umscWK3s9Dcgln3&ZN_K zP1nUMyl3;zQ4{$YqzC>qXa1Ry-;NluQYV0^>&ouNR}*`mM~8`nS77rt!z;)wbfj2b)bA<`?hOyqgFL=PGS(Mp3Ob zl>Z^}q*!?Vij&TV{Qh(9=%kRG-cbA=xicX?Ef&(7DF^LJd5gEleKGx<@|(X8#{qmH z)-e^qY|H2Asj1OP;HZ&>-hZ<0@iDv2W#f*qTrdUlz~NMcL_`t5-x>>3(^xA!-K&eG z+_Q)qNPjLsZWCg#t{K6ym~SK|j_Vgl!J8~WEk?X+&g!(Ba?8@M%zW@UFGOgG<9N%= z>q7;iRPSXobS9a2806!7#&>0!K}mW(X2*e7$n3 zsJ#Tu{+?J&-UseT-&7;*o`O7I?Y4VY+>+HVP;&AnS-9P(Xw15qI^J-Ql;jK>)uG{} zSzC1*z21z#Qx&WQto7P7_ojt)85O8*va#~paE4ya=BL_b>wCsb-GbwK@$X{y^NV6| z%2tFL@dczk*j(;}Q)Yym=A+>qjG-I$orSZQIx#5X@|;Nv9S;x7SoZ+_;o;o|)4(Y` zk+HUx#F{-(1F3?o{#XMq1JyipTv>gYpScOpR}|vMXD^&P=M_1Xdt%O0)H)qUClqFs z&v}yK+>O}2a7_)_3ahaoa#Hlx-GWWU1Ts?6PhRpJ>rei`vpMGb_^}LNCdg_r!WFyx z(?W&3Z}?ho7Hrjtpsq5-?}Wfa`L)Gib}%ypr^!Xh?(Ob~GT5C)iwU|urWQ`PFqc;< zzOw6_pt60qBde{wO<#C1_QkEdX*h_z zwx?4=P}qE!E5^d=`KnHwAgjv7q}3feOgE>lx|DOaO=8!*c?Kc(??v)nMNc1;iyNd{ z4KY6L9Z0e?FymHnty9o)W1S4(aLG?|+*9Z@#>#FkOt@0u`rPcM?i9VQ`oY3}zB=@F zbatDqra!rfO)#fFsnMN2Khg++>%t1!=Zpg;qJ%_a-6zIu$jQ)Kxg@l=gWue zj=jxXa*(;&E3xM+YswSOr7uiBh{F8m!Mx@kgMAysJH`2C4h|*MS6q~>Yc@@IMSFXu zt%{pDSE(7!`rqyC;pno zSsx8$N9X*@kYZ~_teCr-89Lg*V58g_-L-@4({eAbgW!kRUnsK z1{x->$tq}(BhTQMn23s?edckPQT8u%9(IhnH&D`O z9Fw>j;1M&s)MY+p^w<5k5rpdjt3pUCSkfX$my3JI!-taqq34_z8p>Un~ z;0j*i$cBc75{A&QFojxAM2-?jQ+ngrOPgmq{Ii2I*{%JqiMD(qj;vI$;s0+_J#qyv z1D4KHl!_BAaX0Jg>lKt!YH`K8LOV8t{I_r4_F<8H_KC813zJ;2vjjC&bjbS}PZtrb zPg!fb)8cy}NIVLG?}*sELTG5H5x}ieBoN}Rc#N_7yFALL2S5o1*x$nea*Ayksrj)i z7b9e!?y3iiNE%ojQu;ncU%IhMQ*8BP4HPMj4IzwaMvb9dIVN;Q!t7nf*PO@&kD(Tt zwLwxfqqODOExP(*wRJZ|Sf;S^H)W0E^GHkNH*8p@9-?X zHDG9ECdh>&W^xUx2c8>Ux&OtNL+_QcgFg<)u~?NrhzzRjfBwnI1GFOwFEZwqEDF=) z6sg4?e171(I-^qIv=AH4swM?MBsW;Y+Y06N%Wu|SB&vhKU-_m(;)rV?C%L82|v#q>D!Dptdb0kJ32AkQ|yX~-= zUNim2q2m{=k|6Bid$%1_d&Y?wb6l2j07qC2>;Tl0noz7Ez5TrdMF)o{JUh)Eso4g2 zVk7kRfngqk*;bt=OX07~`>-oG@$0kqmnUQp)5!!t7d#kC$bJgx-F<$g+p05FW*MN` zj0hnxy^}p30dPt&P?YeBXvJlg-4G_~7DD4hpP#qbBLwIJ<7Q*4#%1N_+o4OThBRMh zP#!|s1#^4XMcIr9%Zmd!H@V3MkmKM~!9dKLpj$u;g$#1&9f31|k+t%{nHW4kVfBSP zwn_*)9a1reZn=#DwGnYUM)Pub#1Es=@>MXo{!@T{)TgR^P z(j?jN3+F`LRxh3_Lob)&5_pL{1o+NE>qPtX~0sNWO4~YbciF$Dhd(zs( z^#7j^>0t3edEusuY;4#=H;5Mb=DWVB+~6FQ%O3YNq-5Qa+sJZ^fD$Cap56IVQ*wQCs=v zDd?2Z3cIPG>ab=qR{n{#;NVs$%sF>Egh5iGS=vkRST3Jlm$Fv<1Vm58=|X0frId=r zt*qOnisj{xpJHF&6{0=6LqdcHG*Az)$&6R|-#|`nA%$pmU;m=LW_s_njQE@+^yhA| zlD*uwn?d5cW{J1G@+fCY%k13@P@e((*ARopF(*}SJ@Q(6sx65d^#1AfSu+DCh`bRM zH*cl-=u6;P2d}8z=z_)}dTX|789>pD$EB@TN|fNZ7Go)aIdu=3o?JQRS3FLp3+lRb zWN4FZ@#-tT);@3s#la(}ViJM&fD;q8tKcQM)K!IR=cjNCf8l2-tkda~O3Z?D-!4?m zxHKm%M^v!d5XGGoLtD@_oDh+Pm*aPjve2SEcDKQ7B6A1OY-_XB+qq~r`Pv!_skyv? znm!T?pdCExbK!P*RkR>bEs8O*_L@<}r~EdXys!f#rovddU!_#$PPgr#N4^vqCdW;O z^SS8N?yqlr{zxbK7(^#vj9nLg$h(t#yM#->5Y9BRm#vo|I$KIphO}D3?7SXtrss=u zEFJj@dOx1IFo?~S5~kD^(6u{#Ve#|Jdf!P(vw?xMr6&vRB&~}sGcyJ>xNMAqV|SL{ zK-srJvLLFlg&NzQGp6e%AB7+;#-Gjj*M7l={i-14D~~x`Gk@RG(Q{I71=rYY{R|uwT+kr2`?-i0gMNyGe74J?7`Y{J1 z47#$rP!2_jz4TziRz_O-qE8M+rBImkKB$jOXcUQLtT6YwY9FBS*@-SWcBi466l$k3 zcXosWRHNA1aeBCR+!ZU4LQC;kYg{Ft5A7NwieIY-CrGo9nph)$(+>9?B{iFwH!GF9b4gcPU0j|6%D^?$HI!4#r=d0|G@#msRUbhgpaLK=2hN+K0 zN$o|?6!#2iDi!Qu!k*$2qIi8iaQD|(!0IhRl%sm8mGdg>-?6hj!bepy zgyw>1%P#ha`ThX#`ct|@Wos%rzni89iffC9qNc{!3paK;9Oe0+BfU+FiDKoYP+H2e z*%ioTu;}G46*a8ygHuQc2x0~Vgtt`xsF-SrGlde>E<-+s0bVuUxm0Y4;~+1ecXt-H z(lgD^Rk*X;$xP5~{_~~cGZ|%XJ3=~OT=Fw^X9l7GAC((S(05MnBT06|c3*PrRH?2^ z%%s&JPtY7ml_9&EcDqDzsqaQc>zuUyV2KmWCG%sbgos(TZ>#62dv@Dv`W)}_3U`Vt z_2Kup&4m&SXwocXjW0s?r9eWdI9HXr2ueGC@yb+hc4E!lu{GgaozN!>GBT}HQ~ znDOxA`}dPhI6bk^j&3{DsCjgH)tk9Yk>N~f6f3qtBEcdba{*_23XP2o5vDOjsad>n z1adOgy8x;o<`>PG@By;|kJ9)Z_o1u%iM4zYR0t( z);Pr0td)9ZV6KAp+_+U}rF~^+xI5ATm$e98%( zJ-4RJrTUg}{gv_7WQ$*)9P!bMc_W7*{v~H(sSE4T(_=VS3ZmBH z6X|H9c{l}pU`7G8aISE<&tR?AZ6$xxFiGX^&vo=wdI4B`?bSxx5)}lorZiJGdYB5A zlUt8`%l?*s(B*K~m0y1QO)~&%28W0yz8pdQQQ=%%ZbhKkKPNZ4$Ni@2!{EQb#$Pbi z*i%5oSahy=a*mq?*B;O|6Z6qH^X*j+Bi;yq(5qKxe=X?U05N>wb#Uk~J+ z`x{wjKB#maAM&|J)*ko;5;iPG_}S6Zi*@o_xM+{Wk*l&ogy7A3SO6u(>?RJZ}cB1QhYqojtN!6PbHB z3jSZ4#=n}E1}%Cy1oCv+cK|v@qOsOA^IsnCpI5nh@+boKfs6JE zuws5-C_t=wnzK-F%Y6uY8f8>BkgzmuZFPMe{=KGkG4rL+7#KdWJhck^}yy))dJ z{l|oiUpJJ$E@KpQHL|XQg4d)07;5WYR}q(QFXDwAWnpPP5ABbG&fwzSu9T;ko9yn$ zE|nDRf|Yu`<9o+`}L~}e)eVjM+@-R3m|qrc-Gbd zRB3iopD0*w=EwKb2<`_n@=`sI=8h`Ri-_#Ya!G zH9#_nq%+YXypeti^WQgh`ke&d`i3lINANRB-L+xmICpN(OD@5AI+mEbJew)G_i1_L zy%3WKn+WH{0?V4DS58s#gRf8q7TRic_17m`-s?_;RF=!tZfD1=xOvgeZQtg!lyRsz zLLoRUlBLC=W8z@LwyvbZg=%ANoX?1Bte7}8D|EM-KTllh!(N_``=k!uJtg*%1@)ZQ z4l$K%^+gX-gQ_)&>Qo9;R8RiAT>X8!-o!^<(E#?Hooov4)&$%QDIFd6)2C0Fsdr{G zl8nHoO-f74#UvXZ46@|U=3RcK?l4Kk0u6f5(8Jt7iqdD8< zycm%8{5EtNQ@m^!~lXesGp%fn3$=QkABpzWLGyThc+x+LPF53C{`ujC}cuOpu z^ZgmqIaY09U5vP+j#rEBGih4(Z>y<8#vTLGA#uyXoXv-~`f@a2k7HwbeC|KX5%S|i z5g@KJ@D(q>qlp5|XcNF3=UG`Bf6Oq;L!B1|#vzxXQwh8IYD1=0BP{G*LU*J>Tivqz z9ml7FZivWc^V`&nd~+qe{Wu;VR-0DK&sl0?wZ(OcmYUT<1$fitf9wsNY`VOxzNED0 znsB-atyenio8xxs$@AcIEtax5Y-vMW>;C6x6fVr=as*v_@Z%8RPD}LJ{{Ji}Kh3YP z5Ck5M6t*4`BnuXUqv?yBmkflEZeG7qeQSMbspCeMVSIEv+j@1a^0K6F;{aZte;f>L zc`r*f1LsH1$dq24BssSoA-nF&{GJ-MWz1K4R??258i!1EqE}k$R0daw<7G>(_t*27 z4<}j1Vl&m1njJMYBb6U~GlB0le+rU&f1eG(<_K7+Z|VS~I{-n7PXhz_86{02Y*uW2 zuCEPq^!RR@^K!ip*|O~1fSuBNU4Zo%mp^=I>CCL-Rdv4 zZZMDJa&tUwizrv0wl;0@#@qM47|(VYb&~(C?67^kv4Zd00rJW?M@b9@GdcG5ksWwT z;uNCwtZF7Qnf(=6nm+f4Ok^--Obn$phmIb-uxB^e!t=u1k@uk*G0kRHSMT_o=b|H2w42uo$sbSYiac%b?(`~V&5n_y=P8+SEaXP ztNOcXOZ7{pqjCBROBW0pzS<>3OgeFIG(Lte+^M2Yw%-@##486ZK$4%jXLtrc8g>LY zhKVXGFaNx`C2A=9@uO#*O3&Kv2@Oq)0zbE;txEd)WAeVbc@E$zMd-SUOl!orK<=3+go5&&+Japp_@rwK%U{N{)k1w~9XUN`qN zvTL=*vg~&yqgsGW)~F7DB7-6%o!$J%KKJg;bXBm)a;yw0kpK6){Bz3Gs7mfvr~UOF zjuFA|+FUp!L*a|L*4e?g&(k_W3WW>(teFj8m~A&zK=`la-rpa?j(=`@eW`YeJtCR5 zhV#}jl$x5_`!&qyV?RGxJ-v9Fn~4Ma-6?&rBK>(Gp%~lnzB*34?GOwl8W^r8p5%0N zN`lx(`u!h7=m8kSEP)5Fx#V-!zn@5P`*mafYqV$yPomx4ogO0Jwik5!v2kA;7*Io} zG0=IW0``QwAKS(|S$w|_?N|=Ntq$;tX>ogSI#7}rFQmG+7?wy9kd9+xHAnHJS2nHYzmsZEiO4on;GlGX#fk!_g+^?&!x^7zn$i8QJZ>E)1H$>f%qTS{s z)2V-{iU0h7v08lX6DT-TitA>9K?Hb{eJIE9cd5|`qMb6HSxZZa7K4z!T^$eX|7hxe zZ*3zL>M#`|sk?XYwy013O)Nhs3Q=zoK|Ta)jYI!M2_m_k{osYYmaT&Edkuc!scI+3 zQ(SslQ1vcgd7`Eln$1URssZl(=I72wjo3T&Bi|p~ZvreH`>Cp&GKZ=X(Lc&U53DCv z-CAW&W3ckIeV(pgz;Z>5;-y{H#Jgg>>l^(CcWKdL-`@No@B|RY;bpM4Hde2XuxDju zrC5exr%(VfJN1i52Am23*>%P1*05vQnt5!HjQ@H(5=8nWXgB=E(%-+2Hx<72QIzSY z=-a*5IFw&_14YzMAPMxkosdWW8T6FY)&G&%0tV>SD0rm8Rs($Zq4$(l5hW)lkLn!) zFkKGOO-x5ep9N4uTEuiudoPz!6<$3A$rhNLd7?(7&90GcB=rJ8$){FE_ja9SWMsey zND+X5))e}qh})hcSAV`()EH}=?#FB9L5 z(=W1UBdG|EXJ}!I3MJR=4!$yeJJfD6yPNLP=#an*8Asmhd^RqbuREC)v5}n2v#4Cp zWv#muRVM!PLY`9jI&y!gb8AZ+x}0-v^4XcO!29%LZR0cG3{((|^(@~4>1h*02V4+N zsD?KjkZQ800RggA`DPs{c7SL5Cjsou42mk=zX~J>`3-3k-y6EOm3rH}Em72X?2XSd z5JJt~cz>jVfPn{&%UjtD6d1YKXX#NA4~NA?Z+D8fX&MrtlH9PYBXYmLBnR-gkGjAE zqr?brDR})H9kei> zz?I$S89I8UwlMue?Lc}N>n;?3_5(||ndW#|@rk@4-*w=&wyiYNf zT2D8h#t{o!;C|uk59a;E*}H@Y+6FAI+p0%BC|uaJ-g5`ar^s$n7DU1}pO#NT_YwvY zMPM8SMjsTv`}i?q7$(_`mL#v;eu8Am7b9@0Ns;^dV#)Su8>JI73yWNqYT5+wUzZqF zaP~1g#uI?tr0eMlVrN{-+#q8dmKxh#whq$YM(Z01Qe_cI@vqJU^d2wnH9{cuXTja0 zVD(>Rz~#37SPbFQsMMCja%n11aJ_rv+?+AGP%0I$82(+Kvcb^0N?Rw;kb_XBu_)V6 zm#`Sy<+6G`OPNo{M9k4+qoUGFge>&(*@~-mH*Oex9TV@1D)K1%viY&%*mBQG-uZ4y0h|y(c#8 z88cUnMYdlr_I))8$A<9AOpV}&knp6sDwu1eg>OH+=8#tFk3nBP)^)K2qG6cFx^MKg zRL|vCO~6vXn*`?*upT}^eR0|mTV;^5R7DGH_cIEiY({aM_!&M(ig-|#P^>?VEsnfv zn7-pt)(3WHw`FIJCkAq{0sj_L|K6mL4kAuSdeIfgPwxRjYa>vOGjr%b{E4=GM_9dv zVCAiCJXg!cGrW!l87<iy+Y^fAW#@DxHFPJ@E0|_mF*Lr4%^dcOhiP0*Y7s7->Q-^>KD~@#u zHu=kO7x*o@rKRB1lFRy?9mzWALm41l=UE4xLO%hfvMg&PgE12)&hR-AfbB?o;05gs z!N_g|QLN0irAb=_j404p_P=oLGrREnvKUN;Z|#o}wsQHqMJRq&hQ1RA5XNS1T&IiO ztD`8gJe;^L+K^#$#kV=@SR>C)BeUIh%fS{#xFaStf%%ZWT!l#4Q=eEoYKP3M%GCdq zIkZ+CMNtLn&_}7}H$0ryX>w;T(-!GtX?T}U#KdOf>riyrlTGb>?Wfs}p|B}}mQvWO zgeirxyS{)Zo>~0Iw@08KiFu*^M<VNp*RH`{_TXIZ;mg(kUa-(pmB|L!6-p&axJ6V=(Os(%()V5t=Guj<*p zadiu_7D&)jYla6BgMORXcr0T))S{pq6T|HTiak($V=kCI_Z<7A12|ThYM>y5OZ-pX!5*#_qE4G+OBkj_ot zvRS$C+cJ5T{@cNLKTPFdnf0r10UHBCV&bSLPmZkUiq9o=?Um_cs0M8b61~O!F=Wj0 z7soTj<&(=t(?&E6X@r1REqLReWk#~k{C$ScmC-YOXV|4Ah!6_Sfpi6`T77#5IKIRe zBeu5ggZ*jE`s)?<-UCWv%ZqMG>(~z=Y8p|uk}FUqd5YLMASE$S%oAFMEA;z(|Fh8Q zJW7tL?v{dj+R^n1fJaZnxi()c!m%OYpFeAHh@)<-5#L8i5E{Wd@ z*^@^o5m0p&n=25GC_}^lU5tMEyfG1^p6?ZbkuD_BHrz(Q3}0V@{@1R>h>!~OE7qAN>gwU)Y#Op~h704R zOP7R(p1<)Nf>;u6vgeh;5X#0GB({~A)6C-mTAD70p?x3mBYf+}7=+#$*8`#~6>^kS z5m7~~9Z=c*74{h%Ame|2Cl~xj#FzW_via_PE}WAJsI>4wpZ9>^7(M;StQB8O%$={y zzfbZ5cyy<2DbR_4EvG9baY48ruaBvnT~TUkY6I*>ow27#Nf|)vhye7IsRQ}ks;Sa` zEe4y-Br%oaCJ7~HhR~zu>7?hoj7dfTw28_ z)g^wleio#E99?ZKGg5$OhN;r;_e{Bt0yN_I&I~HDR5)Z13gE`M>m94O-ry3bhY=Nm z(1VRa3UlnthV>p@=kzn8&cf^WU5i1s1m*Up?OA8nq7jckDZu}GMq9&it78G2Q6~tDrKMLKaHzu$%d}Ayq35DKG~h+_mh*F zrJqE9hQoVcC>hGak6SopOb`)=fwVVm_sJ${n7Ha8{%SS9f(@DLxg;6f<+)5OWZX>~ zHcpKSu5}X;m+z~V-@6o4&^K);FT+2XJ76!tbv{G7xG8Po{TcrAN|n>ZW~#%_Pqt9e z#;&~I`Lm)h7|Xb6{QV}3I4MjRG#s`w@?b>)(p$=76qm41o;(SLB@sEG!uX9h z-U)7-?YF8=#l2KC*KJrfSEK}An|vA2=dt=q>zZY(KuCNn0@3!Oup?YMi#aCweFu1g zaMgZUn~aP`WARI=(WfKDhF=t&D)pS3{<}elsq}nx+Qsv>LZDZvf|Y%(Snc0Eh5pTv zi|oOHt?Sb(UE)gI-R8KT0d^sFvjqUyyE$kWzwY(Y-)IHPql_n%$yBXg5XQ6&Hr*JK z*WlBQy#g@6iRM>euA6{ReWxCM+5{GA+>>X|_FGmS=pi!#%=)vVwYAjZo_ZknCXQ-h zHF*7M2%IU1)<_QONE(CDHk0j@Jsn6KNq}`{>i7%*GfGI$#KR%g=ZTxT zCWuu~XxayCIoV)^2M8}{wo~EYZq*D$8tp2lJhQ8j9VBPYFe9?0AD}8J^4jx62(NlM z5qUl4kFENJ4_nrH8#-+L`^;Wtsm<|U?a52R5+#}9zqdKOtDVj{Ut;AlvCt-LWtg!v zNVmyQXS8sjEvXh-0i>ZMTf?fnp_~=|s})f9i==prfwwj5HMoAJYQPISJo`Zo_Kuyt zXVZ-PY?>QI-p#gr=gwVoU~^ty9G-;xJTv@))#GX`ixMrXc2TN&o{k3WamEm7whS5s z1h}m)BaYj9G-Hh`<3|xED296)T8F1Qhx4iR;R+Qb`$FQfdQ&h6Xs`MhW3oK68w^K8yse7g7*kD3v$G4+(5MFg||lLWZx z8nFj1ewJv9x3IJSxEWNrAGSDA2KS)Oo;erj32#&9%e$y7I9BTil))zFvvxwl!_Ncy z0@?hL(jc(=REeRWsmcv}n)suSGRxHJ&8lWqmCMF6DhTSSTSgdg3`ETD$}|o^;#)y zt5c3?OUKY|&ij>p-yD5Jqf3=M7uXsnpu|^FWjp?mP)^|9=iuI&h6ZWgof;6Nrp%!$ zg&ndtQ*l)j>tWL^7n;_bBQK4cWpZ7#paFD$r$@x71N|svv?Rwsb4w@g((G1>n+v6r zo0~@w?gw$MLh?Q}dwHUG>p+4hU>D5CX@;{BpBJU~ECq^N4v^}m6wYw1JD=hXKi37e zSuWUS?cPU^Z-UmK2^`Duv)eSo4Y3%5$<&MctcX5(XP~XOeLN&w0xfwXE}9# zRIIU}){dBMz^4!J_K3Px(f^qb>QT|LEMRe zX_SOS128O;pfYu?s;=zKwC)ZM4gInvx@aIRh|NFMx8G#kc!W$w=NxgcnQS6ZGzd^X z%wIQ5l@2LMdhV3Ae)xc40VaPEf&9v)g0W9jhI2uYDA(V~QP*+rcAE0OxW2 zxe4BA`W{=i@w&%F0O!t0g<_>UpuUlTYDYmUfre4a3fSGr(tS(l^GMM)tDygg@5&Xu zy1KegCR$}T`cC(>^YHWc%z@=31Bl_UsK*xj5$vykhCm1t@CRL3!rQM9`Tw=J963@B zT>NnQm+SkC2cG!JBmHpt5x;mQi^eJ*o~~eaoOr+IYE^r?^3!L}R(vQ`5AOG81ViLU z`r#O`@yu<5YaVHbl3|)D9FyXw?`ea`H3n)TtiYoW`>c|?tS9Zp-oWVX&HH2R@&3^Q zR8bc=N`cIW;W>57_r3E#Mdo=5m-g8*Zrc3kp?*(lius^jy)xFpM zFV?znDwEjZVXe9kKWZl}Ba>yHN8l}jf3C5yF;@tSKGpXGax!IQ1Ny^dyyl$2jgu?X zw7qW=?TmkpMJe$-HLl9KIpOG_KW58RR}f~{LGZoJk|yrgY6KsIo`qxV;9#CF=56oS z62zbPpH||?J@}P3i-rYdXv6}r@5>vEXmBcq@OD>S>Qub2oY?)YH6{x*Tg1ufE@&=Y zDgJvI>~~ zm|Bn?5-dXC^{QCV1jmy3(5si>kW;YW{;FLZzQhhDDU)fx(RT;3vE%#KkIk?GazO9v zP{22r4e_BGaBism>~K~2;JR(H7vjr9iL2}jDz6g&0DyQMkdkmQ!pOM?0y-x^-0R?G z*c6e|=~hRISYsxh9SNKC7?4fH#nn5*jsc+t?w?6ZL70t(XDW5(YW(_Gs-BPcah7l4-SRgMFvZ%<&W`a zjAw_#@>dkAKR<5mlo8GqFP`@U=!ecUC)Z80dfH8=TZc2&XQV%GX(r$j5lhUIh(V_R z(F|**RjLII@4%c>(X%L#qsX6YdcwjjBb+sK)Y!v*Oy73%NS#WQ#Qtb53Wl-+dfX-u zIptfb0=r-g2>OXQ$k|hB0@p+WAeHip5s_cX8u0&$U-5q>kF`L=Pna%h zS8(1yF~WeiPi~=8at5dedi2SDW-2aGzi;Q>K&peBy7>&JEUf58r=?p7HiSG6DO#{2yRzWPQNxn*(#mupj>Vi>{f zajA_O62zekL}?ZnEEJvq;_=mUI4sIsP}pmGX?dMVH*H!}Bh|fH#Ax7ysEI_HpC55A zN7NZbEFIF++{~N(q41G|2ZM@QvtH=k)YROF4G!nX*(!}FZ2!45=glk;56vS;|DomBwV{Z<`YhwA`5=&OLuL{C9X>UWTJ8ikgU?5*OfdK%_=Ar8tJw_DkDlU=Kjad1Y3p? zQh%UrZ-WgC&^wv95dfe+y?bWpm`q~q2W37w5jS524y*A=pK)h~Hu_AH2X5@9?QRQ#AQN*jcU&T7&Z0_d%T{?gNT51Yfqb|{GsG7y= zLP-aZ=`lM?x$k+t9#>j8rM7V>tLR(yZpL+|xS`5@;tOw`M9n?sobFSTzdaImPC0*ZWEe%X{<@gDROdBn&W&>> z95|U{Ye?CR5JTLp^1f9a7?@#d&Y)h5O>wp~1`b;(d2wBNE6s5&yNAq z?&!V$9IU~Qkx1jE2rN~9gCdSt& zXNOt{^TBYA0ty>=~Sdi{FTs4kzj&=S=&uWZuxM!a0BLEw1n0bjb;V!kBd` z2V`WVn;u%-&PlPubbE9~COc8tKCd&vd49`HL8-gs*g9uikebV`8J=Cv4U-gzp%7jC z1I~xXw#oEY=K~Ov<5h@s6dnp{ra3G#nu_zvZ?9ZCk-wq{ z=kE=!d^~XX>E+)YFBp`tVRKajW&)3qGYdS_g*JYojei6xiUscujfJB!H@-9|{mbJ1 z?*%W$_JfC-2BOg&7YB6_8*S$epWOxi?bTK;Dao!}>U?Rx3ZcYsGlzl)P<#!a!1F3U zkvMBd6|gu^ssh;*mtm@CQz{6Gl`e?)$pU=ue|F-6KX>T(xN*7XwtfE+;F+)XQ`6Ib z(|)9-V-iK&R%PKG?DmelqWYEKb1v2n~1_gYQE&0O(eH`7Ff-93c;U z>-V%Q9OX|iv3-N*puISf?uzF(KcS}hT~4E^y)K_x(}Qw41{8h3n&;%<(SSL~UWtJQ zHJ(?VUV!)(h#g^gRJ0^&gT^(1j8t7s?W@M_uU}Bm1@e~TJ67mRi2)NI5d9(3VTP)v zb2_JqZ=Kq)!qtboBz*`!zls#!r9VOLuWWU6n>9eprgvZCg_u>L2&JCbTzUci5H1I* z9{8?)4k{=&hC!e$JH@^x{qt!N9Nq&O4d#?kvvxN0ee9w)Me)@|RhNRYezV3x;^M9% zvfHeB5Y&zXLo*1<2KN-@uu-H273;sQL5lBYsuR+_NU3yLir8M8YDLIP&=A|tbTN_p zi-DXH^m65jnonc*B;lus@4Q0c?a^4kJD|dC%~TgAc8H(CSsEG+kT_L-jTer*ixIV| zt$l5WS*i>=^53uEzuejH$AB2isatp((V8RrSOkU#iuS(aI z`(Q3)WDG^>gOI2STePlz^E0I#l>j1}Mdt8+O#2>cvCaiM1p{pd@g z@ZtWK@w7-oZuOa^iaE~i5O9KzQB4#2GOT$m8=FD*B^suhQ~~<*zp=N+Cr{RQu5YCt zc&pJ_q{zKwtmuu27R@a2f7nC(S&T9Z2gXNy zuySrn7&9BsMweJ_gh(0REuvDZF((+ADc8?DHfqk9v?hyh#XcmrW2XjgRc^8Eh#^F= zvWj|ah5_#QI)FLPu(~4ayU+d_U0<<9=rKi=1d(XIFJdXE0g_lMG0y%+cZT(=q-G9Y2LDLV${A;wPn4?34S-zQ3`dA zvVm-bCaxcqA}SRVXfV!A-9rkcrkQjE-+SqNzrS&8JtssVA<&>$ZTKm6tL!H z8xN-6b@li?HML;)v!^^Qf;4dPY6sIPf%0HCa7-pNH1r?80&rNx7#_J8ep^nE={#bK zinha?^Y#{g@5`8B7|#5lrh;>?_${?TUum8Wk<1X}e{>dmaO~A(-L}f!zZYF>gY;i5 zUBh|4Q*CzN)L^)}=uL&Eb3PmgkIfOrKBjLwLD3v*huM4(d;b8Vt|E8;{=4a;>eV2R z7UB%%CJ%6qu2Az9b~BX5p%dcDqpmJ-9yA}9D@e^_6>=QjTHQ!Uq0JM_rf~Wzpyrx~ z??b_`-@s^Q)tN4fmgB7d#da_mAlxSW)G4uO(2oc2JDiC88n9e99b5WMy$x}_h znc0S^%SEQXKdtcYC1(z1 zK#3MJR{mw*{I9)KqV5==2i70W!HCLuXMKj59_(hb=ljvEig~rJEAJ2pAy+PYWVa>Q zeBqkU$gYu`Kf1iT%W#pnq(;rfD4%3BlWXgwlO&!|>9PiWy`3X4@j}FXyb%W#rEA%9 zueEZt+773H3Mc|pF0wGt7xgkMF&No>V{5WIdiX+5R>Iz+#dlRT=0yPdN*h{{M_PBB zD0vF!bzY+d7oOGj9RV=FPl1o)JPnU|kcz^0mFKmrm-T1Exj4CW)JI7tTgSRLHZxk_ zG*!1%)yA_o5oi-CXY|ZXs}98*VyVeM-3^1T;t?2#z7yXu(9wz7F4~`V+R^n9AXEU< z=KW4+FP^jLBj*o$$@IGY z82=}0C^1X3%1-~e7f95dLSUbyP|vj2&@Ok8V~Fs5=pvl%!*@=EaKr1Inqt9>=LR$W zgFJnX(K;kLQx>5XwrL^=kM(4 z(rWoHf0ivzeoz4PxV%~2$N_a$qwyfV^6*DJQj!b`)@boU4>WgX))#4d{`Scr3aFxT zr-}QjfjZth%7dr?@8if}We8d&;H6vO5CQ=( z=7PZBA+~=Ij3m{7*s!(@!n-bzcdp@}P)XJKaDP%n<}Nt49Wkx#V*B%Dpw}UWN~7`Z zMV3I3)tA?IAhiNHIJjYYJ_89dx22?j+WV4`nYjh2aA4HV$$=n5`oLBWu)qrKw42=2 z|1aFKtsdX4DAYwz0+5*pgVTIeHpG9*BBl#FLqKfJ&lv{n@T;IUY%A=SMnr&RAB(${ zhwp2+S)l&PWXg zXcriS&N97esx#$H_3R|H|91eMh$5#^IU54~{R>hTJ(#EJXJQg?)pZF__u-n1i9Z(I zV+neM*wB$E&P96eY7l4^n|RqXF*9p4LXL>tMzq~Jbma|cjx$}%)Ef=OJG(3#ktt@O z#+%)3<8c&^H{(7ST1Er}ulQKe*K6BEa`7#NY7b!eI=mcK&doU4YP$Vgl%FgLknc$< zHcQc&`EUIg;Rng0A|){B%2Me2^H;&U$N^2OlB{eHLMfiVRZ!VEmt5IB$GL$><)Dj1 z>?O9n!6Z%X{oR`ukj>c2R~Dl+Vz~z?81fPAz0)2495vUepBgBK>P241Jd=mE`VQM) zZzG~rczLI+O}OT|rJUYh&t{kqtI15>1}2fit!T5q?-|GzG9Csx z8V!D(*@4o6X!!zh_v!X^MB?2&zf?X&%c_|jw!ObRT3_hAfO0SZ%gVNG|A1cdh^FSx z3WbAIL%QFohTJ~wI9!~oJWFgFLfnB?tXzQlMR&XPU+b5Nf1#C*Z64{fzjBk= z+4_pA8$)V$7=>E8tao&GN;yT?Vn|l6v_b*;RnaHRZvYF}DZj_YSt>hr7+u{e!UROi zGWn$k-@>cmKn_K))M|m0h|kAWl?1Z8r=6yD?pRf;$TY%EWdc=)sZtkWNIc3b#NiDf zY~l2jul?+;!ojogD*L8+T>a(F#5X7mU2^D5lyXKc`e@|_BC}jXRl0b^P&NbTHFp)|No&YKT#DKw=2O0(_)ndug_iEOG9I0E7*;ucA|hn7wB}f=T8X^I6;OW+E_8fC^-_* zmw?(y13W&hUso$vW8X$W*xXgfs0afm5n%<2G1Cz^VE)sMx_}6v5OH>#u!}NcsIngy z6hsdIz&QiGbtq>iXJ957a+XOx>aGTskppZ@Z_CIi06Pw}XvQ^ugEKdfqr00z<1oHr zgcNBUxI}y}6M{;OM?xsX6yF%L!~c2G3RmH)yc*61E_U)NcTW9z%pD@I1whPQ z^15sbpjsgT>Ct~K4T&K5$PqaikCbSnNJ_;AjJGo&Xe``!82h9wsKK^~&EURO#XJqxf!6Brr3V6skwZobI8j16@u-#^awK zTb6}tgdzV&4JZxEb`yK?%!Z%93Zya@jd{BOFqE|ZYkV+i(<20iV%ZuYftzSMqUwO> zCO$!|W8B#PUx1w}v+Pc2kC=NUae z_9%Yp{4r~bdh=%;c(?+3uXRZBDFmN-LC5JJ@K3xD2n=P!X6r95LwI2Y?|UA;-%~e=G=ikh0|PwKm`1-)sk0I>e?c z<+k|l{EcSt+tJ9^*F~@fL>2@V1Zhe+iG0>Etl#D<;Okb-Ek9{U#%Fnh&wWTUzEdO&6Ur!7Y>(Tny$h`{#{=wqkZ5Cvj>-Q~UfJ{n zzu7l}KBW{Nq(vWeSU+FTazuwr1`PPvsX`#&@aK^i&7mx@O9_zmSnAJxT!tloh^d=z zF*p*{8@BxZjvJIgZmEk4T}w6M*y~PC!!?8dT0!aCzh3{}71R$cn(~)+VJ>)H5efQh z#3I1xbCJ)0O3*$P zX%QMsH)ead!7VLP8Ax~~S|Q^TsWGh*zVLe?i$?yYF?jMYk^rOZL1jI$;aTrW(z zDu&LIQ?SB-*jZPclb(8l2JfZnBbN$FsaEiTrSVHajGuyc8pZd6;WhpbM733e_|j7{ zMp4x_OQ_|8UKw1J*BCxJ!(;LsCf-Jq>*lm&)iFvO55~>;KB`^)v+a8cIzVjw znm-A<}%5o8Eh1GVf+1A1JQz^wE68BBYEEc zCGSwzdid%SHz@wfQ(Tkv3AUzQz#izZr0Rli4_rquaBw*bf>2q36EYqfvnDNw)1BVv zm7!51IPdm*j4*gO^b&RDj~hqL!Mni(Y@Yz21-HA{45e7Uw{|>-Mns@Bo!5xL)9D@l z0RLfahrg6h9=b|^*NQh62m3W zsUg>&*NmAZWj}=-7_yUwg1fkvw;8w9_V|#;?=z%+ zNNw8Y=9$!@?i%MfP>h!@T|$~#pzX^i4eSizz!r6gVZ!gvrT^sdxw7n*&c_iyC!Ygi zf{z6DSR4x2o$l_h;~sDv8sDwJ2e>q;!EtzXVsqgQ;7FTm57z&@j6;Nxpg~y;Sk{39 z_yOBVe0;WL0;pc-TxEy3!SU4A?W{jORED16@KfidVXx~9Lhnu;P`A~6ei5;eZ)?#wV|G`A2UkXeYO-Xj)v^*VPN-Hdirx-YD zj40M`9P6d4G(lC1i)k(%`?IJxst=c6=e4QrHT5h-TdCm~zRNef3di`DQ;h?D;8S3& z@@xfP`KJHo(C9RJn)rJ;;MkjWf6FEn!_FT zoZf+wa{c{zHhjB547`69XCFQ0KxU2jj-k55!-IY);<)wD`H@<2gDt&6W4Uq=A$B=& zvbcdLCDTQWQW`J+QjDNQI@%fq&=Ozy2EE+=a5^btMeq%3a;eJ~Hc;?7ociR|@(z-0ciWTFp=xbw!!Yrow@vM$Y6kVV76J(3^nm+hbM z)OSM0N;3pHe6>alNzZW^UWF)va8Rp9CwhTP05`Dh*G3?JI0UT1<)9QZ#$>8;)^{@7 z?q8kaVr-?W9#FWg6QJ?x=h;x>PkU|L9s>lglw`vO*uujoZ3-?4=CY|*vSGsWwB875 z1u&zqmJbbz?k3!EOV@N#e-v}WZJF6fR^tjmS0U+y?R(MGLgeg${CQXDxcb=4 z#>h=p9=ESzgS)wHhNb(?dC7<5we-z?A(cHCuyoa*n4MT62z((UFngT>uc`R2#}YB4 z(=Zq00%VH2^tYjAfaQd_r)Sl6A3$*?5Pbcvd*Q{23zv~I11i&2$iZ3UruLf8Aue=2 zctp{s2||L!hvq%_ZD=uMQomNiwev$s$BF%=)z zbw0rd#Ap@oq9)Xlq$I^(+T?VupD*y={?zGTl*;nw8+qu-99NL3fY9B#L$3k?_!tb( zmYVVc+4nNXI@W7rc`Po2w_Y&di!G3-Gy{4>OCX(W#*r1?l_@rVo>_8s+rG86m&YTo z1>@ZKY{p)M`KIZX1y|ow-?Rz6TG{7KcG2riY1g_#uW1ApVX4u9i36p+=Cb|9>l)3p z)Qk#=)!pk@(>+JQdwD+DScMXsyp1x8$tm|5(TIF>Ypls3%ZMv?*>s5V&IBCkC!g}h zvpF7|lf6N`FjDK&^4AXdk;iOEq3wBO0({cz=TNCARV3Cs3N6cU`LZ#13tKE|fxRU^ zjgSSOdRMkm9wTluc)-6**%ynY(bJLT(_L0%SxZ^>OKHECh4V_`PnQh|f6ZC+NiFZL z_3{WS>*(|?_Rln;9@W$W6c4;3_<3$8SQ)439LN=ViMSxaWGQcNgz$FU*v99~^m9 zbrWQK?t_DPDybh^gcg1&LV04>ud4z;>)h7>1e|rXPWXqfNQv_l$Qrs4;gp>dv(+Z@Y7(!mi zJ`1zc@WtG3Q-YC`Lr-<%98^YOCNy?}9 zamM?Va3UkG{JF3xpgX;h8RshqEOib{T%S@V*J_{dS$w@zz(+k~rTKglcP}gM<*UfX z+@aYEz^x!Q+xxWwJGe=<)B>L+=1O2jk4NmPpq0#yUc){c@tThMl*f@?jGIfxQ#;JS zaF##GpU1hx57gnV6EXlW#pLgUfAXmM=ydl8N5sZ%V5|l1MaSpnWs96t$&D^kl=wmj z!k#~jXHy{XISVh9lfK@%rHwxJ%ED0PR!^M0L7-EdP$D~HB@dg??Hyh9DTYt>`q)Qq z-Cuw=G-Gk?9G-7_VntzhF<>8L#-+x&@ zTnVRU-F@IE%@(Lc?Be;$gz5lLT}$++Sd6jbF?bk+r>{n9v3 zj;}y*hf=4To$~P%Y+XMjry}rdUE;v<*%*5f+gU0t5Yzc?9Zz>pZzoFpyJTE(Kl#{d zH{dZ%05cQQD_oj5>B*B3V5{=0{p~e1JU5=;@YN?tfB-_>sDnQroxpC8Jyse3M|3qtJ|kc_WZOJ#$so#FGeq~MnM z|FAIDao}P2izxL}FEv>ZNt-nuq=?}1X&yjZkq^A^$}7!^<(g?wa}$KH8%l zUwJP*TK?vSQYrvX@CsXcsTgurIP)CmWF6CIOD(%tR>i`e4jqO zeSnVjR@pG$u@=PRRV6_`2Y=)wjr@dpZ{_Yd1sIH-#+;OnKLDwDuH(}15X;iroA@g9 z!wHB>x#*hX$OngsOqvKGXMy{lUpj7ey!vzR0}RYKP2yY7CCN4= z4x<27GFkrdQOq;)1Pz`of&LD1ITLbbbzVXw?*gm>XaDl37*64AHKBao2``8PUyrNesNmuZ*w) zA!{P}yXH%+w45w`%(r#O#ihs-!Yx)Vsa5+lIzZS`+X~7WD%;0U6cE)yH`JOe`QmoQ zb4m`B1{;`F5u(U!4nX%y{?qb#w$|g>jvR2*0$hRzE8?;k_i&)3&0jnANC85*0tsz1 zOhG1aTO*N3Fi8PS@(t$aEYfoKUBEj2>q>t?DgQ=!OnQeL`!h(RaOBN+gs1d^Ii&7o zc;p5Ztf~p_*)KGY#k3vgB+tED{47_uRQDVw%H{|**McZZGvzf!5N*)6Z*d{U&%I!V zqe`Vo_DJv-V0?1mC^k`hfGgmYIta_UjcM}$HX;*Z2!u$Zp>R`l-3C{TCP*YV24P+# zL|1fyYleo{&NM^k>u+G0B-k@2=$GPNN5(%$e@cAs{nuE2@LlQ$V1fhYd3*#30m$r* z`C-q8?+=8%_sWobi1ZL%X66QeQ63%)c#75$%yg!_z~t(7KPy4hNkEiCoaw{4O+D^htiL2U~%^CKz@+ZT$SxFE-&7GOe ziXci5iM^T;DleB4@iwoe;UZbb9&xMj$30!OnrWsygU-usdc_gv+PL!QDok3Pqi@*0 zx@|lHTJ>~8(d#j;vw*}me4G?ss(P@4O>%@ckF_Va{XwRBMt~!@|3em| zaXWTSDNdmCS@G~-*YVp6SoKO0gG~tob9|fJQP)s}sYv2B?^t*{@o30q{9-U$xNS(J z;RS{sg)g!?(`l?f9<5Ls*Vhbk&wnv9UW>5iww^tuR$M3b%HK{j&(K$ij6F0Y(G@6?wBbX@0bE!4y##y;6b_l!<@5v#k&O&D57B0< ztyDadkOeyCNpm_du3(clrgCXrH{ZRQEvcqVyVu>@d;M+O9PIQZ0lHU-B~$Wf77a*JE0Tki zO%C7;Xyb7kdSuAYTbS{Et|A^#6>jwfr~axED>510^F83jf5HH=a`wQFKi!B7I%CZY zFRQ4Gi&vy%WLm+jDSXx`zOl2wNWAD(Xuf2&`bzDupKrpv(IFTyL;j@Wq@#Qy)FB=*iBS@2_q=>?5SKmvU-2(ofT&tXgL1t87M_ zm22kIw2#$B>Sl5`mX`;UHMcXe<6w=tm#vgB?9o5(!1K6A!XA=_OpjM<1=0%Ie|Ag} zZUWk4|Fd*dXIA%!Qz$}SPjfezdNlogZM>NQ$>|w<)JS7m#AI+X32^z}uC;CHj$>)? z)^M1B}N{^%wiLkW@7giA=jwAVr3LVhR6p1k6`oIz)brpi z5v!Ewn_{#8;!;v9bj}UzB#S6)4k3Hg%em&2c4zb!x9ha51093RiHH=L0F*E~Fub9s zK9?+xQ}*^E{jugnH>c#%C)a4PgaP3x`OXC{B6{qmPDJegW-VQTa}!OHn>;o1`JKJl zl(PNa=SR^ity`06B{Y@t9|?&~S~}F3E;IH&%j7wrcwevTB8(N*3bUNJitm^KngGSo zLcW$qx`LLcQ0%g&Xe#MR0+{5VH2n+_pSr%*)%;9W@X>ry*vk{a_k;T~&u{c*#N8aT z&!4iZ9Grsi3Bv4WaAk=;alJs7Z7{hf-+#_g`Z!GRYA3LxTwSbnR@n5 zj-@WwX-tL+9h*!M^ehGDDmgCTc>;63v((gaXMrF*beb#VrG^HPRzD;t+@U8OOTsP%?gc~Huu16A7Cn@35uh-urupQa%lAtPfG*!G)%XVqD7 zJA>wfw|WmkgAfCJuuu$wdQuJ=+m#JOZ71$sHi&0mIQ0oVo;AW}t; zc}dMY6mK)|sz7U`4KyznK!#6Be5xxqfnk?h?;z`+3-a_)cxzSj&c6j;D2U>1Ld@)8 z*96A+QAAbkuY?%VKs?tf6tt}m0!5isRaMm>jWUo;mYj=GVZg<-X{K!L?70vn(@jgR zOyw>>LlGjFLvZH@hS60HHVR*lp(a^k9-7m+-UhL&D%p6^F9VRx^+LBm;(xIz@MMl|*qPCjvYD(`G zeJ#%S;k=}38FuvwkxjL(JY^GuDocCwbl;rPL33|2zg~f;RlFXX4{g@g&UovhLgU%U zC`R&0+lan_ld`!zSnF{47Sd8|5VemHyV6lQp~o$%bnZGQDDbr>N}$BaR1P*Ovr7i> zL4r*q^R7@AS(Nkq_e*WD{QM(aI`1VQiae_DW;f(rnLvU`7aX@YC`L4eBZC;NnH3}L ziPu^phirm(#o`$%0}_Hq5^Pw`+!Oq2;hUZxrmMHv`rg@zvGcfr46dekPoJn+&S#N_ zVDd)^I(4nh#H3@TsB0rdJk<-`#a-n^L+S?uK#A&UgxiqWDw2<2Pr_b>W@&K6w^Z&PSn zj_j5+e>A;15p*p}*}Cm<{m6LeOe}rTZgFY)%9}wxo0#o#zmUd`FA9||KB1-*Fq?AW z4eN-oF3slWZ+_;(AB@2K@#JPLPt>ok$}Da6Vtj)2MiQ96d~#^Uuna_rRd`-g-%PAp zub^p2=QH%k>psnX*MK{zNbs{Db#?u5x4=eyDzlOwcP+MixzsLk>obem=ZsXZ!RUH1 z*k1C_om@hKv-g&VY;QbabL%sJ&RaC3K6Gmu#)N}cwD{Z%Q z(OcgsUSJB@c*K8I-YV+6sLt3N(_1qS4&T}WJxl05idYq&N}XOh0UN@0+L5av^}Xx6 zMu`=YPxE++U!mPXmE&DRv@^=N7Dt-bM}N7O++`PaGH>0Y4lXsdeV>j^xJhvM{XovROE1->_YEl0neekd)yG;3lE}sWH*Hvcm)8i#?xbMxYdMAykYC> z0@uSc|m{Hu*%Yp0?}pBZ(G#Ze5nj zWCG}dkZp(7@kU$z0vGoK7ePlMEmPf(mNm5*D+5HGAEXjrg&v50yTx|yb&%Q^vs*RsB{mJ97h|FEvWMx`k)Te>nZ|K#OYLU)5{v!fk$v6%1~`lt=so zOiT5tK7AuLU?yC)PwnyYM#=AI8&$v?j}`cC+pHhY4RSV`}No|)Z@vG&;g zhy}6x>3ehN$&I-y<#|>XI#h|~)*>6vD1J(h%a=z46zSZKS})-X&NgCJ8?MOsFjAfJ ze_6F?H6%F*P6Gy^@EW;LW@h@HY*p)TXC9UHf_iG02YQ zu?Sg*+?9td8rd4Gka13CuHjSd2AWc@!a+(r1w<55K*ZkW*8>@3Lb3Hgug1&SlbijH zX6|`cdeAb!@Qj|6R(v8iFYW@FVB#Gi!uW{Y?@b%@!V?c3HZR_~%`OYcR4Pc?EszT& z0o*kSh`V7H0H)=JNKpedQ`&t@$A~HfZtOoU7yYv^rLRLsFo;>$=f5Z^&Gvf=fXylo z=Fw#8Am9X=?BK(OR3pgsoisA=2%GdlNNrn+uH!iPRL#RBft#ywX9}Wqlbfb$_0cPwEgI+z+wcoEnGp9wXihEPvGJ@Dp7>06&RRoZ9vx)o5m^=$Qt5 zLO44Pcv{$Zly@OLTOAbW;v*u z882VH1rZYAw;K%Dd;(IQpi2_Zq#`SYcU0#xTaqAT$b`v|4z+w9hXlo=xI zV#BKX?%6=goxH1}c0V3}{`?t{xe|ThN?HuH<4L0B=f}fS|5Xi>Yz=m4Usz2VS!%SB z^T5gipNcH{4V|wpC&88^-t3DkzT41s4s7-;nKHHBBH_N;=!ndOQms3>;_aou;x2V|G2S1T*ByYs8#upQG`CG$njMBN zkOiTG0#Co93I{DXVipi5>Y=qd*=BW1-9se*QzukXF)ck1=I)TIRbwfeqmHAzs&jYe zd!fmjW8T29w&4rzavpCwLCx*iRBuC-}vd@-zYRXxY4 ze}#X@F?0{cVedvp?CQxTEBXt(3%q92wH9|UV+diceF)+M1+@+a#5&65`Pg$zkI58_ z*|J6AqrNrSA=3N=Q4hr{Q{U%jm4~8-ZKwiz3ycn4Ke3R|0ik9jks*Y1X9*~Ac%oIh z?(#sM3HWCSLP!Yr6Enbl+gjoJV1A@m#l`+7Z5z~H$}^-*c=km;8Np)@lp zzDhV-G6h~ZO4R3ia?A_|${wX$$VkY*S;%Hy%5;cDfWAb{#vFws$S@K{e9Z8r{3BN1 z`+&>Hvy1WO;Za@y_VI}Wnk30TH~2$O4k1(x%O-RFyco=EGX@1UP{FSi=wgQaQXp9zO29JlB%&Jr99wb($Rv#^i!V~e4NV8vMk^+VUwow#4B zyu_vY?lZ-cydxQ8R6N&u(uD$`1GvF7?nqr3AlI1D*oW=im%MdLt){f`XMP7}=MlPw zEj)!_C$`lZ-?pn?1n(23d{v$OH}FuAo;d`?r}LMXl${tYor)ZotvO~PlPSe}E?b-LreGT^5!E zrB(s67)P?>@v%o<2`%Vnq*)1|VEWX0vXfWHNs`5&2&35zF~iRdGRiA0VQ9-2p5pvv zvL&2did`ICeq3gQnv4&9T!TmnOtL~-R2#2@;_8i7O+U6v3@xO!)MKE)UgqdIWRPe9 zBfhVe5;^VtfnGk*xJlqTKfJetj||ZyPf%LfV^wzk%$ZSp5mZ{%oV!p#ZI=2ny1#qK zW&g6SI;)OvHKP*qxwFr<2^yb5g$09O_N`p<(#q5 zR1`X?L&QUN%4tD)D7V?5Tj@2=k2kMgU2n9E%GOLovBGeV0W3A^z-4ssaEdb%1V3m5 zBH+qQ0qkh+2=e_>g+z@yvb6GI`mV?oB!A5GOYbl4(sU`u4$W>*K?L?j79W|3Q?=%T zf}}Q?>&FTz#_Wt4s#L0=*_b#gzka29i1JYP?JVv+ zKSA&d35K&37njEO=2Exb1p$XhXKgEd~) zKdFv*d;8-nF@M-273vvUz#!cfzuc6`bv;Il(3H)CPCS`7y-_q8E>kH;7cam^#_cQ?NjvQZBenFZQPUdQV>SU`S7 zuVkL$!DZ@=ipKG3qLyrkdmui4;m@|_@&6Z96yV}^>$=1aOgR26R}6%Z^rwUvY@jq_ z_-h8A8lz4R?kKblzv={jw-R{gC@%^hN~BDA8C`w%z)3N<+J>6^NyKRg-^UYTW8CCVF86!rvx98W|3SMk~0EiV99t zP_KdN?sx2QzL#h&bwPB(2OjT(BEzoguD)KG^_m~97M_>_ zS$zo9H%5;JN9$iqfX74#(jI?&N<0B9q6j!2(%cW8rCiu7Sw0AW7s@G2aUqf;#fM3wuEm#KE~5FFD3SXKiSZ z4jD}K8CQdo<1flJ#!!s=yy0t^&1B%-uhGJK`m~Q`(u6fIF*j4b;cxXPt2D7MU>7eg z*#6}B&+*(p*WY8NWzc;qKp&q5l{70Y1nTi8k1dprETW~y8UrJdVZlN_+62fag^n|7 zGXted6k}dM)<7hYVE|25R#Pq%fDU8Q3iMd%wPId7uvIPy*U222oTG(YV42A_QpsZv93h8743ICv-FCz;}Y>T3(GfbW*zr%nqJ#OlJ zA%}k19ca=R4z@dd7y(eU-<;QV!);(qz`HVpLFS~KqGA}rR!Z>Mck68FfReEpj{Y>) zm7l8+T`4?4i4iPQ;ApzYYZ(R|O@qHo&b^IV^*NOVr#-TZe1Fj-I)rEKOO3;A4gy*A z8a4>3CI!o>>1u?kgfOW0?<2Ig)MthH^J06;l4IFQ;!!|)v1*8kn1LzXc(;mpIP``W z<`7jXy-s2@A8tG9`UA!37!Ex?L1^x#UuXmT_cm>_;HG)4H|{HLmN&lf9o_5vVbXwF zEvm;hB6j-HdOaxx%6gX?+rP*eFW$NEJ^6{q)(~NqT2+#x6{;uhte24Vj@JzpzIkyr zO@-SnQ675oulC#+S8f$z=vKl9M=}dNi|_hAys+_pUc_FW$5qsmS<7&)Uq9j3!(J1p z1_iQl4GAhC?p$81v4%4dmPRtUVn;lMjrIr0Ie6tMB3_+BM=ZamHdXA#E=BO0g41S3 zyWEAGey7`!%w0*IA9#$`f&VNS#W80n$A^Haf9QuWE~DY~xu{2FE!-VWOw)u-=Eigz<H{XCAUR}OR>3pIEuqf;YtV^2#XEp}6Q`UmMTFeeM42+0Ns_v zo$i&=hka@`2(JHGgJlxm4ngu(c3XV> z*m;_Rf%qAaMVgAegdv-0uG7q+sfp7FrEV;npk!wz(!0QDhkCL-o;^@>^ScRMMLX7I z!_aOoUcYoH^Tgi0WW^Ny;tCl~AxG9jiWrI^QSu=B>k5KFJJEScPT2k4Y{QH5t zpx8hO?o4!XaC@kSDY_T>mIpW(Q58lsC2G5mXels%HDtJc>=pCj9xbz9l&j4QE>Wko zb5u4^wd*q>lU7fb%Rh_$t#{YwT!!S07IhU-CMfDdpzC&n#1*B{U_O`f#}1201ST*L zP%_WDIfGESZibfRG;`~lT+b5aC)3~+|2Eig{RcV_vNFn=sfuNlGKLQ3j1IU3UsRTW zR9{_iXF4S^;-iDjvy{CfZdZSBjArf=T2f@}hs<%k)uOEdZlLzyivVq-A|gRiTcG42 zz>B)3pzHFFu(fqwgHXx(UQEl^4I&BlOHOU1d5S%!)g%S;9%5>BKu6Q4am$h^MHDv( z9n;jQu;QKW8faZTzEt;z=O!mZ8d&-RI}sW2?>qvUL^Ml4_X$0FS~wvpCO##FCEY#G zEWxeeduF`1fbfeHcI|u~iWI7EaDX(X$2ftUceRNjunA@XUr7=odMb~biF$D{G8yp@ zjI|_h$-TkWgiHDEGbl-WF_4lBTV>zWK3Qp0NJ4Vq=@Bj;rtY0#reL>v#pf0;K7^X| z{W!Q$FjKreA-NcOtJkU@ICx35r^;lGqck&7qW$LM*sOd((6sSo8Kl4TugJ&>V?Cc> zX@t&O!L2;hX1%+ShF##^H@hKbZ7qF3U#i8*u*IAEFk6Qvwh}9{KQSrszbn;c+F-v! zhe)L5Zr{}S{r}dU`F5Gxz)amN(ej%sc+QlM1qgq|mA4Yd-8jtgt}8kV`t-8CTi@V5D|Xt3$4Y zMj$|Yv8CRVBQN=%rvzMz9pf4YB{R%VYPOwrDwRD{I56rQQ*}y`jbIcPwQ(hG0MhKf z{`?}8=CeNC$z0W4t7yKQY0@X8sqc%zJ;$CRp4wO69j@^k6X=>%k-W=s%*AF0OH-Y{ zX4PLhCg>g)&}}0WKSW!Q;hg_ee#!%5WzkpBKmD_VN*bQx4rMNgbc z_tfkZ7_cpIQaiy5%2%<4Gn)9=pxGAoD=}fw_){ZGF55R1O6w5Y1oK4uUrI#c!EFU1 zSNn3`uRo>8)^c0%DO~7ToOB|SajDtQoba4kzL+Q9)s|8bdv~LXccCW4DSymQF`#=k zzA+SKMD??uL#E_z-_DlPR=fcFQoAm@k4|{Ta|Zk7_sVb6ytm&?-f<}~+0P)<{#!$| z%tv4#ZwoYBB<3dOY6?gxSz|B$;~}-(a+IEemR#v>9~e_2EO&%c?h z73EG9aPs`MI>iH<;i__2<&&>jk~NcsOyJ#JS?^Yf#X7a!;b1Lgm*Ji6K1F3sl{)Ln z^BBXXdq(R}0X~F}^7i-AY$;!Tb;zkXXVZ6fQN^^$iYF#b1k5ra>w7n76I{!C*iNq07 z^W>;=@-t!#I|tu4?S0)Z!0wkbcyqTqjnoOJ+9p(-#@}k^L}u`58ORqr#9E8J)IGP# zf`SwdMyScjA8c}W-r}7~2VSf_p#^b@JMF0Xky-*=xiH*!@n1iPEI@D&y;)=4d07`G zLtwAo9d^GmcG9Lcos@h|D5@geFP~}lyW`vTw-@8KI9+h%q%ypBF{jQ91uueUD9_ETwHM*u1qCxk9*%oE zAJdI0(lhv6oT+MNcNkFybC3}kP_da4u`)-JDMmWgqFS9Fa1$%nleK}OD)6D{T5?J@ z!wqkX>Az({?^e%mTlcY7=Q@d!IGLOCY3|%_Hnnm{pWq(dA4t`lP-A^Dn=bn$msck7 zp{9BR?gJ_y;q8r!f));gZw+gGevOT!+LXWR%9GQKHqTQLx(Cy-7bz9YmZQu1u*J?& zSv|NuHwB`#xi*(qrK@|3&e?y(>qLK0zGDzyk&G zC%VjCiM%EbBnGclw$5aM>!t44S}Rwrq7&=K-{;iDfXdba6k6W#LJcI;8LZ^;oaphA z&jt*+@EqCAg=!<}Q@x@F#itdp!b&*+aWj3MVb);IQA5Ufvu#k%ut$A?EYDAhE`xSf9~z9M7g@{S8f+R zoVvuCz!m6UoUJ#f_c5pB`M_4|a$;o5|5{ykRjp_C*^A=VW?q~nclSPfXM5OP8g-PR z;Xl_K;FbYULw$0t#ks!H>D(6o?U%eey-0EOy2x3;LqU^>1dk+14`RdKJE7uHF zWxn3O-^{ar^K0P213!G1Y=d#Wzp$P!p;0+@H literal 0 HcmV?d00001 diff --git a/screenshot-3.png b/screenshot-3.png new file mode 100755 index 0000000000000000000000000000000000000000..6080c30668719633f5b0b14705998ff286a0fa44 GIT binary patch literal 93406 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 z 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 EFIto$eEquery("INSERT INTO `".$wpdb->prefix."donate_setting` (`id`, `mod`, `api_login`, `key`) VALUES ('1', '', '', '')"); + $wpdb->query("UPDATE `".$wpdb->prefix."donate_setting` SET `mod` = '".$_REQUEST['authnet_mode']."',`api_login` = '".$_REQUEST['x_login']."',`key` = '".$_REQUEST['x_tran_key']."' WHERE `id` =1"); + } +} + +register_activation_hook( __FILE__, 'donate_install' ); + +global $donate_db_version; +$donate_db_version = "1.0"; + +function donate_install() { + global $wpdb; + global $donate_db_version; + + $table_name = $wpdb->prefix . "donate"; + $sql = "CREATE TABLE IF NOT EXISTS `$table_name` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `first_name` varchar(255) CHARACTER SET utf8 NOT NULL, + `last_name` varchar(255) CHARACTER SET utf8 NOT NULL, + `organization` varchar(255) CHARACTER SET utf8 NOT NULL, + `address` varchar(255) CHARACTER SET utf8 NOT NULL, + `city` varchar(255) CHARACTER SET utf8 NOT NULL, + `country` varchar(255) CHARACTER SET utf8 NOT NULL, + `state` varchar(255) CHARACTER SET utf8 NOT NULL, + `zip` varchar(255) CHARACTER SET utf8 NOT NULL, + `phone` varchar(255) NOT NULL, + `email` varchar(255) NOT NULL, + `donation_type` varchar(255) NOT NULL, + `amount` varchar(255) NOT NULL, + `comment` text NOT NULL, + `status` varchar(255) NOT NULL, + `date` datetime NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `id` (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1"; + +$donate_setting = $wpdb->prefix . "donate_setting"; +$donate_setting_sql = "CREATE TABLE IF NOT EXISTS `$donate_setting` ( +`id` int(11) NOT NULL AUTO_INCREMENT, +`mod` varchar(255) NOT NULL, +`api_login` varchar(255) NOT NULL, +`key` varchar(255) NOT NULL, +PRIMARY KEY (`id`), +UNIQUE KEY `id` (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=2"; + + require_once( ABSPATH . 'wp-admin/includes/upgrade.php' ); + dbDelta( $sql ); + dbDelta( $donate_setting_sql ); + + add_option( "donate_db_version", $donate_db_version ); +} + +function donate_install_data() { + global $wpdb; + $welcome_name = "Mr. WordPress"; + $welcome_text = "Congratulations, you just completed the installation!"; + $rows_affected = $wpdb->insert( $table_name, array( 'time' => current_time('mysql'), 'name' => $welcome_name, 'text' => $welcome_text ) ); +} +?> -- 2.17.1