Google Checkout商家运费计算没有意义

时间:2011-05-20 09:45:37

标签: google-checkout

Google Checkout在动态商家运费回调计算方面存在问题。

当客户使用Google按钮点击结帐时,我会传递名为“默认送货”的送货方式,运费为100美元。

此默认值仅在客户选择送货地址时显示,并且谷歌回调商家网站以提取送货方式失败。

当客户登录Google帐户并输入送货地址(国家/城市/州/邮政编码...)时,Google会立即回复商家脚本以获取最新的送货方式。

我能够成功将谷歌回调给我,但我的谷歌运送方式不被接受。

示例,

当客户选择运送到美国NC时,则:

  • 我将退回FedEx Economy作为送货方式(我的系统将根据给定的地址重新提供送货方式)
  • 我不需要显示默认送货

但谷歌说下面的错误:

商家计算:我们在您的商家计算结果中查找数据,但无法找到它:结果:address-id:209802946439880shipping-name:失败时默认发货

从谷歌即时回调收到的XML:

<?xml version="1.0" encoding="UTF-8"?>
<merchant-calculation-callback xmlns="http://checkout.google.com/schema/2" serial-number="abd99db3-d3e3-485b-ba9c-75863d02ed65">

  <shopping-cart>

    <merchant-private-data>
      <session-id>f199c97f7fa9b19ade6fa57a17ce79d61508aef4</session-id>
    </merchant-private-data>

    <items>
      <item>
        <item-weight value="0.0" unit="LB" />
        <tax-table-selector>food</tax-table-selector>
        <item-name>Test prod 3</item-name>
        <item-description></item-description>
        <unit-price currency="USD">1.0</unit-price>
        <quantity>1</quantity>
        <merchant-item-id>test11</merchant-item-id>
      </item>
    </items>

    <cart-expiration>
      <good-until-date>2011-05-20T23:59:59.000Z</good-until-date>
    </cart-expiration>

  </shopping-cart>

  <buyer-id>119687448728341</buyer-id>

  <calculate>

    <addresses>

      <anonymous-address id="209802946439880">
        <country-code>US</country-code>
        <city>Charlotte</city>
        <region>NC</region>
        <postal-code>28227</postal-code>
      </anonymous-address>

    </addresses>

    <shipping>
      <method name="default shipping" />
    </shipping>

    <tax>false</tax>

    <merchant-code-strings />

  </calculate>

  <buyer-language>English</buyer-language>

</merchant-calculation-callback>

在商家脚本自定义运费计算完成后发布到Google的XML:

<?xml version="1.0" encoding="UTF-8"?>
  <merchant-calculation-results xmlns="http://checkout.google.com/schema/2">
    <results>
      <result shipping-name="Fedex Economy" address-id="209802946439880">
        <shipping-rate currency="USD">15.20</shipping-rate>
        <shippable>true</shippable>
      </result>
    </results>
  </merchant-calculation-results>

所以我怀疑谷歌必须要求我在发回谷歌时返回相同的默认运送名称。

我试过了,如果通过修改运费返回相同的默认运输名称,它就可以了!

但是当我返回相同的默认运输名称,同时另外一种运输方式作为FedEx Economy to google时,google会回复错误,说明无效的额外数据:

商家计算:您在商家计算结果中向我们发送了无效的额外数据:[address-id:209802946439880 / shipping-name:Fedex Economy]

<?xml version="1.0" encoding="UTF-8"?>
  <merchant-calculation-results xmlns="http://checkout.google.com/schema/2">
    <results>
      <result shipping-name="default shipping" address-id="209802946439880">
        <shipping-rate currency="USD">8</shipping-rate>
        <shippable>true</shippable>
      </result>
      <result shipping-name="Fedex Economy" address-id="209802946439880">
        <shipping-rate currency="USD">15.20</shipping-rate>
        <shippable>true</shippable>
      </result>
    </results>
  </merchant-calculation-results>

怎么来的!拥有这种规则是不切实际的......

当谷歌将运输城市/州/邮政编码/国家/地区传回给我时,我的系统将仅计算并返回可用的运送方式

这意味着在谷歌让我知道地址之前,我甚至不知道有多少运送方式可供特定客户使用。

1 个答案:

答案 0 :(得分:0)

这就是商家计算运费的方式:

参考:Merchant Calculations API -> Shipping

  

您必须指定唯一名称和a   每个的默认运费   运输选项。

另一种方法是在将客户发送到Google Checkout之前收集邮政编码。然后,您的系统可以在将客户重定向到Google之前预先确定送货可用性和费用,并将送货选项/费用作为“统一费率运费”传递 - 这只是Google Checkout特定字词,表示“这是此处的运费命令“(你已经预先计算过某种方式)。

更多参考资料:

  1. Ok to ask for zip code
  2. More forum discussions
  3. 希望这会有所帮助......