2013-09-17 2 views
1

Я использую API SOAP API PayPal Express Checkout. У меня есть SetExpressCheckoutRequest, который работает до тех пор, пока я не добавлю элемент CallbackURL. Затем он дает мне следующую ошибку:FlatRateShippingOptions не распознается при указании CallbackURL для Paypal SetExpressCheckout

Ack: Fayure ShortMessage: Отсутствуют варианты точной доставки. LongMessage: Отсутствуют варианты доставки по низкой цене; вы должны указать параметры доставки с фиксированной скоростью при указании URL-адреса обратного вызова. ErrorCode: 11825

My request includes the following elements (child elements of <ebl:PaymentDetails>): 

<ebl:FlatRateShippingOptions> 
    <ebl:ShippingOptionIsDefault>true</ebl:ShippingOptionIsDefault> 
    <ebl:ShippingOptionAmount currencyID=""USD"">4.00</ebl:ShippingOptionAmount> 
    <ebl:ShippingOptionName>Ground</ebl:ShippingOptionName> 
</ebl:FlatRateShippingOptions> 

Различные SDKs для мыла, кажется, не включают в себя все эти элементы. После большого поиска я не смог найти пример рабочего SetExpressCheckoutRequest, который включает этот параметр. Я пробовал много вариантов, но ничего не работает.

Есть ли у кого-нибудь образец запроса API SOAP, который работает с этой опцией?

Спасибо, CJ

Вот полный файл запроса XML. Он работает без линии CallbackURL и секции FlatRateShippingOptions. Я пробовал его с элементом ShippingOptions и без него, поскольку документация кажется непоследовательной в отношении того, требуется ли она.

<?xml version="1.0" encoding="UTF-8"?> 
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="urn:ebay:api:PayPalAPI" xmlns:ebl="urn:ebay:apis:eBLBaseComponents" xmlns:cc="urn:ebay:apis:CoreComponentTypes" xmlns:ed="urn:ebay:apis:EnhancedDataTypes"> 
<soapenv:Header> 
    <ns:RequesterCredentials> 
    <ebl:Credentials> 
     <ebl:Username>sdk-three_api1.sdk.com</ebl:Username> 
     <ebl:Password>QFZCWN5HZM8VBG7Q</ebl:Password> 
     <ebl:Signature>A-IzJhZZjhg29XQ2qnhapuwxIDzyAZQ92FRP5dqBzVesOkzbdUONzmOU</ebl:Signature> 
    </ebl:Credentials> 
    </ns:RequesterCredentials> 
</soapenv:Header> 
<soapenv:Body> 
    <ns:SetExpressCheckoutReq> 
    <ns:SetExpressCheckoutRequest> 
     <ebl:Version>106.0</ebl:Version> 
     <ebl:SetExpressCheckoutRequestDetails> 
     <ebl:MaxAmount currencyID="USD">20.00</ebl:MaxAmount> 
     <ebl:ReturnURL>https://www.domain.com/final.asp</ebl:ReturnURL> 
     <ebl:CancelURL>https://www.domain.com/reviewcart.asp</ebl:CancelURL> 
     <ebl:NoShipping>2</ebl:NoShipping> 
     <ebl:AddressOverride>1</ebl:AddressOverride> 
     <ebl:LocaleCode>US</ebl:LocaleCode> 
     <ebl:SolutionType>Sole</ebl:SolutionType> 
     <ebl:BuyerEmail>[email protected]</ebl:BuyerEmail> 
     <ebl:CallbackURL>https://www.domain.com/paypalcallback.asp</ebl:CallbackURL> 
     <ebl:PaymentDetails> 
      <ebl:FlatRateShippingOptions> 
      <ebl:ShippingOptions> 
       <ebl:ShippingOptionIsDefault>true</ebl:ShippingOptionIsDefault> 
       <ebl:ShippingOptionAmount currencyID="USD">4.00</ebl:ShippingOptionAmount> 
       <ebl:ShippingOptionName>Ground</ebl:ShippingOptionName> 
      </ebl:ShippingOptions> 
      <ebl:ShippingOptions> 
       <ebl:ShippingOptionIsDefault>false</ebl:ShippingOptionIsDefault> 
       <ebl:ShippingOptionAmount currencyID="USD">20.00</ebl:ShippingOptionAmount> 
       <ebl:ShippingOptionName>NextDayAir</ebl:ShippingOptionName> 
      </ebl:ShippingOptions> 
      </ebl:FlatRateShippingOptions> 
      <ebl:OrderTotal currencyID="USD">20.00</ebl:OrderTotal> 
      <ebl:ItemTotal currencyID="USD">16.00</ebl:ItemTotal> 
      <ebl:ShippingTotal currencyID="USD">4.00</ebl:ShippingTotal> 
      <ebl:HandlingTotal currencyID="USD">0.00</ebl:HandlingTotal> 
      <ebl:TaxTotal currencyID="USD">0.00</ebl:TaxTotal> 
      <ebl:OrderDescription>Cart ID 123456</ebl:OrderDescription> 
      <ebl:ShipToAddress> 
      <ebl:Name>John Doe</ebl:Name> 
      <ebl:Street1>123 Main St</ebl:Street1> 
      <ebl:Street2>Apt 2</ebl:Street2> 
      <ebl:CityName>Chicago</ebl:CityName> 
      <ebl:StateOrProvince>IL</ebl:StateOrProvince> 
      <ebl:Country>US</ebl:Country> 
      <ebl:Phone>312-555-1234</ebl:Phone> 
      <ebl:PostalCode>60610</ebl:PostalCode> 
      </ebl:ShipToAddress> 
      <ebl:PaymentDetailsItem> 
      <ebl:Name>3001</ebl:Name> 
      <ebl:Quantity>2</ebl:Quantity> 
      <ebl:Tax currencyID="USD">0.00</ebl:Tax> 
      <ebl:Amount currencyID="USD">6.00</ebl:Amount> 
      <ebl:Description>test order</ebl:Description> 
      <ebl:ItemCategory>Physical</ebl:ItemCategory> 
      </ebl:PaymentDetailsItem> 
      <ebl:PaymentDetailsItem> 
      <ebl:Name>3002</ebl:Name> 
      <ebl:Quantity>4</ebl:Quantity> 
      <ebl:Tax currencyID="USD">0.00</ebl:Tax> 
      <ebl:Amount currencyID="USD">1.00</ebl:Amount> 
      <ebl:Description>test order</ebl:Description> 
      <ebl:ItemCategory>Physical</ebl:ItemCategory> 
      </ebl:PaymentDetailsItem> 
      <ebl:PaymentAction>Sale</ebl:PaymentAction> 
     </ebl:PaymentDetails> 
     <ebl:ChannelType>Merchant</ebl:ChannelType> 
     <ebl:CustomerServiceNumber>3125559876</ebl:CustomerServiceNumber> 
     <ebl:BuyerEmailOptinEnable>1</ebl:BuyerEmailOptinEnable> 
     <ebl:TotalType>EstimatedTotal</ebl:TotalType> 
     <ebl:NoteToBuyer>Sample note to buyer.</ebl:NoteToBuyer> 
     <ebl:PaymentReason>None</ebl:PaymentReason> 
     <ebl:BuyerEmailOptinEnable xmlns="">1</ebl:BuyerEmailOptinEnable> 
     </ebl:SetExpressCheckoutRequestDetails> 
    </ns:SetExpressCheckoutRequest> 
    </ns:SetExpressCheckoutReq> 
</soapenv:Body> 
</soapenv:Envelope> 

Я, наконец, получил его на работу. Мне пришлось переместить раздел FlatRateShippingOptions ниже раздела PaymentDetails. Ниже приведен полный рабочий запрос XML:

<?xml version="1.0" encoding="UTF-8"?> 
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="urn:ebay:api:PayPalAPI" xmlns:ebl="urn:ebay:apis:eBLBaseComponents" xmlns:cc="urn:ebay:apis:CoreComponentTypes" xmlns:ed="urn:ebay:apis:EnhancedDataTypes"> 
<soapenv:Header> 
    <ns:RequesterCredentials> 
    <ebl:Credentials> 
     <ebl:Username>sdk-three_api1.sdk.com</ebl:Username> 
     <ebl:Password>QFZCWN5HZM8VBG7Q</ebl:Password> 
     <ebl:Signature>A-IzJhZZjhg29XQ2qnhapuwxIDzyAZQ92FRP5dqBzVesOkzbdUONzmOU</ebl:Signature> 
    </ebl:Credentials> 
    </ns:RequesterCredentials> 
</soapenv:Header> 
<soapenv:Body> 
    <ns:SetExpressCheckoutReq> 
    <ns:SetExpressCheckoutRequest> 
     <ebl:Version>106.0</ebl:Version> 
     <ebl:SetExpressCheckoutRequestDetails> 
     <ebl:MaxAmount currencyID="USD">20.00</ebl:MaxAmount> 
     <ebl:ReturnURL>https://www.domain.com/final.asp</ebl:ReturnURL> 
     <ebl:CancelURL>https://www.domain.com/reviewcart.asp</ebl:CancelURL> 
     <ebl:NoShipping>2</ebl:NoShipping> 
     <ebl:AddressOverride>1</ebl:AddressOverride> 
     <ebl:LocaleCode>US</ebl:LocaleCode> 
     <ebl:SolutionType>Sole</ebl:SolutionType> 
     <ebl:BuyerEmail>[email protected]</ebl:BuyerEmail> 
     <ebl:CallbackURL>https://www.domain.com/paypalcallback.asp</ebl:CallbackURL> 
     <ebl:PaymentDetails> 
      <ebl:OrderTotal currencyID="USD">20.00</ebl:OrderTotal> 
      <ebl:ItemTotal currencyID="USD">16.00</ebl:ItemTotal> 
      <ebl:ShippingTotal currencyID="USD">4.00</ebl:ShippingTotal> 
      <ebl:HandlingTotal currencyID="USD">0.00</ebl:HandlingTotal> 
      <ebl:TaxTotal currencyID="USD">0.00</ebl:TaxTotal> 
      <ebl:OrderDescription>Cart ID 123456</ebl:OrderDescription> 
      <ebl:ShipToAddress> 
      <ebl:Name>John Doe</ebl:Name> 
      <ebl:Street1>123 Main St</ebl:Street1> 
      <ebl:Street2>Apt 2</ebl:Street2> 
      <ebl:CityName>Chicago</ebl:CityName> 
      <ebl:StateOrProvince>IL</ebl:StateOrProvince> 
      <ebl:Country>US</ebl:Country> 
      <ebl:Phone>312-555-1234</ebl:Phone> 
      <ebl:PostalCode>60610</ebl:PostalCode> 
      </ebl:ShipToAddress> 
      <ebl:PaymentDetailsItem> 
      <ebl:Name>3001</ebl:Name> 
      <ebl:Quantity>2</ebl:Quantity> 
      <ebl:Tax currencyID="USD">0.00</ebl:Tax> 
      <ebl:Amount currencyID="USD">6.00</ebl:Amount> 
      <ebl:Description>test order</ebl:Description> 
      <ebl:ItemCategory>Physical</ebl:ItemCategory> 
      </ebl:PaymentDetailsItem> 
      <ebl:PaymentDetailsItem> 
      <ebl:Name>3002</ebl:Name> 
      <ebl:Quantity>4</ebl:Quantity> 
      <ebl:Tax currencyID="USD">0.00</ebl:Tax> 
      <ebl:Amount currencyID="USD">1.00</ebl:Amount> 
      <ebl:Description>test order</ebl:Description> 
      <ebl:ItemCategory>Physical</ebl:ItemCategory> 
      </ebl:PaymentDetailsItem> 
      <ebl:PaymentAction>Sale</ebl:PaymentAction> 
     </ebl:PaymentDetails> 
     <ebl:FlatRateShippingOptions> 
      <ebl:ShippingOptionIsDefault>true</ebl:ShippingOptionIsDefault> 
      <ebl:ShippingOptionAmount currencyID="USD">4.00</ebl:ShippingOptionAmount> 
      <ebl:ShippingOptionName>Ground</ebl:ShippingOptionName> 
     </ebl:FlatRateShippingOptions> 
     <ebl:FlatRateShippingOptions> 
      <ebl:ShippingOptionIsDefault>false</ebl:ShippingOptionIsDefault> 
      <ebl:ShippingOptionAmount currencyID="USD">20.00</ebl:ShippingOptionAmount> 
      <ebl:ShippingOptionName>NextDayAir</ebl:ShippingOptionName> 
     </ebl:FlatRateShippingOptions> 
     <ebl:CallbackTimeout>6</ebl:CallbackTimeout> 
     <ebl:ChannelType>Merchant</ebl:ChannelType> 
     <ebl:CustomerServiceNumber>3125559876</ebl:CustomerServiceNumber> 
     <ebl:BuyerEmailOptinEnable>1</ebl:BuyerEmailOptinEnable> 
     <ebl:TotalType>EstimatedTotal</ebl:TotalType> 
     <ebl:NoteToBuyer>Sample note to buyer.</ebl:NoteToBuyer> 
     <ebl:PaymentReason>None</ebl:PaymentReason> 
     <ebl:BuyerEmailOptinEnable xmlns="">1</ebl:BuyerEmailOptinEnable> 
     </ebl:SetExpressCheckoutRequestDetails> 
    </ns:SetExpressCheckoutRequest> 
