XML API Developer's Guide: stronger, faster, easier!



Based on feedback from a ton of developers, we've just completed a major overhaul of the Google Checkout Developer's Guide. The new guide is designed to give you an overview of how Google Checkout works and what features it offers. The overview then links to additional documents that let you drill down into the inner workings of specific features. So whether you're selling digital goods, calculating your own shipping costs, or defining obscure tax rules, the new Checkout guide has a little something for everybody.

Stay tuned for updates to the HTML API Developer's Guide.

Permalink | Links to this post | 0 comments

Carrier-calculated shipping is here


One of the most requested features of Google Checkout is to provide buyers with shipping rates for the major shipping carriers. So we're pleased to announce support for carrier-based shipping calculations for FedEx, UPS and the US Postal Service. Since we do the shipping calculations, you can also use this feature instead of having to set up a handler for Merchant-calculated shipping.

To use carrier-calculated shipping in a shopping cart post, simply include a list of the carriers and delivery services you offer. Here's what the XML would look like if you wanted to offer Priority Overnight shipping with FedEx:

      <shipping-methods>
<carrier-calculated-shipping>
<carrier-calculated-shipping-options>
<carrier-calculated-shipping-option>
<shipping-company>FedEx</shipping-company>
<carrier-pickup>Regular_pickup</carrier-pickup>
<shipping-type>Priority Overnight</shipping-type>
</carrier-calculated-shipping-option>
...

</carrier-calculated-shipping-options>
</carrier-calculated-shipping>
</shipping-methods>

You will also need to specify the weight of the items in the shopping cart.
It's important to note that this feature is currently available for U.S. merchants and buyers only. There are many more options as well, including the ability to apply simple business rules to the shipping rate returned. For example, you can ask for the rate for FedEx Priority Overnight, add 5% to cover handling, and present that result to the buyer. Or, you can offer a $10 discount on shipping for a particular shipping method. You can find more information in
the Google Checkout Developer's Guide.


Permalink | Links to this post | 0 comments

New Buy Now buttons. Now with editable content(edible too).



Did you ever want to modify a Buy Now button, or include tax and shipping fees? Now you can! Buy Now buttons are now generated using the HTML API. What this means is that you can edit the values without creating a new Buy Now button.

For example a new Buy Now button for Peanut Butter will now look like:


<form action= "https://checkout.google.com/cws/v2/Merchant/
12345678/checkoutForm" id="BB_BuyButtonForm" method="post"
name="BB_BuyButtonForm">
<input name="item_name_1" type="hidden" value="Peanut Butter"/>
<input name="item_description_1" type="hidden"
    value="Delicious Peanut Butter"/>
<input name="item_quantity_1" type="hidden" value="1"/>
<input name="item_price_1" type="hidden" value="15.0"/>
<input name="item_currency_1" type="hidden" value="USD"/>
<input name="_charset_" type="hidden" value="utf-8"/>
<input alt="" src=" https://checkout.google.com/buttons/buy.gif
    ?merchant_id=12345678&w=117&h=48&style=white&
    variant=text&loc=en_US" type="image"/>
</form>

When a user clicks on the Buy Now button generated by this code, they will purchase 1 Peanut Butter for $15. If you wanted to change the price to $5, you can change the item_price_1 line to:
    <input name="item_price_1" type="hidden" value="5.0"/>

If you wanted the user to buy 10 items instead of one, you would change the item_quantity_1 line to:
    <input name="item_quantity_1" type="hidden" value="10"/>

To find out more information about the HTML API and how you can edit the values, please view the HTML API documetation or HTML API tutorial.


For more HTML API features checkout these tutorials.

Creating a Buy Now button with customer input values


Using XML in the HTML API


Specifying international shipping and taxes

Permalink | Links to this post | 0 comments

Google Checkout API Java SDK released



"Plan to throw one away; you will anyway", Fred Brooks, The Mythical Man-Month

In May, we released Java sample code for the Google Checkout API that simplified integration and had no dependency on JDK version. Today we're releasing the final update of that sample code, including bug fixes and new API features--you can download it here.

