INFRALUTION IPN.NET RELEASE NOTES  
Version 4.2.3
Fixed issue with changes to PayPal subscription notifications (removal of item_number and quantity fields from posts) causing Divide by Zero exceptions
Version 4.2.2
Fixed issue with WebAccept and Subscription payments not handling tax correctly resulting in a "No product matches Item Number" error for items purchased using this methods when sales tax is applied.
Version 4.2.1
Fixed "Payment not Verified by PayPal" error when purchases are made due to PayPal now requiring verification postbacks to be made using TLS 1.2.
Version 4.2.0
Changed source code to use Visual Studio 2017.
Fixed issue with converting PayPal date/times to UTC accounting for daylight time.
Added ItemNumber to log to enable sales to be imported from a log using PayPal import definition if required
Fixed bug in PaymentProcessor.ProcessSubscriptionItem which meant subscriptions were not processed
Version 4.1.1
Fixed issue with generating license keys issued for variant products (using an ExpiryDate with the Days after key first authenticated option) where the expiry date was not set correctly.
Version 4.1.0
Added JSON API (IpnJSON.asmx) to allow integration with 3rd party ecommerce systems (other than PayPal) and web integration platforms such as Zapier
Version 4.0.4
Added support for multiple PayPal accounts to be handled by a single IPN.NET server.  When configuring IPN.NET server from License Tracker simply specify the email addresses with semi-colon separators.
Fixed IPN.NET Server to write additional Web.Config options (SuppressPaymentNotificationEmails, SuppressSubscriptionRenewalEmails and DisablePriceChecking) so that these can be used with encrypted connection settings.  The options need to be set first in the unencrypted Web.Config and then the Install.aspx page run to set up the connection and encrypt the file.   
Version 4.0.3
Changed IPN.NET Server to update customer details in the database when receiving a new sale for an existing email address.
Version 4.0.2
Fixed Divide by Zero Exception when processing subscription payments
Fixed sample HTML source code for Authenticated License subscription
Version 4.0.1
Fixed Start Local IPN.NET Server start menu so that it works with Visual Studio 2012 and 2013. 
Version 4.0.0
Added support for Version 6.0 of ILS.  You must upgrade to this version and run the Install.aspx web page to upgrade the database for compatibility with ILS Version 6.0.
Added SuppressPaymentNotificationEmails setting to Web.Config.  If this option is set to true then email notifications (with attached XML file) are only sent to you if there is an error processing the transaction. The default value is false.
Added SuppressSubscriptionRenewalEmails setting to Web.Config.  If this option is set to true then the customer is only sent an email the first time a subscription for a product is processed.  Subsequent subscription transactions with the same transaction ID will not generate a new email.  The default value is false.
Added DisablePriceChecking setting to Web.Config.  If this option is set to true then IPN.NET will not verify that the price of the products being purchased matches the prices you have set in License Tracker.  The default value is false.  Changing to true may expose you to risk of fraudulent transactions.
Added ability to match products to IPN items based on the item number, currency and price.  This enables you to define variant products which have the same IPN Item Number but a different price. This also enables support for subscription payments with different prices for the trial and monthly payment cycle.
Changed Item Number and Item Name so that if they are not defined then the parent item value is now used.   This enables you to set these values once for the base product and then match purchase items to variant products based only on the price. 
Version 3.8.1
Fixed issue installing standalone IPN.NET database on SQL Azure platform.  
Added improved support for High DPI display settings to Test Tool.  
Version 3.8.0
Updated to use Version 5.10 of ILS.   You must upgrade to this version and run the Install.aspx web page to upgrade the database for compatibility with ILS Version 5.10.   
Version 3.7.0
Updated to use Version 5.9 of ILS.   You must upgrade to this version and run the Install.aspx web page to upgrade the database for compatibility with ILS Version 5.9.   
Added support for setting the ExpiryDays (after first authentication) from a custom generator.
Version 3.6.1
Fixed issue with shopping cart variables not being inserted correctly into email templates
Fixed issue with Sale dates being incorrectly converted from Pacific Time to UTC.
Updated links to PayPal documentation to new locations
Version 3.6.0
Added support for processing subscription payments.
Added ability to use placeholders in email templates for any PayPal payment variable.
Updated to use Version 5.8 of ILS.   You must upgrade to this version and run the Install.aspx web page to upgrade the database for compatibility with ILS Version 5.8.   
Added ExpiryDate and MaxDeauthentications properties to the CustomGenerator.CustomData class for custom generators.  Existing custom generators will need to be recompiled to work with this version of IPN.NET.
Version 3.5.2
Updated to compile against Version 5.7 of ILS.   
Version 3.5.1
Fixed issue with customer address State field incorrectly being set to the address City.   
Version 3.5.0
Updated to compile against Version 5.6 of ILS.   
Added Evaluation, IsUpgrade and Price properties to CustomGenerator.ISale interface.  Existing custom generators will need to be recompiled to work with this version of IPN.NET.
Version 3.4.0
Updated to compile against Version 5.5 of ILS.   You must upgrade to this version for compatibility with ILS Version 5.5.   
Improved the progress bar/messages when importing data from IPN.NET into License Tracker.
Fixed Test Tool to automatically generate new Transaction IDs and payment date when loading data from file if the Auto Generate Transaction IDs option is checked.
Custom Generators must be updated and recompiled to use the changed ICustomGenerator interface defined in ILS Version 5.5.
Version 3.3.1
Fixed "Invalid Column" error when running with connecting directly to the License Tracker database. 
Version 3.3.0
Added support for Windows 8 and Visual Studio 11 
Updated to compile against Version 5.4 of ILS
Version 3.2.0
Updated to compile against Version 5.3 of ILS.   You must upgrade to this version for compatibility with ILS Version 5.3.
Fixed error when configuring IPN.NET Service if there are no products in the License Tracker database.
Version 3.1.2
Updated to compile against Version 5.2 of ILS.
Version 3.1.1
Fixed IPN Test Tool to post data to IPN.NET service using UTF8 rather than ASCII.   This ensures that the Test Tool can be used to test with data containing non-ASCII extended characters.
Version 3.1.0
Recompiled against Version 5.1 of ILS.  If you have configured the IPN.NET Server to connect directly to the License Tracker database then you must upgrade ILS to Version 5.1 for database compatibility.
After installation of the new IPN.NET Server assemblies you must run the Install.aspx page to upgrade existing databases to the current schema.
Version 3.0.1
Fixed possible SecurityException when configuring the IPN.NET Server when it is hosted in partial trust environments that don’t provide KeyContainerPermission
Version 3.0.0
Added direct configuration of the IPN.NET Server from Infralution Licensing System (Version 5) License Tracker application.  IPN.NET can now be configured to either read product data directly from the License Tracker database or from a remote database that can be configured from License Tracker using the IPN.NET->Configure Server menu.   Sales data is also now stored directly into the database.   For remote databases the sales data can be imported into the License Tracker database using the IPN.NET->Import Data from Server menu.  This means that you can now add or change products in License Tracker and upload the changes directly to a remote IPN.NET Server without having to upload an XML configuration file or restart the web server.
Added support for receiving payments in multiple currencies.   You can now define a Product Variant for a product which specifies the cost per unit in a different currency to the default currency.  
Version 2.3.0
Changed IPN.NET Help/Documentation to be standalone (CHM) rather than integrated with the Microsoft Visual Studio 2005/2008 help system.   This enables the IPN.NET documentation to be viewed when using Visual Studio 2010 (which uses a different help system to VS2008) and also means Visual Studio is no longer required to view the help documentation.
Added Visual Studio 2010 Sample Projects.
Added support for running local IPN.NET Server using Visual Studio 2010 ASP.NET development Server
Version 2.2.1
Recompiled to use version 4.5.1 of ILS.   This fixes issues with authenticating the IPN.NET and ILS licenses when running IPN.NET in a partial trust environment.  It also fixes a potential issue with authenticated IPN.NET and ILS licenses not being recognised as valid if the web host name changes depending on how the site is accessed eg from www.mydomain.com to mydomain.com
Version 2.2.0
Added new MaxAuthentications option for PurchaseItems.  If non-zero then IPN.NET will call the AuthenticationService.SetAuthenticationLimits  web service method to set the maximum number of allowed authentications for each key generated.   This allows you to create product variants that have different Authentication Limits to the base product.   For instance you could generate a license key that can be authenticated on 10 computers and sell it for a different price to a license which can only be authenticated on one computer.
Version 2.1.4
Changed code that checks the business email address to be case insensitive.  This eliminates the possibility of problems if you register an email address with PayPal that uses mixed case.
Version 2.1.3
Added conditional compilation constant CHECK_ILS_LICENSE to IPN project that allows checking for an ILS license to be be bypassed if the ILS source code is included directly in the IPN project
Version 2.1.2
Recompiled to use version 4.3 of Infralution.Licensing version 4.3.  This fixes an issue with authenticating the ILS license used by IPN.NET where you would receive a decryption error because the older version of the ILS assembly was being used.
Version 2.1.1
Added Infralution.Licensing assembly to server directory.   This means that this assembly does not have to be copied separately when going live.
Fixed Sample Custom Generator projects (Infralution.Licensing assembly reference was causing error)
Updated to reference Infralution.Licensing Version 4.2.2.  This fixes permissions issue with installing and running IPN.NET in some shared hosting environments which do not provide KeyContainerPermission to partial trust applications.
Fixed potential IOException with simultaneous purchase attempts.
Version 2.1.0
Changed IPN settings to support the concept of Product Variants introduced in ILS 4.1.   This allows you to define a base product (and corresponding IPN.NET purchase item) which defines the license parameters.  Product variants can then be created that use the base product license parameters to generate license keys but have different ProductInfo or prices for packages of licenses. 
The IpnSettings.xml tag "PackagePurchaseItem" has been renamed to "ParentItemNumber" to correspond with the new ILS Product Variant naming.  IpnSettings.xml files containing the original tag can still be read using this version of IPN.NET.   
The IpnSettings.xml tag "PrerequisitePurchaseItem" has been renamed to "PrerequisiteItemNumber".  IpnSettings.xml files containing the original tag can still be read using this version of IPN.NET . 
Version 2.0.2
Fixed sample Custom Generator project references to use specific version of ILS shipped with IPN.NET.  This avoids the need to change the sample project reference if a later version of ILS is installed. 
Version 2.0.1
Fixed TestTool reference to Infralution.Licensing assembly so that users don't have to update IPN.NET every time they install a new version of ILS. 
Version 2.0.0
Added support for Authenticated Licenses (new in version 4 of ILS).   Note that this has required a major restructure of the Settings file (which is now called IpnSettings.xml).   We recommend users upgrading from previous versions make a backup of your existing project and Settings.xml files before installing this release. 
Changed the Visual Studio IPN project to an ASP.NET Web Application.  
Fixed issue with editing the Settings file causing a locking exception when using the local development server.
This release is a paid upgrade.
Version 1.1.3
Added Visual Studio 2008 Solution for IPN.NET Server
Changed AppData files to be permanent - so they are not overwritten when a new version of IPN.NET is installed.  Note that the AppData files of older versions will still be overwritten when installing this version so you should back these files up before upgrading to this version.
Fixed help section on installing License Keys for IPN.NET and ILS.
Fixed setup manifest so that installer uses XP Styles
Version 1.1.2
Fixed issue in trial version with SecurityException when checking ILSLicense (changed to use Version 3.7.2 of ILS)
Version 1.1.1
Added support for IncludeProductInfoChecksum option when generating license keys
Changed CustomGenerator interface ISale.ProductName to return the the PayPal ItemNumber for the product (instead of the name).  This should be more stable then the item name.
Added ItemNumber to the XML log for each PurchaseItem.   This allows the License Tracker import definition to be setup to import using the ItemNumber instead of the PayPal PurchaseItem Name.
Version 1.1.0
Added support for Base32 encoding of license keys (via latest version of ILS)
Added support for CustomGenerators to generate ProductInfo for license keys based on information included in the IPN data
Changed location of Test Tool license file (to common app data directory) to support installation by non-admin users
Version 1.0.7
Fixed issue with Test Tool not posting correctly formatted date and numeric variables when locale is non English
Version 1.0.6
Fixed IPN Test Tool post variable values for txn_type to reflect actual values posted by IPN.   Note that PayPals documentation for these variables is somewhat ambiguous.
Added exception handler around post back verification code to allow it to handle possible problems connecting to PayPals server.
Fixed issue with send_money transactions causing error notifications to be sent to customers.   Send_money transactions are now ignored correctly.
Added trace output to ProcessPayment method to display the txn_type if it is not handled.
Version 1.0.5
Fixed issues when running on a server with Locale set to use decimal separator other than decimal point.
Version 1.0.4
Fixed issue with new PayPal date format causing an exception
Version 1.0.3
Fixed issue with anonymous email blocking that could cause valid domains names, that contain blocked domain names within them, to be blocked
Version 1.0.2
Added support for SMTP authentication (for use with local testing).
Fixed documentation on license installation.  
Version 1.0.1
Fixed problem with Language Encoding that meant the purchases by customers with non-ASCII characters in their address details were not validated by PayPal
Fixed issue with incorrect email being sent to the customer for Upgrades.
Version 1.0.0
Initial Release of IPN.NET