In today’s life the Salesforce empowers the business who uses self-service-channel by providing Subscription Management API. This API will help the automation of billing, invoicing, and collecting payments for subscribed items/products and one-time sales. The Salesforce Clients who uses the Einstein AI they can use this API for calculating Risk of late payments and increase in revenue.
Developer can use this API with websites, Slack, and mobile apps. The implementation logic of this is in the form of separate API hence it decouples it from Application Layer.
Examples of some of the use cases which support recurring subscriptions sales are:
- Price Adjustments and Calculating Prices
- For all Service Channels with ‘Buy Now’ (checkout)
- Cancellation and Renewing of Subscription
- Payment and Billing Process
The implementation of subscription involves following Salesforce configuration
- Connected App – OAuth 2.0 (Optional)
- Payment Gateway
- Product Data
- Pricing and Invoicing Info
- Tax Provider
The Subscription Management API includes collection of Synchronous and Asynchronous APIs.
We need to configure OAuth 2.0 authorization flow (refer the link for Connected App config steps using OAuth 2.0 Protocol)using Connected Apps to access these APIs.
The widely used applications which involve Preconfigured Payment Methods and lets customer to select the Products and purchase it known as buy now solution (checkout)
By chaining one and more APIs we can achieve end to end functionality.
To integrate with external systems we can use REST-APIs of Subscription Management API
In case of Asynchronous API Platform Event gets published when Process completes execution. A subscriber who is subscribed to it , listen to that event. There are many ways to listen it.
Invoke Subscription Management API- Developer can invoke it using one or more combinations of tools. Salesforce provides Flows to invoke this API. We can use invocable Actions to call this API.
Following diagram demonstrate the use of Flow Pause Element . The Asynchronous Action gets executes and completes all events. These are Platform Events. The Pause element wait for this events to complete.
When Invoice creation gets complete then it publishes the invoice processed event.
Using Apex we can call invocable actions and subscribe to the Platform Events which is completion events in this scenario.
We can use LWC as User Interface to call this Subscription Management API .
When these Asynchronous system are outside of Salesforce environment. We can invoke REST APIs of Subscription Managements using tools. We can then subscribe the completion events of Asynchronous API using cometD client (refer https://cometd.org/). This client is used in various popular open source languages.
Please refer the Example with some sample data for Subscription
Cost- 100$ per month
Tax – .57 after calculation of percentage of tax
This shows the POST request
POST – /services/data/v54.0/composite