rubyfedex

Fedex Ruby Gem: Customs Value is required - how to add?


I'm working with the Ruby gem 'FedEx', https://github.com/jazminschroeder/fedex. I've set up my code for a development mode and I'm testing making a shipment.

However, I get stuck with the following error:

C:/Ruby22/lib/ruby/gems/2.2.0/gems/fedex-.10.1/lib/fedex/request/shipment.rb:134:in 'failure_response': Customs Value is required. (Fedex:: RateError) from C: /Ruby22/lib/ruby/gems/2.2.0/gems/fedex-.10.1/lib/fedex/request/shipment.rb:32:in 'process_request' from C: /Ruby22/lib/ruby/gems/2.2.0/gems/fedex-3.10.1/lib/fedex/shipment.rb:57:in 'ship' from C: /Ruby22/bin/css_fedex_v1.rb:92:in ''

It seems that I need to parse a 'Customs Value', probably as part of my 'packages' hash. However, I'm unable to find the relevant field for me to enter this in. Anyone who's experienced this and found a solution?

My code is as below:

require 'fedex'

fedex = Fedex::Shipment.new(:key => '***',
                        :password => '***',
                        :account_number => '***',
                        :meter => '***',
                        :mode => 'development')

shipper = { :name => "***",
        :company => "***",
        :phone_number => "***",
        :address => "***",
        :city => "***",
        :postal_code => "***",
        :country_code => "DK" }

recipient = { :name => "***",
          :company => "***",
          :phone_number => "***",
          :address => "***",
          :city => "***",
          :postal_code => "***",
          :country_code => "GB",
          :residential => "false" }

packages = []
packages << {:weight => {:units => "LB", :value => 1}}

shipping_options = {:packaging_type => "YOUR_PACKAGING",
:drop_off_type => "REGULAR_PICKUP"}

rate = fedex.rate(:shipper=>shipper,
              :recipient => recipient,
              :packages => packages,
              :shipping_options => shipping_options)

ship = fedex.ship(:shipper=>shipper,
              :recipient => recipient,
              :packages => packages,
              :service_type => "INTERNATIONAL_PRIORITY",
              :shipping_options => shipping_options)
puts ship[:completed_shipment_detail][:operational_detail][:transit_time]

Solution

  • Customs value is declared in their docs: https://github.com/jazminschroeder/fedex/commit/9f1d4c67b829aaa4eeba9090c1a45d3bd507aab3#diff-4f122efb7c0d98120d8b7f0cd00998e4R106

    customs_value = { :currency => "USD",
                       :amount => "200" }  
    

    As I understand you can pass it into the commodities hash or keep it separate.