How can we help?
Table of Contents
< All Topics
Print

How to use iCafeCloud API

We have added an API feature for iCafeCloud. You generate your API key and secret from the Cloud panel “Settings” page API Settings  (Figure 1).

Figure 1
  1. To create your API key and API Secret, click the “Create” button (Figure 2).
Figure 2
  1. It will create the 2 keys “API keys” and “API Secret” (Figure 3).
Figure 3
  1. Click the “Copy” button next to copy the keys (Figure 4).
Figure 4
  1. Paste the keys along with “License ID” to a text file and save it (Figure 5).
Figure 5

Note: Please note that API Secret will only be displayed once when you create it. If you forget to copy it or don’t save it. Then, you need to create the keys again to get the API Secret.

  1. Now, download our example file from this link to your server or your web application.
  2. Edit the example file and replace the placeholders with your “License ID”, “API Keys” and “API Secret”  (Figure 6).
Figure 6
  1. Remove any “vardump” in the example file and then you are ready to use the API.
  2. Note the parameters used in the example file (Figure 7)
Figure 7
  1. And create a web form using any frontend framework or just plain HTML/CSS/JS (Figure 8)
Figure 8

Note: The fields with * are required fields to create a member account using the API so those must be included in the form.

  1. When you submit the form, if the account create succeeds the response from the API will be ‘true’ or “”., and if the member already exists then you will receive “Account exists” as a response (Figure 9)
Figure 9
  1. Using the response, you can show alerts or perform other actions using javascript (like showing sweet alerts) (Figure 10)
Figure 10

Notes:

  • Current API only supports creating member accounts, other features and functions will be added in the future.
