Subscribe Pro HTTP Order Callback
The Subscribe Pro Order Callback is one method Subscribe Pro offers to create recurring orders in your existing e-commerce platform or order management system.
The Subscribe Pro platform's scheduling and automation engine is responsible to decide when its time to create a recurring order and what should be it's contents. When an HTTP order callback is configured, Subscribe Pro will make a synchronous HTTP request to the URL you have configured with the full details about the order to be created. Your callback handler is responsible to create the order and return details about the order which was created, such as the order number.
Order Callback Workflow
-
Subscribe Pro sends a HTTP POST request to the web server where you have implemented a callback handler. The request will use a
Content-Type
of'application/json'
and contain all the necessary details about the order which should be created.See here for detailed documentation of the Callback Request Schema.
-
To secure your order callback endpoint, your handler must validate that the request has come from Subscribe Pro. There are a few different approaches to handle this.
See the Callback Security section for more detail about the following options:
- Only allow Subscribe Pro servers to send the request by whitelisting the Subscribe Pro IP addresses
- Validate the HMAC signature on the request using the shared secret key provided by Subscribe Pro.
-
Your handler is responsible to create or enter the order in your system (typically and e-commerce platform order order management system).
-
Your handler should return a response which includes details about the order which was created, including values such as
orderNumber
for the entire order andplatformOrderItemId
for each item.Your handler must return an HTTP status code of 201, 202 or 409, indicating that the order was successfully received and whether all, some, or none of the items were successfully ordered. The response should be sent with a
Content-Type
of'application/json'
and conform to the following schema for Order Callback Response.
Example Request
Subscribe Pro will issue JSON requests similar to the following example:
{
"customerId": "1234",
"customerEmail": "[email protected]",
"platformCustomerId": "1234",
"salesOrderToken": "89adsfjkl129834kljsad98fuoi123uj489u23894",
"currency": "USD",
...
"payment": {
"paymentToken": "8kj123489-afj123j4h-asdf",
...
},
"billingAddress": {
"firstName": "Jane",
"lastName": "Doe",
...
},
"shippingAddress": {
"firstName": "Jane",
"lastName": "Doe",
...
},
"items": [
{
"productSku": "RUBY-RED",
"shortDescription": "Ruby Red Black Tea - 2 oz.",
"qty": "4",
"requiresShipping": true,
"subscription": {
"id": "413245234"
}
}
]
}
Example Response
In your response, you should provide order number and order details. The following is an example which corresponds to the above request example:
{
"orderNumber": "ABC-091293923",
"orderDetails": {
"customerId": "1234",
"customerEmail": "[email protected]",
"platformCustomerId": "1234",
"platformOrderId": "091293923",
"orderNumber": "ABC-091293923",
"salesOrderToken": "89adsfjkl129834kljsad98fuoi123uj489u23894",
"orderStatus": "placed",
"orderState": "open",
"orderDateTime": "2021-04-01T17:43:00Z",
"currency": "USD",
"shippingTotal": "7.2000",
"taxTotal": "4.0000",
"total": "51.2000",
"billingAddress": {
"firstName": "Jane",
"lastName": "Doe",
...
},
"shippingAddress": {
"firstName": "Jane",
"lastName": "Doe",
...
},
"items": [
{
"platformOrderItemId": "735641231234",
"productSku": "RUBY-RED",
"productName": "Ruby Red Black Tea",
"shortDescription": "Ruby Red Black Tea - 2 oz.",
"qty": "4",
"requiresShipping": true,
"unitPrice": "10.0000",
"shippingTotal": "7.2000",
"taxTotal": "4.0000",
"lineTotal": "51.2000",
"subscriptionId": "413245234",
}
]
}
}
Request Schema
See here for detailed documentation of the callback request schema.
Security
All callback requests received from Subscribe Pro should be validated using the steps documented here: