2015-08-03 5 views
1

Я пытаюсь использовать драгоценный камень active_shipping от Shopify для доставки и отслеживания пакетов от нескольких перевозчиков.Active Shipping Fedex создает международную отправку

У меня возникли проблемы с методом create_shipment от перевозчика Fedex. Когда это внутреннее судоходство все работает отлично, но когда страна назначения отличается от страны происхождения, я всегда получаю сообщение об ошибке:

ERROR - 2033: Customs Value is required. или ERROR - 3907: Invalid Customs Value в зависимости от типа услуг.

Я понимаю, что я должен предоставить информацию о содержимом упаковки для таможенной декларации, но я не нашел способа передать ее методу.

Я смотрел ActiveShipping::FedEx, особенно create_shipment и методы build_shipment_request, но не нашел ничего, что касалось содержимого пакета.

Вот как я пытаюсь создать партию:

package = ActiveShipping::Package.new(
    weight, 
    [width, height, depth], 
    { 
     units: :metric, 
     value: value, 
     currency: 'CAD' 
    } 
) 

origin = ActiveShipping::Location.new(
    company: '***', 
    address1: '***', 
    country: 'CA', 
    province: 'QC', 
    city: '***', 
    postal_code: '***', 
    phone: '***', 
    address_type: 'commercial' 
) 

destination = ActiveShipping::Location.new(
    name: shipment.name, 
    company: shipment.company, 
    address1: shipment.line_1, 
    address2: shipment.line_2, 
    country: shipment.country, 
    province: shipment.state, 
    city: shipment.city, 
    postal_code: shipment.zip, 
    phone: shipment.phone 
) 

fedex = ActiveShipping::FedEx.new(
    login: '***', 
    password: '***', 
    key: '***', 
    account: '***', 
    test: true 
) 

options = { 
    service_type: service_code 
} 

response = fedex.create_shipment(origin, destination, package, options) 

я упускаю что-то или это active_shipping камня просто не совместим с международными перевозками с использованием Fedex?

С другими носителями, такими как Canada Post, вы можете передать массив ActiveShipping::PackageItem, но, по-видимому, не с Fedex.

Я использую версию последней гем (1.4.2) на Rails 4.2.3

+0

Я знаю, что это стагнация, но я facin g теперь, случайно ли вы нашли решение? – Datise

+0

К сожалению, я так и не нашел решения для этого. Я собирался продолжить расследование и, возможно, сделать PR на репортаже active_shipping, но мой работодатель в то время решил прекратить использовать Fedex в качестве носителя по другим причинам, поэтому я перестала смотреть. – Johann

+0

@Datise вы нашли решение? Даже я застрял в той же проблеме. –

ответ

0

Нам нужно добавить следующие поля XML только после того, как

элемент "ShippingChargesPayment"

в "build_shipment_request" метод

 xml.CustomsClearanceDetail do 
      xml.DutiesPayment do 
      xml.PaymentType('SENDER') 
      xml.Payor do 
       xml.ResponsibleParty do 
       xml.AccountNumber(6xxxxxx61) 
       xml.Contact do 
        xml.PersonName('Sender Name') 
        xml.EMailAddress('[email protected]') 
       end 
       xml.Address do 
        xml.StreetLines('Steetline 1') 
        xml.StreetLines('Streetline 2') 
        xml.City('Margao') 
        xml.StateOrProvinceCode('GA') 
        xml.PostalCode(403601) 
        xml.CountryCode('IN') 
       end 
       end 
      end 
      end 

      xml.DocumentContent('NON_DOCUMENTS') 

      xml.CustomsValue do 
      xml.Currency('INR') 
      xml.Amount(100) 
      end 

      xml.FreightOnValue('CARRIER_RISK') 

      xml.CommercialInvoice do 
      xml.Comments('Comments from seller.') 
      xml.SpecialInstructions('Special Instructions from seller.') 
      xml.Purpose('SOLD') 
      xml.CustomerReferences do 
       xml.CustomerReferenceType('CUSTOMER_REFERENCE') 
       xml.Value('Bill D/T Sender') 
      end 
      end 

      xml.Commodities do 
      xml.NumberOfPieces(1) 
      xml.Description('Pink Toy') 
      xml.CountryOfManufacture('IN') 
      xml.Weight do 
       xml.Units('KG') 
       xml.Value(2) 
      end 
      xml.Quantity(1) 
      xml.QuantityUnits('EA') 
      xml.UnitPrice do 
       xml.Currency('INR') 
       xml.Amount(100) 
      end 
      xml.CustomsValue do 
       xml.Currency('INR') 
       xml.Amount(100) 
      end 
      end 
     end