$params needs more detail for ConfigOptions to use with UpdateClientProduct
Currently, $params contains Configurable Options indexed by String name, but to update them with UpdateClientProduct you need the database IDs. Please make $params contain all necessary data in the first place, so we don't have to fiddle with the database.
[configoptions] => Array
[Operating System] => Ubuntu 16.04
This proposes an expansion of the configoptions element in $params to include all relevant IDs to use with UpdateClientProduct:
Base64 encoded serialized array of configurable option field values - base64_encode(serialize(array(configoptionid => dropdownoptionid, XXX => array(‘optionid’ => YYY, ‘qty’ => ZZZ)))) - XXX is the ID of the configurable option - YYY is the optionid found in tblhostingconfigoption.optionid - ZZZ is the quantity you want to use for that option