I solved the issue, what i was missing is to convert the API return to string, here is the code hopefully it helps someone.
<?php
add_filter( 'woocommerce_available_variation', 'custom_load_variation_settings_products_fields' );
function custom_load_variation_settings_products_fields( $variations ) {
// duplicate the line for each field
$variations['wccaf_de_asin_var'] = get_post_meta( $variations[ 'variation_id' ], 'wccaf_de_asin_var', true );
$variations['wccaf_uk_asin_var'] = get_post_meta( $variations[ 'variation_id' ], 'wccaf_uk_asin_var', true );
$amazon = new AmazonAPI("GOOGLE-21", "JIJIOJEFIOJEIOFEJFIO", "DJWIJDIWOJDFIJIOFJDIOWJQFOIJIOIOJWID");
$item = $amazon->item_lookup($variations['wccaf_de_asin_var'])->get_item_data();
$variations['amz_price_var_de'] = (string) $item->price;
return $variations;
}
//wccf_after_variation_description is a hook i created into variation.php
add_action( 'wccf_after_variation_description', 'wcff_variation_affiliate_button', 10);
function wcff_variation_affiliate_button() {
// IP Geolocation
$country_code = $_SERVER ["HTTP_CF_IPCOUNTRY"];
$de_asin = '{{{ data.variation.wccaf_de_asin_var }}}';
$uk_asin = '{{{ data.variation.wccaf_uk_asin_var }}}';
if ($country_code=="DE") {
$asin = $de_asin;
}
if ($country_code=="GB") {
$asin = $uk_asin;
}
echo $asin;
?>
<div class="buy_amz_btn_wrap" >
{{{data.variation.amz_price_var_de}}}
</div>
<?php
}
?>