2012-07-21 49 views
0

我花了最後一天試圖讓這個在我的Rails應用程序工作,但不斷得到響應:BancBox REST API POST createClient

{"code"=>"E-C-343", "message"=>"Unrecognized JSON Request."} 

BancBox的Documentation很輕,所以我在在如何解決這個問題上存在一些僵局。

有沒有人有使用REST在BancBox上createClient成功API調用的示例?

我的帖子API調用利用HTTParty:

include HTTParty 
format :json 

def save_with_bancbox(params = {}) 

    post_params = { :authentication => { :apiKey => BANCBOX_KEY, 
             :secret => BANCBOX_SECRET 
             }, 
        :subscriberId => BANCBOX_ID, 
        :firstName => params[:first_name], 
        :lastName => params[:last_name], 
        :ssn => params[:ssn], 
        :dob => params[:dob], 
        :address => { :line1 => params[:address_line_1], 
           :line2 => params[:address_line_2], 
           :city => params[:city], 
           :state => params[:state], 
           :zipcode => params[:zipcode] 
           }, 
        :homePhone => params[:dob], 
        :email => params[:email] 
        } 

    response = HTTParty.post(BANCBOX_REST_URL, 
          :body => post_params) 

    logger.debug "Response -- #{response}" 

    save! 

end 
+0

我已經結束了持續的SOAP路線和一切工作好。由於我很好奇地學習如何正確地做到這一點,並希望對於我處於同一位置的某個人有價值,所以留下了這個問題。 – 2012-07-26 00:37:21

回答

2

請嘗試更改apikey,祕密後,下面的代碼和subscriberid


require "net/https" 

require 'rubygems' 

require 'json' 

require 'httparty' 


###########################bancbox.rb in config/initializers################# 

BANCBOX_API_KEY = "__KEY__" 

BANCBOX_API_SECRET = "__SECRET__" 

BANCBOX_SUBSCRIBER_ID = "__SUB_ID__" 

BANCBOX_API_URL = "https://sandbox-api.bancbox.com/BBXPortRest" 

module Bancbox 

     class API 

       include HTTParty 
       debug_output $stdout 
       base_uri "#{BANCBOX_API_URL}" 

       def initialize(u=BANCBOX_API_KEY,p=BANCBOX_API_SECRET) 
         auth = {:apiKey => u, :secret => p} 
         @options = {:body => {:authentication =>auth,:subscriberId=>BANCBOX_SUBSCRIBER_ID}, :headers => { 'Content-Type' => 'application/json', 'Accept' => 'application/json' }} 
       end 

       #USERS 
       def create_client(options={}) 
         options = options.merge(@options[:body]) 
         @options.merge!({:body => options.to_json}) 
         response = self.class.post("/createClient",@options) 
         #required_fields- subscriberId,firstName,lastName,ssn,dob,address,homePhone,email 
       end 

       def get_schedules(options={}) 
         @options.merge!({:query => {:subscriberId => BANCBOX_SUBSCRIBER_ID}}) 
         @options.merge!({:query => options}) 
         self.class.post("/getSchedules",@options) 
       end 
     end 
end 

b = Bancbox::API .new 


b.create_client({:firstName=> "Bipen",:lastName=> "Sasi",:ssn=>"334-444-4444",:dob=> Date.parse("January 1st 1988"), :address=>{:line1=> "4408 walnut st", :line2=>"apt 3r",:city=> "philly",:state=>"pa",:zipcode=>"19110"}, :homePhone=> "2672551161",:email=>"[email protected]"}) 
+0

謝謝Prashant。超級有用。接受。讓我知道是否有其他人有問題。 – 2012-10-21 23:27:49

0

我想你應該張貼請求

https://sandbox-api.bancbox.com/BBXPortRest/createClient 

,而不是

https://sandbox-api.bancbox.com/BBXPortRest/ 

還要確保設置內容類型as application/json

一般情況下,您發佈的要求https://sandbox-api.bancbox.com/BBXPortRest/<method>

+0

不能說這是否會解決這個問題,讓我簽出一箇舊的提交併回覆給你。 – 2012-08-15 03:47:57

+0

這沒有解決問題..你能解決這個問題@StephenSprinkle? – bpn 2012-09-18 14:06:39

+0

@bpn,而不是REST。我仍然遇到與Ed使用各種附加方法建議的新URL相同的問題。 Ed Solis,你是否介意在api post調用中發佈你在rails中使用的完整方法?這可能會讓我更深入地瞭解調試電話。 – 2012-09-30 05:27:03