안녕하세요 저는 shippo API를 가지고 놀고 있습니다. 5 개의 기본 통신사가 모두 활성 상태이고 테스트 모드입니다. 것은 나가 선적을 창조하고 모든 비율을 검사 할 때, 다만 USPS 비율을 얻고 나는 모든 운송업자에게서 비율을 선호하고 비용을 비교할 때이다. 어떤 아이디어? 감사합니다활성 캐리어에서 모든 요금을 반환하지 않는 shippo api
OK는
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", "[email protected]");
// 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", "[email protected]");
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();
}
}
}
지금까지 시도한 코드를 포함하여 완전한 질문을 제공해주십시오. – saarrrr
와 우리 모두는 오늘 집에서 우리 수정 구슬을 잊었다. .. 코드는 어디에있다. ..? – MethodMan
저는 개인적으로 우리의 운송료에 Endicia API를 사용하고 적어도 Endicia와 함께 엔디 시아에 대한 요청으로 다른 운송 업체에 대한 액세스 권한을 부여 받아야하며 때로는 고객별로 개인화되는 요금 때문에 해당 운송 업체의 승인을 받아야합니다. –