</ns:SetExpressCheckoutReq> 
</soapenv:Body> 
</soapenv:Envelope> 

Спасибо за помощь в разрешении этого вопроса!

ответ

1

Вот working sample SetExpressCheckout с включенным обратным вызовом, но вместо него используется NVP вместо SOAP.

Если вы хотите опубликовать образец всего XML-запроса, я увижу, могу ли я воспроизвести проблему и выяснить проблему.

Я думаю, ваша проблема в том, что у вас есть FlatRateShippingOptions как дочерний элемент в PaymentDetails. Рассматривая документацию PayPal SOAP для SEC, похоже, что FlatRateShippingOptions должен быть выше этого уровня на том же уровне, что и CallbackURL.

Попробуйте переместить его из PaymentDetails и посмотрите, поможет ли это.

+0

Благодарим за отзыв. К сожалению, NVP имеет ограничения, которые делают его менее полезным, чем SOAP для наших приложений. Вот пример всего запроса. –

+0

Я обновил свой ответ, чтобы попробовать. –

+0

Когда я перемещаю раздел FlatRateShippingOptions, как вы предлагаете, я получаю следующую ошибку (несмотря на то, что не менял элемент OrderTotal): ShortMessage: транзакция отказалась из-за недопустимого аргумента. Дополнительные сведения см. В дополнительных сообщениях об ошибках. LongMessage: Сумма заказа отсутствует. ErrorCode: 10400 Я пробовал его с элементом ShippingOptions и без него. –

Смежные вопросы