我是eBay API的新手,我正在尝试进行AddItem调用。但是,我一直收到Domestic shipping is required if AutoPay is specified
错误。我从SDK示例代码中逐行复制了代码,它编译并运行得很好,所以我觉得eBay最终可能会有某种变化。
以下是我的一些代码:
static ItemType BuildItem()
{
ItemType item = new ItemType();
item.AutoPaySpecified = false;
item.Title = "Test Item";
item.Description = "eBay SDK sample test item";
item.ListingType = ListingTypeCodeType.Chinese;
item.Currency = CurrencyCodeType.USD;
item.StartPrice = new AmountType();
item.StartPrice.Value = 20;
item.StartPrice.currencyID = CurrencyCodeType.USD;
item.ListingDuration = "Days_3";
item.Location = "San Jose";
item.Country = CountryCodeType.US;
CategoryType category = new CategoryType();
category.CategoryID = "11104";
item.PrimaryCategory = category;
item.Quantity = 1;
item.ConditionID = 1000;
item.ItemSpecifics = buildItemSpecifics();
item.PaymentMethods = new BuyerPaymentMethodCodeTypeCollection();
item.PaymentMethods.AddRange(
new BuyerPaymentMethodCodeType[] { BuyerPaymentMethodCodeType.PayPal }
);
item.PayPalEmailAddress = "me@ebay.com";
item.DispatchTimeMax = 1;
item.ShippingDetails = BuildShippingDetails();
item.ReturnPolicy = new ReturnPolicyType();
item.ReturnPolicy.ReturnsAcceptedOption = "ReturnsAccepted";
AmountType amount = new AmountType();
amount.Value = 2.8;
amount.currencyID = CurrencyCodeType.USD;
item.StartPrice = amount;
return item;
}
static NameValueListTypeCollection buildItemSpecifics()
{
NameValueListTypeCollection nvCollection = new NameValueListTypeCollection();
NameValueListType nv1 = new NameValueListType();
nv1.Name = "Platform";
StringCollection nv1Col = new StringCollection();
String[] strArr1 = new string[] { "Microsoft Xbox 360" };
nv1Col.AddRange(strArr1);
nv1.Value = nv1Col;
NameValueListType nv2 = new NameValueListType();
nv2.Name = "Genre";
StringCollection nv2Col = new StringCollection();
String[] strArr2 = new string[] { "Simulation" };
nv2Col.AddRange(strArr2);
nv2.Value = nv2Col;
nvCollection.Add(nv1);
nvCollection.Add(nv2);
return nvCollection;
}
static ShippingDetailsType BuildShippingDetails()
{
ShippingDetailsType sd = new ShippingDetailsType();
sd.ApplyShippingDiscount = true;
AmountType amount = new AmountType();
amount.Value = 2.8;
amount.currencyID = CurrencyCodeType.USD;
sd.PaymentInstructions = "eBay .Net SDK test instructions";
// shipping type and shipping service options
sd.ShippingType = ShippingTypeCodeType.Flat;
ShippingServiceOptionsType shippingOptions = new ShippingServiceOptionsType();
shippingOptions.ShippingService = ShippingServiceCodeType.ShippingMethodStandard.ToString();
amount = new AmountType();
amount.Value = 1;
amount.currencyID = CurrencyCodeType.USD;
shippingOptions.ShippingServiceAdditionalCost = amount;
shippingOptions.ShippingServicePriority = 1;
amount = new AmountType();
amount.Value = 1.0;
amount.currencyID = CurrencyCodeType.USD;
shippingOptions.ShippingInsuranceCost = amount;
sd.ShippingServiceOptions = new ShippingServiceOptionsTypeCollection(
new ShippingServiceOptionsType[] { shippingOptions }
);
return sd;
}
我试图设置item.AutoPay = false;
和item.AutoPaySpecified = false;
- 这些似乎都没有做任何事情。我在文档中搜索了有关国内航运的任何内容,但我找不到任何东西。
有谁知道为什么会这样?
答案 0 :(得分:1)
您的shippingOptions字段缺少ShippingServiceCost,请尝试更改行:
shippingOptions.ShippingServiceAdditionalCost = amount;
到
shippingOptions.ShippingServiceCost = amount;
或向ShippingServiceCost添加作业。
“如果指定了AutoPay,则需要国内运输”似乎意味着运输选项中缺少某些有条件的(即,取决于运输类型)字段。当我尝试为计算的运输添加所有必要的字段时,我遇到了同样的错误 - 没有所有字段,eBay将其解释为缺少ShippingServiceCost字段的统一运费。