In addition to the final update for the Java sample code, we're simultaneously releasing the new Google Checkout API Java SDK. The SDK is a replacement for the sample code and will be the focus of our future development. We're doing this because while extending the sample code was simple, it required modifying the sample servlet in order to specify your own handlers. This made including the sample code in your application, as well as upgrading to a new version, not at all straightforward.

The SDK solves these issues: it provides a binary dependency that includes parsers, generators, servlets and default demo handlers, as well as a sample web.xml, and a new configuration file, checkout-config.xml, to specify your handlers for callbacks and notifications declaratively. With the SDK, enabling Google Checkout in your application is just a matter of dropping a jar in WEB-INF/lib, pasting a few lines in your web.xml, and copying checkout-config.xml to WEB-INF--as described in the documentation.

The previous sample web application, and new ones, will live in the samples directory of the new open source project.
Developers who are using the sample code are advised to migrate their application to the SDK, since all future development will be focused on the SDK: it should amount to a small straightforward refactoring that is described in the documentation.

As with the sample code, the SDK is a Community-supported open source project. We intend to release a minor update with bug-fixes every two months or so. If you need a bug-fix urgently and can not wait for the update release, you have two options:
  1. Modify the source-code available under the project/ directory of your SDK bundle and build a new library for your use. The project/ directory is setup to be an Eclipse as well as a NetBeans project.
  2. Download the source-code from the subversion repository and build a release yourself. Here are the instructions on how to download and build the project from Eclipse.

You are welcome to log any bugs or suggested bug-fixes under the Issues page.

We hope that this SDK will help you implement Google Checkout even more easily in your applications, and will ease the maintenance of your application as we add new features to the API and the SDK. As alway, please let us know what you think in the comments.

Permalink | Links to this post | 0 comments

Interview: Renaud Visage from Eventbrite about monetizing a Facebook application with Google Checkout




In today's interview, Renaud Visage, CTO of Eventbrite, an online events registration application, explains how he uses the Google Checkout API in Eventbrite, and describes Events Plus, their cool new Facebook application, that is just like Facebook Events but lets you collect money online for your events.

Eventbrite is written in Python, and Renaud does not yet use Evgeniy Tarassov's excellent Google Checkout Python library, but plans to start using it soon. They use the Checkout HTML API, and since the Facebook Markup Language allows for regular form tags, integrating Google Checkout in their Facebook application required no work at all (just make sure that you use absolute urls).

Try out the regular Eventbrite application:


Or their Facebook application:


Here is a screenshot of Events Plus:

Permalink | Links to this post | 0 comments

The Google Checkout Cookbook Wiki



In addition to our open-source sample code, we're also interested in collaborating with you on Checkout-specific articles, so we recently put all of our Checkout tutorials on a wiki. If you've ever had an experience that might fit in nicely with one of the current cookbook articles, please share it with the rest of the community so that other developers may leverage your experiences in their own integration. We're excited to see any clever ideas, helpful tips, and best practices that you've implemented: please feel free to share. Also, if you want to discuss your ideas further please visit our new subgroup, Articles & Tutorials.

Permalink | Links to this post | 0 comments

Address Filters, more than meets the eye



Do you know about the address-filters tag? If you're using Merchant Calcualtions you must use address-filters to specify restricted and allowed shipping areas. For example, if you set your address-filters to indicate that you only ship to the lower 48 states, and a buyer selects an address in Hawaii, the buyer will see a message indicating the seller does not ship to the location. The address-filters are evaluated before Google Checkout sends the merchant-calculation-callback request to your system- so it can save you server cycles or 3rd party shipping API calls.

You can continue to use the shipping-restrictions tag. But Google Checkout will only look at shipping-restrictions if the merchant-calculation-callback fails for any reason. Here's an XML snippet for a shipping method that ships to all 50 US States under normal circumstances. If the callback fails, however, this method will only ship to the lower 48 states for a price of $8.00


<merchant-calculated-shipping name="Ground Shipping">
  <price currency="USD">8.00</price>
  <address-filters>
    <allowed-areas>
      <us-country-area area="FULL_50_STATES"/>
    </allowed-areas>
  </address-filters>
  <shipping-restrictions>
    <allowed-areas>
      <us-country-area area="CONTINENTAL_48"/>
    </allowed-areas>
  </shipping-restrictions>
</merchant-calculated-shipping>


