apiKey = env('BCA_API_KEY'); $this->apiSecret = env('BCA_API_SECRET'); } public function getAccessToken() { $response = Http::asForm() ->withBasicAuth($this->apiKey, $this->apiSecret) ->post($this->baseUrl . '/api/oauth/token', [ 'grant_type' => 'client_credentials' ]); return $response->json()['access_token']; } private function generateSignature($method, $relativeUrl, $token, $body, $timestamp) { $bodyHash = hash('sha256', $body); $stringToSign = strtoupper($method) . ':' . $relativeUrl . ':' . $token . ':' . strtolower($bodyHash) . ':' . $timestamp; return hash_hmac('sha256', $stringToSign, $this->apiSecret); } public function getAccount($corporateId, $accountNumber) { $token = $this->getAccessToken(); $method = 'GET'; $relativeUrl = "/banking/v3/corporates/$corporateId/accounts/$accountNumber"; $timestamp = now()->format('Y-m-d\TH:i:s.vP'); $body = ''; $signature = $this->generateSignature( $method, $relativeUrl, $token, $body, $timestamp ); $response = Http::withHeaders([ 'Authorization' => 'Bearer ' . $token, 'X-BCA-Key' => $this->apiKey, 'X-BCA-Timestamp' => $timestamp, 'X-BCA-Signature' => $signature, ])->get($this->baseUrl . $relativeUrl); return $response->json(); } }