C# shippo api未返回活动运营商的所有费率

C# shippo api未返回活动运营商的所有费率,c#,shippo,C#,Shippo,嗨,我在玩shippo api。我有5个默认载波都处于活动和测试模式。问题是,当我创建一个发货并检查所有费率时,我只是得到USPS费率,我更喜欢所有承运人的费率并比较成本。有什么想法吗?问候 好的,这是为那些要求它的人准备的代码 using System; using Shippo; using System.Collections; using Newtonsoft.Json.Linq; using System.Linq; namespace ShippoApiTest { class

嗨,我在玩shippo api。我有5个默认载波都处于活动和测试模式。问题是,当我创建一个发货并检查所有费率时,我只是得到USPS费率,我更喜欢所有承运人的费率并比较成本。有什么想法吗?问候

好的,这是为那些要求它的人准备的代码

using System;
using Shippo;
using System.Collections;
using Newtonsoft.Json.Linq;
using System.Linq;


namespace ShippoApiTest
{
class Program
{
    static void Main(string[] args)
    {
        string shippoPrivateAuthToken = "xxxxxxxxxxxxxxxxxxxxxxxxxx";

        try
        {
            APIResource resource = new APIResource(shippoPrivateAuthToken);

            Hashtable carriers = new Hashtable();
            carriers.Add("results", "20");
            var carriersAccounts = resource.AllCarrierAccount(carriers);

            foreach (var item in carriersAccounts.Data)
                Console.WriteLine(item.Carrier + " ----> " + item.AccountId + " -----> " + item.Active);

            // to address 
            Hashtable toAddressTable = new Hashtable();
            toAddressTable.Add("object_purpose", "PURCHASE");
            toAddressTable.Add("name", "Mr. Hippo");
            toAddressTable.Add("company", "Shippo");
            toAddressTable.Add("street1", "955 Benecia Avenue");
            toAddressTable.Add("city", "Sunnyvale");
            toAddressTable.Add("state", "CA");
            toAddressTable.Add("zip", "94085");
            toAddressTable.Add("country", "US");
            toAddressTable.Add("phone", "555 341 9393");
            toAddressTable.Add("email", "support@goshipppo.com");

            // from address 
            Hashtable fromAddressTable = new Hashtable();
            fromAddressTable.Add("object_purpose", "PURCHASE");
            fromAddressTable.Add("name", "Ms Hippo");
            fromAddressTable.Add("company", "San Diego Zoo");
            fromAddressTable.Add("street1", "503 Pine Street");
            fromAddressTable.Add("city", "San Diego");
            fromAddressTable.Add("state", "GA");
            fromAddressTable.Add("zip", "31312");
            fromAddressTable.Add("country", "US");
            fromAddressTable.Add("email", "hippo@goshipppo.com");
            fromAddressTable.Add("phone", "619 231 1515");
            fromAddressTable.Add("metadata", "Customer ID 123456");


            // parcel 
            Hashtable parcelTable = new Hashtable();
            parcelTable.Add("length", "5");
            parcelTable.Add("width", "5");
            parcelTable.Add("height", "5");
            parcelTable.Add("distance_unit", "in");
            parcelTable.Add("weight", "2");
            parcelTable.Add("mass_unit", "lb");

            // shipment 
            Hashtable shipmentTable = new Hashtable();
            shipmentTable.Add("address_to", toAddressTable);
            shipmentTable.Add("address_from", fromAddressTable);
            shipmentTable.Add("parcel", parcelTable);
            shipmentTable.Add("object_purpose", "PURCHASE");
            shipmentTable.Add("async", false);

            var allCarriersAccounts = carriersAccounts.Data.Select(c => c.ObjectId).ToArray();

            shipmentTable.Add("carrier_accounts", allCarriersAccounts);

            // create Shipment object 
            Console.WriteLine("Creating Shipment object..");
            Shipment shipment = resource.CreateShipment(shipmentTable);

            // select desired shipping rate according to your business logic 
            // we simply select the first rate in this example              
            //Rate rate = shipment.RatesList[0];
            //var rates = resource.AllRates(shipmentTable);

            foreach (var rate in shipment.RatesList)
            {
                Console.WriteLine((string)rate.Amount);
                Console.WriteLine((string)rate.AmountLocal);
                Console.WriteLine((string)rate.Currency);
                Console.WriteLine((string)rate.CurrencyLocal);
                Console.WriteLine((string)rate.Provider);
                Console.WriteLine((bool)rate.Trackable);
                Console.WriteLine((long)rate.Days);
                Console.WriteLine((string)rate.DurationTerms);
                Console.WriteLine((bool)rate.Insurance);

                Console.WriteLine((bool)rate.Insurance);
                Console.WriteLine((string)rate.ServicelevelName);
                Console.WriteLine((string)rate.ServicelevelTerms);

                Console.WriteLine("Attributes: ");
                foreach (var attr in new JArray(rate.Attributes))
                    foreach (var token in attr.Children())
                        Console.Write(token);

                Console.WriteLine("\n\n\n");
            }

            var currentRate = shipment.RatesList[0];

            Console.WriteLine("Getting shipping label..");
            Hashtable transactionParameters = new Hashtable();
            transactionParameters.Add("rate", currentRate.ObjectId);
            transactionParameters.Add("async", false);
            Transaction transaction = resource.CreateTransaction(transactionParameters);

            if (((String)transaction.ObjectStatus).Equals("SUCCESS", StringComparison.OrdinalIgnoreCase))
            {
                Console.WriteLine("Label url : " + transaction.LabelURL);
                Console.WriteLine("Tracking number : " + transaction.TrackingNumber);
            }
            else
            {
                Console.WriteLine("An Error has occured while generating your label. Messages : " + transaction.Messages);
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
            Console.ReadLine();
        }

        Console.ReadLine();
    }
}
}

您没有看到其他费率的原因可能不同。首先想到的是:

  • 在装运API调用(
    shipmentTable.Add(“carrier\u accounts”,allCarriersAccounts);
    )中,您将明确列出所有承运人帐户。鉴于您希望看到所有承运人的费率,这是不必要的,因为如果您不发送
    carrier\u accounts
    属性,Shippo将自动使用我们的所有账户。因此,我建议删除该行以消除与该行相关的任何潜在错误
  • 我不知道您在Shippo上激活了哪些其他运营商,但这些其他运营商不支持美国国内发货。例如,DHL Express仅支持国际货运,加拿大邮政仅支持来自加拿大的货运等

  • 希望有帮助!如果您有更多问题,欢迎提供进一步帮助。

    请提供完整的问题,包括您迄今为止尝试过的代码。我们今天都把水晶球忘在家里了。。代码在哪里?我个人将Endicia API用于我们的运价,至少对于Endicia,您必须通过向Endicia和Endicia提出的请求获得其他承运人的许可,并获得上述承运人的批准,因为运价有时会根据每个客户进行个性化。请删除downvotewell,我尝试列出所有承运人,但没有,必须是第二点,我会检查并让你知道谢谢。PD:我只有默认的运营商(我创建帐户时你们给我的),我添加了一个UPS运营商帐户,它可以工作!!,但现在生成一个标签时,我发现了一个地址验证错误,奇怪…太棒了,很高兴它能工作。其他默认的Shippo运营商不服务于美国国内(Uber Rush除外,但它仅适用于旧金山和纽约市境内的货运)。如果您需要有关验证的帮助,请告诉我。