/** * ─────────────────────────────────────────────────────────────────────────────────────────────────┐ * This web service class is use for update admin access token for particular store. * Trigger on Order update or create. * Shopify API Documentation: https://shopify.dev/docs/admin-api/rest/reference * Create Shopify Store: https://www.shopify.com/signup?itcat=identity&itterm=create-new-store * Shopify API Release 2020: https://www.shopify.in/partners/blog/shopify-api-release-january-2020 * What is Person Account in Salesforce ? https://help.salesforce.com/articleView?id=account_person.htm&type=5 * ────────────────────────────────────────────────────────────────────────────────────────────────── * @author Sumit * ────────────────────────────────────────────────────────────────────────────────────────────────── */ @RestResource(urlMapping='/UpdateAdminAccessToken/*') global with sharing class UpdateAdminAccessToken { public static String generic_value1 = ''; public static string Name = ''; public static list configurationList = new list(); @HttpPost global static void updateShopifyToken(){ RestRequest request = RestContext.request; String store = 'Default'; Map params = request.params; if(!params.isEmpty() && params.containsKey('store') && params.get('store') != null) store = params.get('store'); String query = 'Select '+CheckAccessibility.isAccessible('name, HIC_ShopifySync__Salesforce_Pricebook__c, HIC_ShopifySync__Draft_Order_Sync__c,HIC_ShopifySync__Default_Field_Mapping__c,HIC_ShopifySync__Specify_Close_Date__c,HIC_ShopifySync__Batch_Is_Processing__c, HIC_ShopifySync__Shopify_URL__c, HIC_ShopifySync__API_Key__c, HIC_ShopifySync__Private_Key_Password__c, HIC_ShopifySync__Opportunity__c, HIC_ShopifySync__Order__c, HIC_ShopifySync__Opportunity_Line_Item__c, HIC_ShopifySync__Order_Line_Item__c, HIC_ShopifySync__Order_Fulfillment__c, HIC_ShopifySync__Person_Account__c, HIC_ShopifySync__Order_Sync__c, HIC_ShopifySync__Opportunity_Sync__c ','HIC_ShopifySync__HIC_Configuration__c')+' from HIC_ShopifySync__HIC_Configuration__c where '+CheckAccessibility.isAccessible('HIC_ShopifySync__Store__c', 'HIC_ShopifySync__HIC_Configuration__c')+' = \''+store+'\' LIMIT 49999'; configurationList = database.query(query); RestResponse response = RestContext.response; String jSONRequestBody = request.requestBody.toString().trim(); addNewStoreToken(jSONRequestBody); } global static void addNewStoreToken(String JSONResponseBody ){ System.debug('JSONResponseBody---'+JSONResponseBody); Map meta = (Map) JSON.deserializeUntyped(JSONResponseBody); if(!meta.isEmpty() && (meta.containskey('access_token') && meta.get('access_token') != null && meta.get('access_token') != '') && (meta.containskey('store_url') && meta.get('store_url') != null && meta.get('store_url') != '')){ String access_token = String.valueof(meta.get('access_token')); System.debug('access_token--'+access_token); String StoreURL = String.valueof(meta.get('store_url')); String store = StoreURL.replace('https://','').replace('.myshopify.com','').remove('/').remove('"'); if(access_token != null && access_token != ''){ list listofConfiguration = new list(); String query = 'Select '+CheckAccessibility.isAccessible('id,name,HIC_ShopifySync__Batch_Is_Processing__c,HIC_ShopifySync__Specify_Close_Date__c, HIC_ShopifySync__Account_Contact__c, HIC_ShopifySync__Person_Account__c, HIC_ShopifySync__Default_Account__c, HIC_ShopifySync__Shopify_URL__c, HIC_ShopifySync__API_Key__c, HIC_ShopifySync__Private_Key_Password__c, HIC_ShopifySync__Opportunity__c, HIC_ShopifySync__Order__c, HIC_ShopifySync__Refresh_Token__c,HIC_ShopifySync__Opportunity_Line_Item__c, HIC_ShopifySync__Order_Line_Item__c, HIC_ShopifySync__Order_Fulfillment__c','HIC_ShopifySync__HIC_Configuration__c')+' from HIC_ShopifySync__HIC_Configuration__c where '+CheckAccessibility.isAccessible('name','HIC_ShopifySync__HIC_Configuration__c')+' = \''+store+'\' LIMIT 1'; System.debug('query--'+query); listofConfiguration = database.query(query); system.debug('***listofConfiguration ' +listofConfiguration); if(listofConfiguration.isEmpty()) { query = 'Select '+CheckAccessibility.isAccessible('id,name,HIC_ShopifySync__Batch_Is_Processing__c,HIC_ShopifySync__Specify_Close_Date__c, HIC_ShopifySync__Account_Contact__c, HIC_ShopifySync__Person_Account__c, HIC_ShopifySync__Default_Account__c, HIC_ShopifySync__Shopify_URL__c, HIC_ShopifySync__API_Key__c, HIC_ShopifySync__Private_Key_Password__c, HIC_ShopifySync__Opportunity__c, HIC_ShopifySync__Order__c, HIC_ShopifySync__Refresh_Token__c,HIC_ShopifySync__Opportunity_Line_Item__c, HIC_ShopifySync__Order_Line_Item__c, HIC_ShopifySync__Order_Fulfillment__c','HIC_ShopifySync__HIC_Configuration__c')+' from HIC_ShopifySync__HIC_Configuration__c where '+CheckAccessibility.isAccessible('name','HIC_ShopifySync__HIC_Configuration__c')+' = \'Default\' LIMIT 1'; listofConfiguration = database.query(query); } //HIC_ShopifySync__HIC_Configuration__c config = new HIC_ShopifySync__HIC_Configuration__c(); listofConfiguration[0].Id = null; listofConfiguration[0].Name = store; listofConfiguration[0].HIC_ShopifySync__Store__c = store; listofConfiguration[0].HIC_ShopifySync__Shopify_URL__c = 'https://'+store+'.myshopify.com'; listofConfiguration[0].HIC_ShopifySync__Private_Key_Password__c = access_token; //listofConfiguration.add(config); if(listofConfiguration != null && !listofConfiguration.isEmpty()){ try{ upsert listofConfiguration name; }catch(Exception e){ System.debug('Error '+ e.getMessage()); } } } } } }