Google Checkout Java API маршалинг элемента, а не строки при добавлении AnyMultiple с помощью setMerchantPrivateData () - PullRequest
0 голосов
/ 24 февраля 2012

Это метод почтовой корзины, который я использую:

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?

Заранее спасибо.

1 Ответ

0 голосов
/ 09 марта 2012

Am не Java-разработчик (am .Net), так что прости мое невежество ~

Вам придется программно создать элемент XML и его значение / внутренний текст и вставить / добавить его.

Это не будет частью API Google Checkout, это будет структура XML, которая обрабатывает (де) сериализацию, которую вы уже используете - например, в .Net Framework это будет System.XML

Я знаю, что это не так полезно, как может быть, поэтому я надеюсь, что это, по крайней мере, даст вам возможность посмотреть / начать.

...