· 4 years ago · Dec 15, 2020, 03:36 PM
1use GuzzleHttp\Exception\GuzzleException;
2use GuzzleHttp\Client;
3use Carbon\Carbon;
4use DateTime;
5use Exception;
6
7public static function hitAPI($phoneNumber)
8{
9 $clientId = env('CLIENT_ID');
10 $secretKey = env('SECRET_KEY);
11 $apiUrl = env('API_URL');
12 $mediaType = "VOI";
13
14 $timestamp = Carbon::now()->format(DateTime::ISO8601);
15
16 $queryString = 'timestamp=' . $timestamp . '&clientId=' . $clientId . '&appType=' . $appType .
17 '&mediaType=' . $mediaType . '&phoneNumber'= . $phoneNumber;
18
19 $queryString = self::generateKokattoAPISignedRequest($queryString, $secretKey);
20
21 $client = new Client();
22
23 $response = $client->request('GET', $apiUrl . '/v2/otpm/create?' . $queryString);
24
25 return json_decode($response->getBody(), TRUE);
26}
27
28private static function generateKokattoAPISignedRequest($queryString, $secretKey)
29{
30
31 //construct query string into map
32 parse_str($queryString, $queryStringMap);
33
34 //sort map by key
35 ksort($queryStringMap);
36
37 //construct map into query string
38 $query = http_build_query($queryStringMap);
39
40 //md5 hash query string
41 $queryMd5 = md5($query);
42
43 //generate hmac hash with sha256 method
44 $queryHmacSha256 = hash_hmac('sha256', $queryMd5, $secretKey);
45
46 //url encode hmac hash
47 $signatureEncoded = urlencode($queryHmacSha256);
48
49 //append the signature in query parameters
50 $queryEncoded = $queryString . "&signature=" . $signatureEncoded;
51
52 return $queryEncoded;
53
54}
55
56