If you only use shipping-restrictions and Google Checkout receives your merchant-calculations-results, then the shipping-restrictions won't eve be evaluated. If you rely on Google Checkout to decide whether or not you ship to a given address, it is important that you use address-filters.

Click here for a more in depth explanation of use cases for shipping-restrictions and address-filters

Permalink | Links to this post | 0 comments

Accepting 50 additional SSL root CAs



If you want to implement the Notification API or if you want to perform Merchant Calculations for tax and shipping, Google Checkout requires a valid SSL certificate installed on your server. Until now, we've been accepting SSL certificates issued by a limited number of SSL Certificate Authorities (CA). However, we've added 50 additional root CAs to our list, so you can easily find a suitable SSL certificate for your callback handler. Here's a list of all SSL root CAs accepted by Google Checkout.

On a related note, if you're having trouble receiving notifications or performing merchant calculations even though you have a valid SSL certificate, take a look at this troubleshooting guide.

Permalink | Links to this post | 0 comments

Introducing Digital Delivery



Starting today, Google Checkout will begin providing additional support for digital goods such as software and music. Users have always been able to buy and sell digital goods with Google Checkout but we want to be able to offer an improved user experience tailored specifically to digital goods. Now merchants will have option of tagging an item as digital within the shopping cart and specifying details about how it should be delivered. You'll be able inform a buyer that their digital purchase will be delivered via email, or you can provide a set of instructions along with a URL and license key.

Here’s an XML snippet showing how you can specify digital goods within the shopping cart:


<item>
...
<digital-content>
<description>
Please visit <a href="http://yoursite.com">our
website</a>, for instructions on downloading your
software.
</description>
<url>http://yoursite.com</url>
<key>1456-1514-3657-2198</key>
</digital-content>
</item>

Here’s a screenshot of how that digital content will be shown to the buyer:



We’ll be continuously making improvements to this feature so stay tuned. If you’d like to learn more, please take a look at the API documentation for Google Checkout Digital Delivery.

Permalink | Links to this post | 4 comments

Interview Series: Evgeniy Tarassov about the Google Checkout API Python Library


Next in our series of developer interviews is Evgeniy Tarassov, a Russian developer based in France that I met at Google Developer Day 2007 Paris in Paris.

Evgenyi works for a small company called TT-Solutions. For one of his contracting jobs he had to integrate Google Checkout in a Django application, so he wrote gchecky, a Python open source library for the Google Checkout API.

