Our own product Profile:Edit has tight integration with CartThrob. CT recognizes that it’s installed, and changes the member settings accordingly.
http://mightybigrobot.com/products/detail/profile-edit
Like Zoo Visitor, it allows you to make sweet looking registration forms, and also has the benefit of saving customer data to channel entries for even MORE possibilities.
That said:
if you really want to incorporate Zoo Visitor:
You’d have to copy out the gateway fields data, and add that to your checkout form. You’d have to then wrap the checkout form with the z:v tags, put the ZV data in there. I don’t remember the tags off of the top of my head, but it’s basically this:
{zoo visitor info tag}
{exp:cartthrob:checkout_form return="" }
<input type="text" value="{visitor:first_name}" name="first_name" />
<input type="text" value="{visitor:last_name}" name="last_name" />
<input type="text" value="{visitor:address}" name="address" />
etc
<input type="submit" value="Checkout" />
{/exp:cartthrob:checkout_form}
{/zoo visitor info tag}
The downside, is that if the customer changes that information, cartthrob won’t update Zoo Visitor, or those fields. So if they change all of the billing information, and they get a validation error, the form would be reset with the original Zoo Visitor information. You could check for CT customer data first before filling in with zoo visitor information, but that gets messy.
With profile edit, you don’t need to do any of that extra stuff.