Hôm rồi ôm một dự án với yêu cầu kết nối KiotViet với Shopify. Shopify API thì mình đã làm việc quen rồi nhưng KiotViet API thì chưa. Bên đó có hỗ trơ tài liệu KiotViet API v1.8 và mình thử lên mạng tìm kiếm thử có source code nào có sẵn để hỗ trợ không. Rất tiếc là không (thực tế là có những rất ít và hầu như không giúp ích được nhiều). Vậy là phải tự viết.
Và cũng xin chia sẻ với các bạn 2 hàm (function) – vâng chỉ 2 hàm thôi nhưng nó làm hàm bao quát giúp bạn gọi các API endpoint của KiotViet API.
Hàm lấy thông tin Access Token của KiotViet
Bạn sẽ được KiotViet cung cấp 2 thông số là: Client ID và Mã bảo mật (Client Secret). Bạn sẽ cần sử dụng 2 thông số này để truyền vào tham biến hàm lấy Access Token.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | public function get_kiotviet_token($client_id,$secret_key){ $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => "https://id.kiotviet.vn/connect/token", CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => "", CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 30, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => "POST", CURLOPT_POSTFIELDS => "scopes=PublicApi.Access&grant_type=client_credentials&client_id=".$client_id."&client_secret=".$secret_key, CURLOPT_HTTPHEADER => array( "cache-control: no-cache", "content-type: application/x-www-form-urlencoded" ), )); $response = curl_exec($curl); $err = curl_error($curl); curl_close($curl); if ($err) { return false; } else { $response = json_decode($response,true); if( isset($response['access_token']) ){ return $response['token_type']." ".$response['access_token']; } return false; } } |
Hàm thao tác với KiotViet API
Sau khi lấy được Access Token và bạn có thể sử dụng nó để khai thác KiotViet API. Và đây là hàm tổng giúp bạn tương tác với KiotViet API endpoint.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | public function kiotviet_call($retailer,$token,$api_endpoint,$query=array(),$method='GET'){ $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, "https://public.kiotapi.com".$api_endpoint); curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE); curl_setopt($curl, CURLOPT_ENCODING, ''); curl_setopt($curl, CURLOPT_MAXREDIRS, 10); curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 30); curl_setopt($curl, CURLOPT_TIMEOUT, 30); curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method); if ($method != 'GET' && in_array($method, array('POST', 'PUT'))) { if (is_array($query)) $query = json_encode($query); curl_setopt ($curl, CURLOPT_POSTFIELDS, $query); } $header = array( "authorization: ".$token, "cache-control: no-cache", "content-type: application/json", "retailer: ".$retailer ); curl_setopt($curl, CURLOPT_HTTPHEADER, $header); $response = curl_exec($curl); $err = curl_error($curl); curl_close($curl); if ($err) { return false; } else { return $response; } } |
Mình đã share trên Github tại: https://github.com/huynhmaianhkiet/PHP-KiotViet-API. Các bạn có thể truy cập vào đây để biết thêm thông tin chi tiết cũng như chia sẻ, góp ý để hoàn thiện hơn.
Nếu có gì thắc mắc các bạn có thể để lại comment hoặc liên hệ với mình để trao đổi.
Huỳnh Mai Anh Kiệt