LFS version: requires Limio for Salesforce LFS v12.23 or later
Limio for Salesforce exposes a global apex class for creating orders in Limio without the need for a UI being built on top. This allows for backend driven processes that don't require a UI to create an order in Limio.
The process consists of calling a global apex method exposed by a global class, the LimioOrder_Acquisition
. The global method processInvoiceLimioOrder
accepts a parameter of type LimioOrder_Acquisition.OrderRequest
and processes the order accordingly.
Below is the list of parameters for the class
global class OrderRequest { global String country; global String offerPath; global String offerId; global Map<String,object> tracking; global Map<String,object> billingAddress; global Map<String,object> deliveryAddress; global Contact contact; global String invoicePref; }
Each of these parameters must be populated as follows:
country
: 2 characters country ISO code, e.g.GB
. RequiredofferPath
: path of the offer, e.g./offers2/Digital offer
. Required ifofferId
is blankofferId
: id of the offer, e.g.XXXXX
. Required ifofferPath
is blanktracking
: object containing customer identifiers. Required to link it to the relevant Salesforce recordbillingAddress
: object containing billing address. Not required. For the full list of supported properties see the example provided below.deliveryAddress
: object containing delivery address. Not required. For the full list of supported properties see the example provided below.contact
: Salesforce contact, required for customer information. Must query the fields FirstName, LastName, Email. RequiredinvoicePref
: since the payment is invoice, this must contain eitherEmail
orPost
. Required
Below is an example of how this method can be invoked to create a subscription in Limio:
Map<String,Object> billing = new Map<String,Object>(); billing.put('firstName','Test First Name'); billing.put('lastName','Billing'); billing.put('country','GB'); billing.put('address2',''); billing.put('city','London'); billing.put('address1','4 Leathermarket St, Weston St');
billing.put('buildingNumber','4');
billing.put('streetName','Leathermarket St'); billing.put('postalCode','SE1 3ER'); billing.put('company',''); billing.put('state','London');
billing.put('customFields', new Map<String, Object>()); Map<String,Object> delivery = new Map<String,Object>(); delivery.put('firstName','Test First Name'); delivery.put('lastName','Delivery'); delivery.put('country','GB'); delivery.put('address2',''); delivery.put('city','London'); delivery.put('address1','4 Leathermarket St, Weston St');
delivery.put('buildingNumber','4');
delivery.put('streetName','Leathermarket St'); delivery.put('postalCode','SE1 3ER'); delivery.put('company',''); delivery.put('state','London');
billing.put('customFields', new Map<String, Object>()); Contact c = [select id, firstname, lastname, email, accountid from contact limit 1]; Map<String,Object> tracking = new Map<String,Object>(); tracking.put('contactId', c.id); tracking.put('accountId', c.accountId); i42as.LimioOrder_Acquisition.OrderRequest request = new i42as.LimioOrder_Acquisition.OrderRequest(); request.country = 'GB'; request.offerPath = '/offers2/Digital offer'; request.offerId = null; request.tracking = tracking; request.billingAddress = billing; request.deliveryAddress = delivery; request.contact = c; request.invoicePref = 'Email';
Object result = i42as.LimioOrder_Acquisition.processInvoiceLimioOrder(request);
This apex method returns a generic apex Object
in the following format
{ "external_id": "224f64b5-cc25-4eae-9959-33e6b1922aee", "id": "event-789bb1fc7456b11f1775ff19ffac5373", "order_reference": "3OJEOVOT2MM0", "owner": "id-a88bf1bda3c26cbf6e61d538ce423653", "status": "submitted" }
Comments
0 comments
Please sign in to leave a comment.