Authorization Bearer token in Http for mpesa Intagration Using JAVA

Viewed 21

//Generate an OAuth Access Token

    public  MpesaTokenGet Oauthgettoken() throws Exception {
    
            RestTemplate restTemplate = new RestTemplate();
            String url = "https://sandbox.safaricom.co.ke/oauth/v1/generate?grant_type=client_credentials";
            String username = "";
            String password = "";
            String authorizationHeader = "Basic "
                    + DatatypeConverter.printBase64Binary((username + ":" + password).getBytes());
            org.springframework.http.HttpHeaders requestHeaders = new org.springframework.http.HttpHeaders();
            requestHeaders.add("Authorization",authorizationHeader);
            requestHeaders.add("Accept", MediaType.APPLICATION_JSON_VALUE);
            HttpEntity<MpesaTokenGet> httpentity = new HttpEntity<MpesaTokenGet>( requestHeaders);
            System.out.println(authorizationHeader);
            ResponseEntity<MpesaTokenGet> responseEntity = restTemplate.exchange(url, HttpMethod.GET,
                    httpentity, MpesaTokenGet.class);
    //      mpesa_authRepository.update(responseEntity.getBody().getAccess_token(),responseEntity.getBody().getExpires_in());
            System.out.println(responseEntity.getBody().getAccess_token());

            return responseEntity.getBody();
    }

It is a GET api and im getting auth token successfully using this code

          //Register C2B Confirmation and Validation URLs 
   
    public RegisterUrlResponse getC2B(RegisterUrlC2B RegisterUrlC2B) throws Exception{


    String url = "https://sandbox.safaricom.co.ke/mpesa/c2b/v1/registerurl";
    String token=mpesa_authRepository.token();
    String authorizationHeader = "Bearer "+token;
            
    org.springframework.http.HttpHeaders requestHeaders = new org.springframework.http.HttpHeaders();
    requestHeaders.add("Authorization",authorizationHeader);
    requestHeaders.add("Accept", MediaType.APPLICATION_JSON_VALUE);
    HttpEntity<com.mpesa.domain.RegisterUrlC2B> httpentity = new HttpEntity<RegisterUrlC2B>(RegisterUrlC2B, requestHeaders);
    System.out.println(authorizationHeader);
    RestTemplate restTemplate = new RestTemplate();
    ResponseEntity<RegisterUrlResponse> responseEntity = restTemplate.exchange(url, HttpMethod.POST, httpentity,
            RegisterUrlResponse.class);
       
    return responseEntity.getBody();
    
    }

Its a POST Api and after checking RegisterurlC2B requestbody in postman it return the 500 internal server exception

And the output showing like this error

anyone can explain what i need to do

0 Answers
Related