Это метод почтовой корзины, который я использую:
public CheckoutRedirect submit(CreateOrderRequest sku) {
CartPoster cartPoster = context.cartPoster();
CartPoster.CheckoutShoppingCartBuilder cartBuilder = cartPoster.makeCart();
Money unitPrice = new Money();
unitPrice.setCurrency(sku.getCurrency());
unitPrice.setValue(new BigDecimal(sku.getPrice()));
String platformId = sku.getPlatformId().toString();
AnyMultiple merchantPrivateData = new AnyMultiple();
merchantPrivateData.getContent().add(platformId);
MerchantCheckoutFlowSupport merchantCheckoutFlowSupport = new MerchantCheckoutFlowSupport();
merchantCheckoutFlowSupport.setContinueShoppingUrl(sku.getContinueShoppingUrl());
CheckoutShoppingCart.CheckoutFlowSupport checkoutFlowSupport = new CheckoutShoppingCart.CheckoutFlowSupport();
checkoutFlowSupport.setMerchantCheckoutFlowSupport(merchantCheckoutFlowSupport);
DigitalContent digitalcontent = new DigitalContent();
digitalcontent.setDisplayDisposition(sku.getDisplayDisposition());
digitalcontent.setDescription(sku.getDigitalContentDescription());
Item item = new Item();
item.setItemDescription(sku.getDescription());
item.setItemName(sku.getName());
item.setMerchantItemId(sku.getSkuId());
item.setUnitPrice(unitPrice);
item.setDigitalContent(digitalcontent);
item.setQuantity(sku.getQuantity());
cartBuilder.addItem(item);
CheckoutShoppingCart checkoutShoppingCart = cartBuilder.build();
checkoutShoppingCart.setCheckoutFlowSupport(checkoutFlowSupport);
checkoutShoppingCart.getShoppingCart().setMerchantPrivateData(merchantPrivateData);
return cartPoster.postCart(checkoutShoppingCart);
}
Это прекрасно работает и выдаст xml следующим образом:
<checkout-shopping-cart xmlns="http://checkout.google.com/schema/2">
<shopping-cart>
<merchant-private-data>1000</merchant-private-data>
<items>
<item>
<digital-content>
<description>Description Goes Here</description>
<display-disposition>OPTIMISTIC</display-disposition>
</digital-content>
<item-name>Product Name</item-name>
<item-description>Product Description Goes Here</item-description>
<unit-price currency="USD">4.95</unit-price>
<quantity>1</quantity>
<merchant-item-id>87</merchant-item-id>
</item>
</items>
</shopping-cart>
<checkout-flow-support>
<merchant-checkout-flow-support>
<continue-shopping-url>http://www.example.com/success</continue-shopping-url>
</merchant-checkout-flow-support>
</checkout-flow-support>
</checkout-shopping-cart>
Вы заметите <merchant-private-data>1000</merchant-private-data>
Еслипосмотрите на ссылку тега XML API для этого элемента: http://code.google.com/apis/checkout/developer/Google_Checkout_XML_API_Tag_Reference.html#tag_merchant-private-data
В нем говорится, что это контейнер для любой правильно сформированной последовательности XML, и показан пример с элементом внутри этого:
<merchant-private-data>
<merchant-note>my order number 76543</merchant-note>
</merchant-private-data>
При добавлении элемента List в AnyMultiple указывается, что он будет принимать строку (как в показанном мной случае) или элемент.Моя проблема в том, что я не могу на всю жизнь добавить элемент в этот список, не встречая ошибок маршалинга.
Я хочу создать:
<merchant-private-data>
<platform-id>1000</platform-id>
</merchant-private-data>
Кроме того, я довольно новичок в написании кода Java.Кому-нибудь удалось сделать это с помощью этого API?
Заранее спасибо.