2017-03-29 12 views
1

저는 Api로 작업하고 있습니다, 지금까지는 요청을 보내고 응답을받을 수 있지만 루비 코드로 json을 보내고 싶습니다. 응답 및 메시지를 내 레일 컨트롤러에서 액세스 할 수 있도록 내가 오류 또는 성공 메시지를 렌더링하고 또한 레일 컨트롤러에서 리디렉션을 처리하기 위해 simple_form을 얻을 수 있고 또한 모델의 응답에서 트랜잭션 세부 사항을 저장하려고합니다. 여기에 내 lib가 있습니다. 코드루비가 json 응답을 레일 콘트롤러에서 사용하기 위해 반환하는 방법

class SimplePay 
    require 'net/https' 
    require 'uri' 
    require 'json' 

    def self.pay(api_key, token, amount, amount_currency, status) 
    uri = URI.parse('https://checkout.simplepay.ng/v2/payments/card/charge/') 
    header = {'Content-Type': 'text/json'} 
    data = { 
     'token': token, 
     'amount': amount, 
     'amount_currency': amount_currency 
    } 
    http = Net::HTTP.new(uri.host, uri.port) 
    request = Net::HTTP::Post.new(uri.request_uri, header) 
    http.use_ssl = true 
    http.verify_mode = OpenSSL::SSL::VERIFY_NONE 
    request = Net::HTTP::Post.new(uri.request_uri, header) 
    request.basic_auth(api_key, '') 
    request.set_form_data(data) 

    response = http.request(request) 
    res = JSON.parse(response.read_body) 
    response_code = res['response_code'] 
    if response.kind_of? Net::HTTPSuccess 
     if response_code.eql? 20000 
     puts 'success' 
     else 
     puts 'Failed' 
     end 
    elsif status.eql? true 
     puts 'Success But Not Charged' 
    elsif status.eql? false 
     raise error 'Failed To Charge Card' 
    elsif response.kind_of? Net::HTTPBadRequest 
     raise error 'Failed 400' 
    elsif response.kind_of? Net::HTTPError 
     raise error 'Failed 404' 
    else 
     raise error 'Unknown Error' 
    end 
    end 
end 

어떻게해야합니까?

+0

당신은 JSON 인코딩 된 문자열을 반환하는 경우 (즉, "성공".to_json을)를 만들 것입니다 .to_json 일을 보낼 때 그것은 것입니다 응답 본문으로 보내야합니다. 그런데'20000'이 정확한 상태 코드입니까? '200'이 아닌가요? –

+0

컨트롤러에'해쉬'를 보내면'.to_json'을 보내면 그냥 json으로 만들 수 있습니다. – aks

+0

@aks 감사합니다. – codex

답변

1

나는 컨트롤러에 Hash 등을 보내 말을 다음 그냥 JSON으로