2017-03-29 9 views
1

私はApiで作業していますが、これまでのところリクエストを送信して応答を受け取ることができますが、Rubyコードでjson応答と私のレールコントローラからアクセスすることができますので、エラーや成功メッセージをレンダリングし、また、レールコントローラからのリダイレクトを処理するsimple_formを得ることができるメッセージ、私はまた、モデルの応答からトランザクションの詳細を保存したい、ここに私のlibコードRubyに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

にそれを行いますレスポンス本文として送信されます。ところで、あなたは '20000'が正しいステータスコードだと確信していますか? 「200」ではない? –

+0

私はコントローラに 'Hash'を送って、' .to_json'を送るだけでそれをjsonにします。 – aks

+0

@aksありがとうございました – codex

答えて

1

私はコントローラにHashを送って言うと、あなたはそれを送信しているときだけ.to_jsonを行うことは、あなたがJSONエンコードされた文字列(すなわち「成功」.to_json)を返した場合、それは意志JSON

関連する問題