Evgeniy talks about the gchecky project, a Google Checkout API library in Python, what he likes about the API, the Google Checkout API Documentation, and what we could improve, a polling API for Notifications, Bruce Eckel is asking for a polling API too, testing tools (they're on their way, see Mendoza testing tool for the Google Checkout API), and launching Google Checkout in Russia.

The XML parsing and generation in Gchecky is quite compact through the clever use of Python metaclasses.

Thanks for the Python library and the interview Evgeniy, I feel fortunate to have met you in Paris.

Permalink | Links to this post | 0 comments

Specifying international shipping & taxes with the HTML API



Are you using the HTML API and interested in specifying shipping & taxes for locations worldwide? Our newest tutorial shows you how to translate elements from the XML API into HTML parameters so that you can specify shipping and taxes for any country where Google Checkout is available to buyers. This may be of particular interest if you're a merchant in the UK interested in using the HTML API to specify VAT and ship goods throughout Europe.

If you have questions, concerns, or comments on this article, please feel free to post them in the Google Checkout Developers Forum.

Permalink | Links to this post | 0 comments

Interview Series: Robin Kohli from E-Junkie



Who would be best to initiate our series of developer interviews than Robin Kohli from E-Junkie? Robin is a star in the Google Checkout developer community: he's the top non-Google poster in the developer Forum, and his "fat free" shopping cart application is a great way to get started selling with Google Checkout in a matter of minutes.

Here's an example of what E-Junkie cart looks like from a user perspective, with a few items from the Google Store (this cart uses the Google Checkout sandbox so no real orders will be processed).











Permalink | Links to this post | 0 comments

Google Checkout API at TheServerSide Java Symposium in Barcelona


Wednesday June 27th we will present
the Google Checkout API
at TheServerSide Java Symposium in Barcelona. I will go over the API, the Google Checkout Java SDK, and the Mendoza testing server, and Thomas Steiner will present his work on code generation for REST APIs. Join us if you're in the area.

Permalink | Links to this post | 0 comments

Bookmarks for Checkout integration



As the developer knowledge base and developer community for Google Checkout continue to grow, we're seeing a number of helpful resources and materials scattered across various places, which can make it difficult for you to find what you need. To help keep things organized, we've started to collect bookmarks for links to resources and materials of benefit to merchants in the process of integrating with Google Checkout. You can find it here.

We hope you find it useful, and if you know of any resources that may benefit other merchants, you're more than welcome to add any links to the page.

Permalink | Links to this post | 3 comments

A few words about the serial-number attribute



Every synchronous and asynchronous message generated by Google Checkout includes an attribute called serial-number in the root element as shown here:

  <request-received
xmlns="http://checkout.google.com/schema/2"
serial-number="58ea39d3-025b-4d52-a697-418f0be74bf9"/>

<new-order-notification
xmlns="http://checkout.google.com/schema/2"
serial-number="841171949013218-00001-7">
Each message that you receive from us will have a unique serial-number (with the exception for duplicate notifications that we retry to send out in case of notification failures). Please bear in mind that although these serial numbers are unique, for every notification that you receive, they are not formatted consistently and can actually vary as in the examples above (i.e. "841171949013218-00001-7" vs "58ea39d3-025b-4d52-a697-418f0be74bf9").

The bottom line: you can trust that the ID number of a serial-number is unique, but don't make any assumptions or inferences about the format of the ID presented in the serial-number attribute.

Permalink | Links to this post | 0 comments

Shortening the notification retry period



If you have implemented the Notification API to receive notifications via your API callback handler, we want to let you know that we have shortened the notification retry period from 30 days to 14 days. This means that Google Checkout will attempt to deliver the same notification message to your API callback URL until your system responds to the notification properly, or until 14 days have elapsed.

If you have any questions or concerns, please speak up in the Developers Forum.

Permalink | Links to this post | 0 comments

HTML API: More than you thought it could do


Did you know that you can include any of the XML API tags in the HTML API? Our Help Center article shows you three simple rules to enable you to translate any XML element to an HTML parameter, and some examples to get you started.

Feel free to comment on this technique or post your questions on this thread.

Permalink | Links to this post |

Another Google API public talk in Buenos Aires today


If you are a developer in Buenos Aires and missed yesterday's talk, I'll give a similar talk today at 4 pm at Instituto Tecnologico de Buenos Aires (ITBA). Thanks to Bruno Rovagnati for organizing this session.

Permalink | Links to this post | 0 comments

Google API talk in Buenos Aires today


Today at 6:30 pm I'll give a talk at Opera Bay in Buenos Aires, as part of the Globant Tech Update: “Six Google APIs for Don Isidro Parodi. Let's help Don Isidro build a better web site using 6 Google APIs”. I'll talk about Ajax Search, Maps, KML, Google Data, Google Checkout and Google Web Toolkit. If you're in Buenos Aires, join the fun.

Permalink | Links to this post | 0 comments

See you at JavaOne


JavaOne starts next week in San Francisco. Our team prepared a great session titled Fun and Profit with the Google Checkout API in Java Technology.

I will present the excellent new Java sample code that my British colleague Simon Smith designed. Our sample code went through 2 refactorings recently so it's simpler than ever. And then my new colleague Inderjeet Singh will integrate the Java Petstore 2.0 (hint: look at the list of authors for this article - he knows the Petstore quite well:-) ) with Google Checkout in a few minutes live on stage, leveraging the Java sample code. Finally, Ignacio Blanco from Globant will present a new tool that we will release at JavaOne that helps merchants automate functional testing of their Google Checkout integration. With a mix of synchronous and asynchronous two-way web services calls, and Ajax interactions, functional testing of a Google Checkout integration is difficult to automate. The test server uses Selenium to act as a browser, and intercepts notifications, providing you a unified front end to create automated test suites for your store.

Our session takes place on Thursday, May 10th at 9:35 am in Esplanade 304/306. We hope to see many of you there.

Finally, many engineers from the Checkout team will spend time at the Google booth. If you're interested in Checkout, come say hi and see a demo.

Permalink | Links to this post | 0 comments