Skip to main content

How fulfillment works

Fulfillment plays a crucial role in the order processing workflow. Its primary function is to secure a unique product key or similar confirmation of a digital sale from the partner. This confirmation can take various forms, including license keys, activation codes, serial numbers, activation links, certificates, and more. If fulfillment encounters an issue retrieving this confirmation, the corresponding order will stall and require intervention from the operations team.

The fulfillment call is used to:

  • Get a license key/activation code/serial number from a partner's server
  • Optionally activate a license key to a partner's server

If you have an existing service for issuing licenses it can be integrated into the Monetize fulfillment via custom fulfillment template (see below).

If you don't have such a service, Nexway provides a sample fulfillment server for you to implement on your side to test expected behavior. Please ask your account manager.

Nexway also offers an integrated off-the-shelf license key provider service designed to handle batches of activation codes. This service can function effectively during the initial phase and facilitate key distribution. Nevertheless, it requires manual effort for license package maintenance, which may not be the most efficient solution for many partners. Therefore, opting for a dedicated fulfillment service is often the preferred choice to streamline the fulfillment process.

List of fulfillment actions

Each action is associated with an order workflow event on the Nexway Monetize Platform. Some actions are only useful in a subscription context. We can map the action to a specific URL of your server.

ActionEvent on Nexway sideEndpoint called on your sideResult
CreateOrder is confirmedhttp://yourserver.com/licenses/newActivate or get a license key for a product
CancelOrder is canceledhttp://yourserver.com/licenses/cancelCancel/Revoke a license key
Renew (subscription only)Renewal of subscription producthttp://yourserver.com/licenses/renewGet a new key or extend key validity

Fulfillment request payload

Nexway can configure the payload sent to the partner's server to a certain extent. The fulfillment request is sent as a POST HTTP request and has the following attributes:

PropertyR/OTypeDescription
licenseIdRUUIDFulfillment Id, identifier of the fulfillment process
operationRstringOne of the supported operations: create, renew, cancel
checkoutRobjectHas some order related attributes (see below):
orderIdRstring
lineItemIdRstringUUID of the order line item
cartExternalContextOstringbase64 encoded plain json map. Taken from the external context of a shopping cart. Used to pass customer specific parameters. Example: eyJjdXN0b21QYXJhbSI6dHJ1ZX0
subscriptionIdOstringUUID of a subscription
trialContextOstringCREATION|CONVERSION
userRobjectBuyer attributes:
idRstringEnd-user Id
companyNameOstring
companyIdentifierOstringCNPJ or VAT number. Tax identifier
firstNameOstring
lastNameOstring
emailRstring
cityOstring
zipCodeOstring
countryRstring2 letter ISO code
localeRstringShopping cart locale
productRobjectProduct related attributes:
idRstringProduct Id
publisherProductIdOstringPublisher/ customer specific product id (if defined)
nameRstringInternal product name
externalContextOstringProduct external context. Defined in the catalog
priceFunctionParametersOmap(string, string)Map of price function parameters (if defined on the product level)
variablesOmap(string, string)Map of variables (if defined)

Nexway has the capability to initiate a customized call to the partner's server, likely including fields with different names but similar information to those mentioned above. We can create a dedicated fulfillment template that will effectively map these values to attributes recognized by your existing service.

Nexway provides standard fulfillment client-side HTTP calls with a predefined set of calls/actions and a common payload.

Sample fulfillment call

Nexway team can configure the following fulfillment template to call your server:

POST http://yourserver.com/licenses/new Basic HTTP Auth

{
"fulfillmentId": "<<licenseId>>",
"orderId": "<<orderId>>",
"cartExternalContext": "<<cartExternalContext>>",
"productId": "<<publisherProductId>>",
"subscriptionId": "<<subscriptionId>>"
}

See also

You may subscribe to our notifications to get other events about the order or subscription lifecycle.