<!-- wp:paragraph -->
<p>&lt;?php</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>/***</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp;* access icafecloud's api</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp;* @param $params</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp;* &nbsp; &nbsp; &nbsp;array(</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; member_account: '',</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; member_password: '',</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; member_first_name: '',</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; member_last_name: '',</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; member_birthday: 'yyyy-mm-dd',</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; member_expire_time_local: 'yyyy-mm-dd'</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; member_email: '',</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; member_phone: '',</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; member_id_card: '',</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; member_balance: 0,</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; member_points: 0,</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; member_group_name: '',</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; member_sex: 'F/M',</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; member_comments: '',</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; member_address: ''</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp;* &nbsp; &nbsp; &nbsp;)</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp;* @param $method string POST|GET|DELETE|PUT</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp;* @param $api_key string</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp;* @param $api_secret string</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp;* @param $error string &nbsp;return error message</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp;* @return bool &nbsp;true|false</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp;*/</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>function icafecloud_api_execute($end_point, $params, $method, $license_id, $api_key, $api_secret, &amp;$error)</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>{</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp; &nbsp; $curl = curl_init();</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp; &nbsp; curl_setopt($curl, CURLOPT_VERBOSE, false);</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp; &nbsp; curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp; &nbsp; curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp; &nbsp; $query = http_build_query($params, '', '&amp;');</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp; &nbsp; $time = time();</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp; &nbsp; $signature = $license_id . "\x00" . $api_key . "\x00" . $time . "\x00" . strtoupper($method) . "\x00" . $query;</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp; &nbsp; $signhash = hash_hmac('sha256', $signature, $api_secret);</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp; &nbsp; $headers = array(</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp; &nbsp; &nbsp; &nbsp; "X-Time: {$time}",</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp; &nbsp; &nbsp; &nbsp; "X-License-Id: {$license_id}",</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp; &nbsp; &nbsp; &nbsp; "X-Auth: {$api_key}:{$signhash}"</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp; &nbsp; );</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp; &nbsp; curl_setopt($curl, CURLOPT_URL, 'https://cp.icafecloud.com/api/v1/' . $end_point);</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp; &nbsp; curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp; &nbsp; curl_setopt($curl, CURLOPT_USERAGENT, "User-Agent: Mozilla/4.0 (compatible; PHP iCafeCloud API)");</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp; &nbsp; // Post and postfields</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp; &nbsp; if ($method === "POST") {</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp; &nbsp; &nbsp; &nbsp; curl_setopt($curl, CURLOPT_POST, true);</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp; &nbsp; &nbsp; &nbsp; curl_setopt($curl, CURLOPT_POSTFIELDS, $params);</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp; &nbsp; }</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp; &nbsp; // Delete Method</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp; &nbsp; if ($method === "DELETE") {</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp; &nbsp; &nbsp; &nbsp; curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method);</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp; &nbsp; }</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp; &nbsp; // PUT Method</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp; &nbsp; if ($method === "PUT") {</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp; &nbsp; &nbsp; &nbsp; curl_setopt($curl, CURLOPT_PUT, true);</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp; &nbsp; }</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp; &nbsp; curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp; &nbsp; curl_setopt($curl, CURLOPT_HEADER, true);</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp; &nbsp; curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp; &nbsp; curl_setopt($curl, CURLOPT_TIMEOUT, 60);</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp; &nbsp; $output = curl_exec($curl);</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp; &nbsp; var_dump($output);</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp; &nbsp; // Check if any error occurred</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp; &nbsp; if (curl_errno($curl) &gt; 0) {</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp; &nbsp; &nbsp; &nbsp; $error = 'Curl error: ' . curl_error($curl);</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp; &nbsp; &nbsp; &nbsp; return false;</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp; &nbsp; }</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp; &nbsp; $http_code = curl_getinfo($curl, CURLINFO_HTTP_CODE);</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp; &nbsp; if ($http_code != 200) {</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp; &nbsp; &nbsp; &nbsp; $error = "Curl status is " . $http_code;</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp; &nbsp; &nbsp; &nbsp; return false;</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp; &nbsp; }</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp; &nbsp; $header_size = curl_getinfo($curl, CURLINFO_HEADER_SIZE);</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp; &nbsp; $output = substr($output, $header_size);</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp; &nbsp; curl_close($curl);</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp; &nbsp; $ret_data = json_decode($output, true);</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp; &nbsp; if ($ret_data === false) {</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp; &nbsp; &nbsp; &nbsp; $error = 'Invalid response';</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp; &nbsp; &nbsp; &nbsp; return false;</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp; &nbsp; }</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp; &nbsp; $result = $ret_data['result'] ?? 0;</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp; &nbsp; if ($result == 0) {</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp; &nbsp; &nbsp; &nbsp; $error = $ret_data['message'] ?? '';</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp; &nbsp; &nbsp; &nbsp; return false;</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp; &nbsp; }</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp; &nbsp; return true;</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>}</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p># tests</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>$params = [</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp; &nbsp; 'member_account' =&gt; 'test01',</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp; &nbsp; 'member_password' =&gt; '123456',</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp; &nbsp; 'member_first_name' =&gt; 'Robert',</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp; &nbsp; 'member_last_name' =&gt; 'Wood',</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp; &nbsp; 'member_birthday' =&gt; '1999-01-01',</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp; &nbsp; 'member_expire_time_local' =&gt; '0000-00-00',</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp; &nbsp; 'member_email' =&gt; '[email protected]',</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp; &nbsp; 'member_phone' =&gt; '13000000001',</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp; &nbsp; 'member_id_card' =&gt; 'ID-231302',</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp; &nbsp; 'member_balance' =&gt; 0,</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp; &nbsp; 'member_points' =&gt; 0,</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp; &nbsp; 'member_group_name' =&gt; '',</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp; &nbsp; 'member_sex' =&gt; 'M',</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp; &nbsp; 'member_comments' =&gt; 'created by api',</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp; &nbsp; 'member_address' =&gt; '12621 Frank Loyd'</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>];</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p># generate your api key/secret in CP settings</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>$license_id = '&lt;your license id&gt;';</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>$api_key = '&lt;your api key&gt;';</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>$api_secret = '&lt;your api secret&gt;';</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>$ret = icafecloud_api_execute('member', $params, 'POST', $license_id, $api_key, $api_secret, $error);</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>var_dump($ret);</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>var_dump($error);</p>
<!-- /wp:paragraph -->
Categories