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
andcustom_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
- ANZ eGate (MiGS)
- Beanstream
- CommWeb (MiGS)
- Echo
- Fat Zebra
- First Data Global Connect Web Service
- Helcim
- Litle
- PayGate
- PayLeap
- PayLine
- PayPoint Gateway Freedom + IMA
- RBS WorldPay (Business Account)
- Samurai
- Stripe
- WestPac
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 atemplate_type
of cart, checkout, receipt, html_email or email and also accepts an optionaltemplate_url
for setting a new location to cache the template from. Additionally, you can pass in anemail_subject
to set the subject of your receipt emails andsend_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 acceptsjavascript_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 atransaction_id
to refeed a transaction to your datafeed processor script. - New
api_action
added:attribute_save
which accepts aname
,value
,type
oftransaction, subscription, or customer
and anidentifier
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 anattributes
XML value instead of aname
andvalue
. Both versions support anappend
value set to 1 which will append attributes instead of overwiting ones with the same name. - New
api_action
added:attribute_list
which accepts atype
oftransaction, subscription, or customer
and anidentifier
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 aname
,type
oftransaction, subscription, or customer
and anidentifier
representing the transaction_id, sub_token (can also contain the full sub token url), or customer_id. You can also pass inall
set to 1 instead of aname
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
andcc_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 tocc_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
- attributes
- customer
- attributes
- attribute
- id
- store_id
- transaction_id
- sub_token
- customer_id
- name
- value
- date_modified
- date_created
- attributes
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 tocc_issue_number
- Changed
start_month
field on the checkout tocc_start_date_month
- Changed
start_year
field on the checkout tocc_start_date_year
- The API now checks for a valid
customer_country
when doing acustomer_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
andFC.checkout.config.orderFutureShipmentWeight
have been renamed toFC.checkout.config.orderLiveRateShipmentWeight
andFC.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 toFC.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
andFC.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 theevent
object infoxycart.js
, which allows for asynchronouspreprocess
andprocess
functions to be executed. - Changed
start_year
field on the checkout tocc_start_date_year
- Changed
total_weight
in the cart json to include the weight of all products in the cart while addingtotal_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
andquantity_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 theelement 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 instyle1_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.
- Added a class of