{eac}SoftwareRegistry Subscriptions for WooCommerce

Description

{eac}SoftwareRegistry Subscriptions for WooCommerce is a plugin, installed on your WooCommerce site, that adds a custom Webhook topic for subscription updates to the WooCommerrce Webhooks, and adds subscription and product data to WooCommerce order Webhooks.

  • Adds a custom Webhook topic for subscription updates to WooCommerce Webhooks.

  • Extends the WooCommerce Order Webhooks by adding subscription data to orders with subscriptions.

  • Adds product meta data to order and subscription records passed through WooCommerce webhooks.

When WooCommerce creates an order, the order is stored as a post with type set to “shop_order“. When the order is for a subscription, a related order is stored as a post with type set to “shop_subscription“. When a subscription is renewed, a new “shop_order” is created related back to the original “shop_subscription” order.

When subscriptions (shop_subscription) are passed through the “{eac}SoftwareRegistry Subscription updated” webhook, additional subscription data and related order numbers are added to the subscription order record being passed.

When orders (shop_order) are passed through the WooCommerce Order created, Order updated, and Order restored webhooks, this plugin will append any related shop_subscription orders with the additional subscription data and related order numbers.

Meta data (custom fields and attributes) from the products in the order may be appended to the order and subscription records.

For order webhooks, options are presented on the “Webhook” edit screen to choose what data may be added to the orders so that extended data is only retrieved and sent through the webhook where needed.

WooCommerce Webhooks are created by going to: WooCommerce → Settings → Advanced → Webhooks in the administration of your store site.

Subscriptions

To create a webhook for subscription updates, choose “{eac}SoftwareRegistry Subscription updated” for the topic on the Webhook data screen.

Whenever a subscription is updated, the subscription data will be sent to the Delivery URL specified in the Webhook.

Orders

This plugin also adds subscription data to orders passed through the Order created, Order updated, and Order restored webhooks when the order has related subscription(s).

Orders without subscriptions may be appended with meta data from the products in the order.

Subscription Data

The subscription data added (overlayed on the shop_subscription record) in the webhooks is:

  'date_created'                => datetime     // 'YYYY-MM-DDThh:mm:ss',
  'date_modified'               => datetime     // 'YYYY-MM-DDThh:mm:ss',
  'date_paid'                   => datetime     // 'YYYY-MM-DDThh:mm:ss',
  'date_completed'              => datetime     // 'YYYY-MM-DDThh:mm:ss',
  'last_order_id'               => int          // last completed order id,
  'last_order_date_created'     => datetime     // 'YYYY-MM-DDThh:mm:ss',
  'last_order_date_paid'        => datetime     // 'YYYY-MM-DDThh:mm:ss',
  'last_order_date_completed'   => datetime     // 'YYYY-MM-DDThh:mm:ss',
  'schedule_trial_end'          => datetime     // 'YYYY-MM-DDThh:mm:ss',
  'schedule_start'              => datetime     // 'YYYY-MM-DDThh:mm:ss',
  'schedule_end'                => datetime     // 'YYYY-MM-DDThh:mm:ss',
  'schedule_cancelled'          => datetime     // 'YYYY-MM-DDThh:mm:ss',
  'schedule_next_payment'       => datetime     // 'YYYY-MM-DDThh:mm:ss',
  'schedule_payment_retry'      => datetime     // 'YYYY-MM-DDThh:mm:ss',
  'billing_period'              => string       // 'day','month','year',
  'billing_interval'            => int          // number of days,months,years,
  'sign_up_fee'                 => float        // signup fee amount,
  'product_meta'                => array        // [ product_id => [product_meta_data] ]
  'related_orders'              => array        // [ order_id => type ('parent','renewal','resubscribe','switch') ]

product_meta includes:

  'id'                          => int          // product id,
  'name'                        => string       // product name,
  'slug'                        => string       // product slug,
  'sku'                         => string       // product sku,
  'attributes'                  => array        // product attributes (name => value)
  'meta_data'                   => array        // product custom fields (name => value)

