email; //The clients email will be stored in the $email var $url2 = "https://clients.hostsailor.com/includes/api.php"; # URL to WHMCS API file $postfields["username"] ="given our username"; $postfields["password"] = "given our password"; $postfields["clientid"] = $clientid; $postfields["action"] = "getclientsdetails"; $postfields["responsetype"] = "xml"; $query_string = ""; foreach ($postfields AS $k=>$v) $query_string .= "$k=".urlencode($v)."&"; $chh = curl_init(); curl_setopt($chh, CURLOPT_URL, $url2); curl_setopt($chh, CURLOPT_POST, 1); //curl_setopt($chh, CURLOPT_TIMEOUT, 30); curl_setopt($chh, CURLOPT_RETURNTRANSFER, 1); curl_setopt($chh, CURLOPT_POSTFIELDS, $query_string); curl_setopt($chh, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt($chh, CURLOPT_SSL_VERIFYPEER, 0); $xmldata = curl_exec($chh); if (curl_error($chh)) { die("Connection Error: ".curl_errno($chh).' - '.curl_error($chh)); } else { $data = new SimpleXMLElement($xmldata); foreach($data->client as $itm) { $firstname=$itm->firstname; $lastname=$itm->lastname; } } $data = [ 'email' => $email, 'status' => 'subscribed', 'firstname' => $firstname, 'lastname' => $lastname ]; syncMailchimp($data); function syncMailchimp($data) { $apiKey = 'api-key'; $listId = 'list-id'; $memberId = md5(strtolower($data['email'])); $dataCenter = substr($apiKey,strpos($apiKey,'-')+1); $url = 'https://' . $dataCenter . '.api.mailchimp.com/3.0/lists/' . $listId . '/members/' . $memberId; $json = json_encode([ 'email_address' => $data['email'], 'status' => $data['status'], 'merge_fields' => [ 'FNAME' => $data['firstname'], 'LNAME' => $data['lastname'] ] ]); $ch = curl_init($url); curl_setopt($ch, CURLOPT_USERPWD, 'user:' . $apiKey); curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_TIMEOUT, 10); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT'); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_POSTFIELDS, $json); $result = curl_exec($ch); $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); return $httpCode; } }); ?>