Upgrading

Please view the upgrade notes in the wiki. If you have any issues with v0.7.2 please let us know.

Features

System Wide

  • Accurate payment type history is now included with each transaction.
  • When paying by plastic (credit / debit card), the masked payment card number and type is now included on the web-based and email receipts (in the fieldset#fc_receipt_order on the web-based receipt).
  • To increase security and limit your PCI burden, we’ve removed the ability to view customer card holder data from the admin. If you rely on this functionality, please do not upgrade to v0.7.2 until you have set up and connected a live payment gateway to your account.
  • If you enable Domain Keys/DKIM in your DNS settings, you can now enable “use email domain keys” under the advanced settings to remove the “Sender” header when sending email receipts. This gets rid of the “sent on behalf of” message seen by some (Microsoft) email clients (like Hotmail and Outlook).
  • When searching for transactions or subscriptions in the admin (and when filtering via the API), you can now do partial matches by using the * as a wild card.
  • custom_field_name and custom_field_value were added to the filtering system used by the admin for transactions and subscriptions as well as the API.
  • Attributes (name / value pairs) can now be saved via the API for transactions, subscriptions and customers. The admin and the API can then filter based on these values.
  • Added ^^subscription_modification_begin^^ and ^^subscription_modification_end^^ as receipt and email place holders for showing custom messaging when a subscription is modified via a sub_token.
  • Coupons can now be configured to exclude category or line item discounts. This means you can ensure multiple discounts are not applied if the coupon is used.

New Gateways

API & XML Datafeed

  • The API and the XML Datafeed now include a store_version node which includes the store version.
  • Instead of returning empty shipping address nodes, we now return the billing address information if an alternate shipping address wasn’t specified.
  • The past_due_amount_filter now works correctly for a subscription_list call. If you pass in a 1, it will be enabled, otherwise it will not.
  • New api_action added: store_template_cache which requires a template_type of cart, checkout, receipt, html_email or email and also accepts an optional template_url for setting a new location to cache the template from. Additionally, you can pass in an email_subject to set the subject of your receipt emails and send_html_email as a 1 or 0 to determine if you want to send text or text and html emails. Documentation.
  • New api_action added: store_includes_get which accepts javascript_library as an input and returns the html include block needed for your store. This should not be called with each page load, but should be used only by systems that need to obtain this information once and store it. The store’s API Key is not requried for this call. Documentation.
  • New api_action added: transaction_datafeed which accepts a transaction_id to refeed a transaction to your datafeed processor script.
  • New api_action added: attribute_save which accepts a namevaluetype of transaction, subscription, or customer and an identifier representing the transaction_id, sub_token (can also contain the full sub token url), or customer_id. You can also save a group of attributes all at once by passing in an attributes XML value instead of a name and value. Both versions support an append value set to 1 which will append attributes instead of overwiting ones with the same name.
  • New api_action added: attribute_list which accepts a type of transaction, subscription, or customer and an identifier representing the transaction_id, sub_token (can also contain the full sub token url), or customer_id.
  • New api_action added: attribute_delete which accepts a nametype of transaction, subscription, or customer and an identifier representing the transaction_id, sub_token (can also contain the full sub token url), or customer_id. You can also pass in all set to 1 instead of a name to remove all attributes. If successful, it returns the list of attributes for that item.
  • New api_action added: category_list which returns all categories configured for the given store.
  • New api_action added: downloadable_list which returns all downloadables configured for the given store.

Admin

  • CSV new field: is_anonymous added to indicate if the customer checked out as a guest.
  • CSV new field: discount_total added to display the total discount amount for coupons used for this transaction.
  • CSV new fields: cc_type and cc_number_masked which will be included if the store supports paying by plastic.
  • CSV new field: paypal_payer_id which will be included if the store supports paying by Paypal Express.
  • CSV new field: process_response to include the primary processor response.
  • CSV new field: sub_token_url will contain a space separated list of sub_token_urls for the subscriptions in this transaction (if it has any).
  • When exporting transactions from the admin including details, we’re no longer duplicating the transaction header information so you can easily sum off the order_total fields. We’re still including the order_number so you can group the data if needed.
  • The coupon management screen has been redesigned so you can now import coupon codes directly. You can also generate thousands of coupons at a time if needed.
  • The locale and currency settings have been moved to the settings menu.
  • You can now include multiple email addresses (separated by commas) in both the store email and the admin email fields. This is helpful if you want multiple receipients to be notified when an order takes place.
  • Set the help text for several advanced setting checkboxes to display whenever the checkbox is checked (patched back to 070).

Language Additions

  • Spanish language file added
  • downloadables_can_not_read_file
  • downloadables_maximum_downloads_reached
  • downloadables_not_found
  • downloadables_store_not_found
  • cart_notice_quantity_max
  • cart_notice_quantity_min
  • checkout_error_password_expired
  • checkout_password_sent_check_spam
  • checkout_modify_subscription_notice
  • checkout_download_links_not_available
  • Note: checkout_downloadable_products was combined with checkout_downloadables_message and removed.
  • SagePay error 3068 description added (default is “The card type is not supported”)

Improvements, Notes, & Bug Fixes

XML Datafeed: Changed Fields

  • cc_number changed to cc_number_masked in the customer XML from the API

XML Datafeed: New Fields

  • transaction
    • is_hidden (indicates if the transaction has been marked as hidden in the FoxyCart admin)
    • data_is_fed (indicates if the data was fed to the XML Datafeed processor)
    • cc_start_date_month
    • cc_start_date_year
    • cc_issue_number
    • processor_response_details
      • PaymentType (exists for PayPal Express Checkout transactions)
    • attributes
      • attribute
      • id
      • store_id
      • transaction_id
      • sub_token
      • customer_id
      • name
      • value
      • date_modified
      • date_created
  • subscription
    • attributes
      • attribute
      • id
      • store_id
      • transaction_id
      • sub_token
      • customer_id
      • name
      • value
      • date_modified
      • date_created
  • customer
    • attributes
      • attribute
      • id
      • store_id
      • transaction_id
      • sub_token
      • customer_id
      • name
      • value
      • date_modified
      • date_created

Customer API XML New Fields

  • cc_start_date_month
  • cc_start_date_year
  • cc_issue_number

Miscellaneous Changes

  • The default “sample code” has been upgraded to use jQuery 1.6.4 and Colorbox 1.3.18.
  • Duplicate coupon codes are no longer allowed. If you try to edit or create a coupon using a coupon code that is already in use for your store, you will see an error message in the admin.
  • Changed issue_number field on the checkout to cc_issue_number
  • Changed start_month field on the checkout to cc_start_date_month
  • Changed start_year field on the checkout to cc_start_date_year
  • The API now checks for a valid customer_country when doing a customer_save API action on an existing customer. If this value is not provided for new customers, it will be defaulted to the store country. We’ve had reports of the checkout page not functioning correctly and it’s due to invalid data in the customer record.
  • FC.checkout.config.orderShipmentWeight and FC.checkout.config.orderFutureShipmentWeight have been renamed to FC.checkout.config.orderLiveRateShipmentWeight and FC.checkout.config.orderFutureLiveRateShipmentWeight and now only include product weights for products with a delivery_type of ‘shipped’ (i.e., live shipping rates).
  • FC.checkout.config.multishipWeights has been renamed to FC.checkout.config.multishipLiveRateShipmentWeights and now only includes product weights for products with a delivery_type of ‘shipped’ (i.e., live shipping rates).
  • Added delivery_type to the products json
  • Added FC.checkout.config.multishipDetails[].hasShippableProducts and FC.checkout.config.multishipDetails[].hasLiveRateShippableProducts to the checkout javascript
  • Fix for mulitship orders consisting of both live shipping rate and flat shipping rate products.
  • Added a resume() method to the event object in foxycart.js, which allows for asynchronous preprocess and process functions to be executed.
  • Changed start_year field on the checkout to cc_start_date_year
  • Changed total_weight in the cart json to include the weight of all products in the cart while adding total_shippable_weight to include just the weight of the shippable items in the cart. Shippable items are items using a product delivery type of shipped or flat rate. All other internal order weight calculations related to shipping now only use shippable product weight.
  • Added quantity_min and quantity_max to the cart json. If the value is 0, no value was specified.
  • Fixed a bug which didn’t include handling fees for flat rate shippable products unless the flat rate shipping amount was > 0.
  • Fixed a bug with store cache data when modifying a store domain
  • The payment card field wasn’t properly validating on change in the checkout.
  • Downloadable file error messages are now customizable.
  • Fix in the checkout.js so that shipping and billing location objects are completely independent which allows for restricting states for shipping independently from billing.
  • Fix for the checkout error session language string which wasn’t pulling correctly from the language customizations (patched back to 070).
  • The admin transaction display, CSV export and XML Datafeed now repeat the billing information as the shipping information when specific shipping information was not provided.
  • Fix for using SSO with an invalid customer_id. Also added some logging for SSO interactions.
  • Fix for custom checkout language strings with carriage returns causing the javascript to break. They are now replaced with break tags.
  • Fix for when a session identifier was not correclty passed to FoxyCart (patched back to 060)
  • Fix for an issue with the updateinfo cart action where the updateinfo item existed in the cart if you cancelled out of the process. Now, it will only persist as long as that action is the desired action, otherwise the cart will remain empty.
  • Fix for the receipt not showing the Country Name but instead only showing the Country Code
  • Fix for the Subscription XML Datafeed not sending soon to expire card numbers unless that same store also had subscriptions that met the criteria for the sub datafeed.
  • Soon to expire card numbers now only include numbers that will expire this month, not next month. This change was requested because many banks do not issue a new card until the last month it is active.
  • Added the ability to resend the Subscription XML Datafeed directly via the admin under the advanced menu.
  • Added a check against the HTTP status code response when sending the Subscription XML Datafeed. Anything other than a 200 gets logged in the store’s error logs.
  • Fix for cart_empty custom language string not being displayed properly with an empty cart and cart=view (patched back to 070).
  • Fix for category discounts not properly respecting the “single” or “repeat” discount type (patched back to 071).
  • Fix for percentage based coupon discounts not working as expected in some situations.
  • Adding password hashing method for Webvanta (patched back to 071).
  • You can now reset the download count per downloadable product so your customers can re-download the file again.
  • You can now upload a new downloadable file without breaking download links for customers who bought a previous version of the file.
  • The admin will no longer let you add a downloadable with a product code that already exists in that category.
  • Downloadable product codes are limited to alpha numeric characters along with ._ and -.
  • You can now resend email receipts directly from the transaction history in the admin.
  • The transaction history end date filtering in the admin now defaults to tomorrow instead of the last completed transaction to avoid confusion.
  • When the cart quantity of an item is outside the range of the quantity_min or quantity_max, a note is displayed to the customer indicating the quantity was automatically adjusted.
  • When matching a city name it now trims the string and removes any non-alphanumeric characters before comparing against the values configured in the admin.
  • Fixed an admin display issue when first added a tax ending in “0”
  • When using multiship with only one shipto group, the shipping service wasn’t being displayed (patched back to 070).
  • Updated the API *_list calls to be 1-based instead of 0-based for pagination_start values. This is more consistent with the messaging displayed and with how items are filtered in the admin.
  • When prepopulating customer_country or shipping_country on the checkout, you no longer need to include customer_country_name or shipping_country_name as well.
  • Checkout prepopulation values will now be cleared out whenever an empty cart is performed.
  • Fix for a missing " in the checkout near the ajax loading image. (Patched back to 0.7.1.)
  • Added the product id as a class to the surrounding 
     element in the cart table, formatted as product_PRODUCTID
  • Added a class of fc_cart_item_details to the   element wrapping the product name and attributes in the cart table
  • Added a span with a class of fc_cart_item_name around the product name in the cart table
  • Added a check to prevent links to an orders receipt on a store website from opening in the colorbox
  • Updated the FoxyCart instance of Colorbox to add a class of fc_cbox to the colorbox div to allow for unique styling of the Colorbox when using it for the cart. Accounted for the new class in the close button styling in style1_fc/colorbox.css to ensure the “continue shopping” styling only appears for a FoxyCart initiated Colorbox
  • Added a new config variable FC.checkout.config.isValid to the checkout which when set to false prevents the checkout from submitting, allowing for custom validations to prevent the cart from validating
  • Adjusted the cart image size to be 100px instead of 150px and to be 50px on the checkout and receipt pagees.
  • When using the Purchase Order payment method, downloadable links will not be shown on the receipt or in the receipt email. They will have to be sent manually by the store administrator.
  • Updated all URL fields in the admin to be 300 characters in length.
  • Updating the temporary password to only be valid for 30 minutes.
  • When the order includes shippable products, the shipping address is now displayed in both the receipt and the receipt email even if it is the same as the billing address.
  • The PayPal Expresss image in the cart has been updated to use a static image which loads much faster than the dynamic images used previously.
  • When the order includes downloadable products and the payment method is eCheck via PayPal, download links are not shown to the customer and FoxyCart sends a special response details entry in the datafeed.
  • You can now specify up to 3 characters in the subscription frequency which allows you to set up a subscription to run ever 120 days, as an example.
  • Fixed the admin validation when creating a coupon that would not let you setup a coupon valid for only one day. Now the start date and end date can be the same date (patched back to 0.7.0)
  • Fixed an issue with multiship group totals are over $1,000 not displaying correctly in receipt emails (patched back to 071).
  • You can no longer disable PayPal Express as a payment option if you still have active PayPal Subscriptions.
  • The cart json now includes a page_referrer node you can use for creating your own “continue shopping” link if you have a full page cart design.
  • Change for the PayPal Profile ID filter to filter off the profile id displayed in the admin and not the third party id recurring payment ProfileID returned by PayPal.
  • Updated WorldPay gateway to support test firstnames and to use the correct shopper email address and ip (patched back to 071).
  • When creating a new store in the admin, it no longer becomes your default store automatically.
  • When updating the receipt template via the API, the use_receipt_template checkbox in the admin will be turned on automatically.
  • The payment card, type and expiration date is now shown in the admin for both the transaction history and the subscription page.
  • Because of a limitaton in PayPal’s system, we’re now including the product attributes as part of the product name and not just in the description field. The product name and the product attributes are separated by -- .
  • When returning to the checkout after a gateway error as a new customer, the first password field was not being displayed correctly (Patched back to 0.7.0).
  • When using the “Suggested Retail Rates” drop type for UPS shipping, a ” Customer Classification Code is required with the requested Pickup Type” error would result. We now default to a Retail (04) Customer Classification Code for this drop type (patched back to 0.6.0).
  • Single Sign On tokens were being validated using a case-sensitive method. This has been fixed.
  • Added the coupon code used to the admin’s transaction history display.
  • Fixed a bug where multiple, non-combinable coupons could be applied to the same order if they are initially evaluated but don’t yet apply.
  • Fix for an issue with specific gateway responses that were available only in English even though they were translated to other languages.
  • Fixed a currency format bug where the “price each” value could be missing a 0 on the end.
  • Fixed a bug in the admin when creating a store or deleting a store from an existing 071 or 072 store, the resulting admin interface would be the wrong version. This would cause (among other things) the sample code section to show the wrong include files. This has been patched back to all versions of the admin.
  • Adding the following User Agent header to the transaction and subscription datafeed requests from our system: FoxyCart Webhook v0.7.2 (http://wiki.foxycart.com/v/0.7.2/webhooks)
  • Flat rate shipping amounts for subscriptions are now configurable per subscription (instead of using the amount configured on the category). This allows stores using custom checkout JavaScript snippets to run the same flat rate amount as the original transaction (or adjust it as needed). Subscriptions using live rate shipping amounts will still be recalculated.
  • When customers were created via the API without specifying the customer_password_hash_type and when the store used a non-default password hashing method, the customer would not be able to login correctly. We updated the login code to use the hash type and hash config from the store if the customer values were blank before checking the customer password.
  • The admin was not properly clearing out the payment gateway key when switching gateways. This was particularly a problem for USAePay because it was sending along the previous value configured which was causing the transaction to fail (patched back to 0.7.0).
  • Fix for flat rate and future subscriptions where the shipping was being double charged.
  • Fix for multiship orders from multiple categories using flat rate shipping and one of those categores is configured for $0 flat rate shipping. The shipping amount was being doubled.