For the subscription webhook, this data is overlayed on the shop_subscription order created by WooCommerce.

For the order webhooks, this data is overlayed on the related shop_subscription order and appended to the shop_order in a “subscriptions” array, indexed by id (allowing for multiple subscriptions per order).

For orders without subscriptions, the product_meta array is appended to the shop_order.

Using With {eac}SoftwareRegistry Registration Server

You must have the {eac}SoftwareRegistry WebHooks for WooCommerce extension enabled on your Software Registration server.

When creating a subscription webhook, the Delivery URL for “{eac}SoftwareRegistry Subscription updated” is:
https://{your_registration_server}.com/wp-json/softwareregistry/v1/wc-subscription

When creating order webhooks, the Delivery URL for Order created, Order updated, Order deleted and Order restored is:
https://{your_registration_server}.com/wp-json/softwareregistry/v1/wc-order

With this configuration, you can pass registry values (registry_*) in the product_meta array by creating custom fields on the product record and overriding the registration server defaults. For example:

registry_product = package_name
registry_license = Basic

See {eac}SoftwareRegistry WebHooks for WooCommerce for more information.
Developed for use with {eac}SoftwareRegistry Registration Server but can be used wherever needed.

Requires WooCommerce and either WooCommerce Payments (with subscriptions) or WooCommerce Subscriptions.

See Also

Copyright

Copyright © 2022, EarthAsylum Consulting, distributed under the terms of the GNU GPL.

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should receive a copy of the GNU General Public License along with this program. If not, see https://www.gnu.org/licenses/.

Screenshots

  • WooCommerce > Settings > Advanced > Webhooks

  • Options for Order Webhooks

Installation

This plugin is intended to be installed on your WooCommerce store site (not necessarily your software registration server).

Automatic Plugin Installation

This plugin is available from the WordPress Plugin Directory and can be installed from the the ‘Plugins’ page » ‘Add New’ and search for ‘EarthAsylum’. Click the plugin’s ‘Install’ button. Once installed, click ‘Activate’.

See Managing Plugins -> Automatic Plugin Installation

Upload via WordPress Dashboard

Installation of this plugin can be managed from the WordPress Dashboard » ‘Plugins’ » ‘Add New’ page by clicking the ‘Upload Plugin’ button, then selecting the eacsoftwareregistry-subscription-webhooks.zip file from your computer.

See Managing Plugins -> Upload via WordPress Admin

Manual Plugin Installation

You can install the plugin manually by extracting the eacsoftwareregistry-subscription-webhooks.zip file and uploading the ‘eacsoftwareregistry-subscription-webhooks’ folder to the ‘wp-content/plugins’ folder on your WordPress server.

See Managing Plugins -> Manual Plugin Installation

Settings

Options for this plugin will be found on the WooCommerce → Settings → Advanced → Webhooks page.

Reviews

There are no reviews for this plugin.

Contributors & Developers

“{eac}SoftwareRegistry Subscriptions for WooCommerce” is open source software. The following people have contributed to this plugin.

Contributors

Changelog

Version 1.0.7 – August 26, 2022

  • Added ‘Settings’, ‘Documentation’ and ‘Support’ links on plugins page.

Version 1.0.6 – July 2, 2022

  • Explicitly validate user input from webhooks form.

Version 1.0.5 – July 1, 2022

  • Fixed product meta data overwrite on variable product.
  • Cosmetic changes (readme) for WordPress submission.

Version 1.0.4 – May 19, 2022

  • Support (strip) variation attributes with “pa_” prefix.

Version 1.0.3 – May 4, 2022

  • Fixes for dates and schedules, and order meta data.

Version 1.0.2 – May 2, 2022

  • Added webhook options.

Version 1.0.1 – April 29, 2022

  • Added product_meta (including non-subscription orders)

Version 1.0.0 – April 22, 2022

  • Initial release.