Provides shopping cart and plugin support for payment gateways
Version 2.0.0b1:
- New: Stripe cart checkout and one time charges use a Stripe hosted Checkout page (supports 3D Secure / SCA, Apple Pay, Google Pay and Link)
- New: Stripe plugin config checks the Stripe webhook endpoint for this site and warns if it is missing, disabled or on a different API version
- New: Stripe API calls are pinned to API version 2026-08-26.dahlia
- New: Stripe Checkout collects a separate shipping address for carts with shipped items (new "Shipping Countries" plugin setting) - saved to the transaction as txn_shipping_*
- New: Payment plugins and their config options are included in the ACP search
- Change: the cart ID cookie is kept once set, so a cart started while logged out survives jrUser 3.1.0b1 giving the session a new ID at login
- Change: Stripe webhooks MUST now be signed - the Webhook Signing Secret is required and unsigned or invalid webhooks are rejected
- Change: One cart total function is used by the cart, checkout and every payment plugin (includes quantity, shipping and service charge)
- Change: Stripe gateway fees are read from the charge when the webhook arrives before the fee is known
- Change: Removed the FoxyCart module import tool and support for the old FoxyCart module (the FoxyCart payment plugin is unchanged)
- Bug Fix: The cart quantity could be changed for items that do not support a quantity (i.e. a file could be bought 3 times)
- Bug Fix: Changing a cart quantity a second time showed the wrong line price and shipping until the cart was reloaded
- Bug Fix: The cart did not show the quantity box for items that support a quantity (i.e. products)
- Bug Fix: Items over the profile's Max Items limit (hidden from visitors) could still be bought
- Bug Fix: With profile media in Object Storage, sold files were never copied to the vault - buyers lost their download when the item was deleted, and bundle ZIP files could not be created
- Bug Fix: With profile media in Object Storage, replacing a sold file did not update the vault copy
- Bug Fix: Stripe webhook could accept an event that was not sent by Stripe
- Bug Fix: Stripe partial refund could refund every item in the cart
- Bug Fix: Stripe cart checkout did not charge for item quantity or shipping
- Bug Fix: Cart page total could count shipping more than once with multiple shipped items
- Bug Fix: Stripe one time charge used the Stripe customer of the admin instead of the selected user
- Bug Fix: A Stripe payment for less than the cart total could complete the cart
- Bug Fix: Replacing a sold file with a file of a different type left the old file in the vault, so buyers got the old version after the item was deleted
- Bug Fix: After a sold item was deleted, only the first download from the vault worked - later downloads were empty
- Bug Fix: Purchased downloads of converted files (i.e. WAV uploads converted to MP3) were named with the wrong file extension
- Bug Fix: Items pending approval could be added to the cart and bought before a moderator approved them
- Bug Fix: With the FoxyCart plugin set to Japanese Yen, prices were shown 100 times too high (¥150000 for a ¥1,500 item) - the amount sent to FoxyCart was already correct
- Bug Fix: A failed Stripe payout to the bank account (payout.failed) was not logged - Stripe replaced the transfer.paid / transfer.failed events with payout.paid / payout.failed in 2017
- Bug Fix: plugin_view only loads a plugin file for a plugin name made of letters, numbers and underscore, and a missing plugin or plugin file shows the "invalid plugin view" notice instead of a 500 error
- Developer: Stripe plugin talks to the Stripe REST API directly - the bundled stripe-php library has been removed
- Developer: jrPayment_stripe_api() function for making Stripe API calls - used by the Stripe plugins of this and other modules
- Developer: "cart_checkout_validate" event lets item modules stop a checkout (i.e. not enough stock), and "cart_add_item" listeners can refuse an item by setting cart_error
- Developer: jrPayment_get_user_purchase_id() so item modules can link a buyer to their purchased download
- Developer: jrPayment_get_user_purchase_url() and "get_user_purchase_url" event so a buyer is linked to an item they bought inside a bundle
- Developer: Removed a PHP 8.2 deprecation notice in jrPayment_price_to_cents()
Version 1.2.0b1:
- New: "Parsed Webhook" section in transaction detail screen showing parsed webhook
- New: Check for the Terms Of Service module being active before returning to cart checkout
- Change: Updated Raw Transactions browser to work with updates in Subscriptions module
- Change: TX Button removed in Event listing - "Parsed Webhook" replaces "View Raw Transaction"
- Change: "FoxyCart" updated to "Foxy.io" to reflect new logo and branding
Version 1.1.14:
- Change: Updated view structure to support new updates in Jamroom Core 6.5.12+
- Change: Payment browser updated to be faster when browsing
Version 1.1.13:
- Bug Fix: Fixed a bug where an active but invalid payment plugin could cause a PHP fatal error
Version 1.1.12:
- Change: Updates and optimizations to better support PHP 8+
Version 1.1.11
- Change: Notification text strings moved to the module language file
Version 1.1.10
- Change: Global Config plugin selection is now hilighted so it is clear that an option must be selected
- Bug Fix: Items per page jumper was not working correctly in the Transaction browser
Version 1.1.9:
- Change: Javascript live search field updates to work with Jamroom Core 6.4.0+
Version 1.1.8:
- Bug Fix: Payments to profile ID's not selected in payout tool could be marked as payed out
Version 1.1.7:
- Change: Updated Stripe plugin to handle partial refunds
- Change: If a cart has a Product module item in it, Stripe Checkout will ask for a physical address
Version 1.1.6:
- Change: Updated to work with new Account Tabs functionality provided by Users module version 2.6.0
- Change: Updated to work with new Recycle Bin functions found in Jamroom Core 6.2.0
Version 1.1.5:
- Change: "purchase_item" event now works with all purchase_item event listeners
- Change: "Purchases" tab now shows item quantity and any shipping and handling charges
- Bug Fix: Cart purchases for EU sites may fail if using FoxyCart due to GDPR changes in the webhook
- Bug Fix: Shipping and Handling was only being calculated on the first item in the Cart
- Bug Fix: "Show Cart in Menu" option could prevent closing ul tag from appearing in HTML
Version 1.1.4:
- Bug Fix: Updating an existing Register Entry may not save new Transaction ID correctly
Version 1.1.3:
- New: Searching in Payments browser now searches purchasing user_name as well
Version 1.1.2:
- Bug Fix: Monthly Report was not including refunded amounts for some register entries
- Bug Fix: Canceling a Profile Payout could result in an "Invalid Payout Code received" error
Version 1.1.1:
- New: "get_plugin_config" event trigger added so listeners can add/change plugin config on the fly
- New: "stripe_get_customer_id" event trigger added to get current Stripe customer ID
- Change: Updated internal functions to allow non-datastore modules to work with some events
- Bug Fix: Payment Support module tabs were not showing on Payout download screen
Version 1.1.0:
- New: "Process a Payment" tool to manually process a one time payment if Stripe is active processor
- Bug Fix: Possible "duplicate transaction error" in Activity Log when running in test mode with Stripe
- Bug Fix: "Expense" field may not save correctly when modifying an existing manual payment transaction
Version 1.0.11:
- Bug Fix: Refunded PayPal invoice payments not showing as refunded in Payment Browser
- Bug Fix: Changing txn_amount in raw data browser was not updating the linked entry in the register
Version 1.0.10:
- New "cart_checkout_complete" event added when payment is made and cart is marked complete
- Bug Fix: Some informational Stripe events were not being saved to the event log
Version 1.0.9:
- Bug Fix: Shipping and Handling charge not being added to PayPal checkout
Version 1.0.8:
- Bug Fix: "Add to Cart" button may not work correctly on some mapped profile domains
Version 1.0.7:
- Bug Fix: cart would be displayed at the bottom of page when "clear cart" was pressed
Version 1.0.6:
- New: Ability to assign a transaction missing user information to an existing user
Version 1.0.5:
- New: Support added for Stripe Webhook Signatures in Stripe plugin config
- Bug Fix: "Delete" button for Invoice transaction not deleting register entry
- Bug Fix: Some transactions in the Event Browser could be out of order
Version 1.0.4:
- New: "modify" button in Transaction Detail allows for transaction details to be modified
- Bug Fix: Expense values could be off in Monthly Report detail screen for a given month
Version 1.0.3:
- Bug Fix: Invalid "There are no profiles with pending payouts" message could show on payout form
- Bug Fix: "Enable PayPal Checkout" may not work correctly in some situations
Version 1.0.2:
- New: PayPal invoice payments are now recorded to Payments browser if business email matches
- Change: Stripe "charge failure" event in Activity Log now includes email address for failed payment
- Bug Fix: Items per page jumper not working in Transactions Browser
- Bug Fix: Register entries with positive income showing a "-" sign on transaction detail page
Version 1.0.1:
- Bug Fix: Possible browser redirect bug when using FoxyCart single sign on (SSO)
Version 1.0.0:
- New: Support added for FoxyCart Single Sign On (SSO) to pre-populate checkout with user info
Version 1.0.0b9:
- New: Ability to create, update and delete custom payment transactions from Payments browser
- New: FoxyCart importer updated to import manual register entries and subscription payments
- Bug Fix: Net Income value in Monthly Report tool could be incorrect
Version 1.0.0b8:
- Bug Fix: FoxyCart daily subscription feed may not be passed to Subscription module correctly
Version 1.0.0b7:
- Bug Fix: Importing payments now properly imports previous payments for FoxyCart subscriptions
Version 1.0.0b6:
- Bug Fix: Currency symbol may not show in payment browser for payments made with non-active plugin
- Bug Fix: Stripe gateway transaction fee not being included if running Stripe in test mode
Version 1.0.0b5:
- New: "webhook_parsed" global event that includes raw transaction events before processing
- New: Hourly maintenance worker for Stripe plugin to update register entries missing gateway fee
- New: Products and Customer profile views now have buttons into the main Payments view
- New: Updated webhook functionality to watch for duplicate web hooks
- New: Added ability to use PayPal in conjunction with other payment processors
- New: Updated profile payout to properly handle refunded items that were previously paid out
- New "Show Clear Cart" global config option to show or hide the "Clear Cart" button in the cart
- Change: CSS Updated for module icons in control panel tables to make them more uniform
- Change: "Summary" profile view is now the default view, and includes updates to make things more clear
- Change: "Clear Cart" and "Continue Shopping" buttons have swapped places in cart
- Bug Fix: Refunded transactions were not showing as refunded in Payments browser on profile
- Bug Fix: "Purchases" tab may not show to users if Payments not allowed in profile
- Bug Fix: Gateway fee was not always being added in when using Stripe plugin
- Bug Fix: FoxyCart plugin was not working correctly unless FoxyCart module was also installed
Version 1.0.0b4:
- New: Updated Stripe plugin to work with some small changes in latest Stripe API
- Change: Update to move the Cart button into the Site Menu instead of a floating icon
- Bug Fix: Cart did not look correct on some mobile devices
Version 1.0.0b3:
- Change: Updates to better support new Products module
Version 1.0.0b2:
- Bug Fix: Removed "success" class from cart checkout button - causing CSS issue in some skins
Version 1.0.0b1:
- Initial Release