0

我花了最后一天试图让它在我的 Rails 应用程序中工作,但不断得到响应:

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

BancBox 的文档很简单,所以我在如何解决这个问题上陷入了僵局。

有没有人有一个使用 REST 在 BancBox 上成功调用 createClient 的 API 示例?

我使用 HTTParty 的 Post API 调用:

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
4

2 回答 2

2

请在更改 apikey、secret 和subscribedid 后尝试以下代码


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=>"bipen@lokalty.com"})
于 2012-10-10T21:20:59.117 回答
0

我认为您应该将请求发布到

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

代替

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

还要确保将内容类型设置为 application/json

通常,您将请求发布到https://sandbox-api.bancbox.com/BBXPortRest/<method >

于 2012-08-14T02:26:33.110 回答