我正在将 Google电子钱包与我的网站集成以购买和创建新的用户帐户。
在我的回发(php
)页面中,我创建了帐户。
如果帐户创建成功,我会使用200 OK
和orderId
回复Google以完成购买。这很好用。
这是我的问题:
如果帐户创建不成功,我想取消购买并告知用户 它被取消的原因。
我还没有见过有人讨论如何做到这一点。
目前,我只是die()
或exit()
回发页面,它有效取消了购买(因为没有200或orderId是echo
ed)。 Google会等待10秒或立即取消吗?
这实际上并没有告诉用户它被取消的原因。
如何告诉用户购买被取消的原因? - 例如提醒他们并显示错误消息
这甚至可能吗?编辑sellerData以便客户端在出错时处理它?怎么样?
谢谢!
答案 0 :(得分:0)
恕我直言 - 它可能类似于验证的最后一步,服务器端,通常是成功(see #6 in the diagram)。
在这种情况下,在失败上,使用标识符其他而不是Google订单ID - 例如sellerData
field中的内容,因为您没有获得(订单ID)。
这意味着您将跟踪所有类型的订单" (也就像跟踪"失败或被遗弃的购物车")并检查(失败)回调。
... H个
<强>更新强>
如果失败(或成功),您将获得原始sellerData
as shown here。所以你可以:
注意:如果用户只是关闭窗口(不一定经过/继续处理),也会调用失败回调。所以你可以&#34;过滤&#34;何时致电您的服务器 - 例如POSTBACK_ERROR
基于上述而不是必须对所有情况都这样做(尽管调试它,我还没有尝试过)。
添加说明:这取决于您对&#34的定义;帐户创建不成功&#34; - 如果这意味着&#34;任何&#34; case(包括你的服务器错误,你不需要区分),那么服务器检查/购物车ID可能是不必要的(你可以关闭POSTBACK_ERROR
)
... H个
更新2
如果您的使用案例要求您区分&#34的原因;帐户创建失败&#34; (某些商业规则)。否则,如果是/ all,那么你可以通过检查failure response
中的错误类型来处理这个问题,而不必执行任何操作......
是随机生成的cartId吗?
不是那么多&#34;随机&#34;,但是唯一的
如果是,我可以将它作为GET查询参数传递给我成功。
根据您的OP /问题,不确定它对成功意味着什么。如果我理解了您的问题,那么您正在寻找一种方法来更好地与用户沟通失败 .....
如果您指的是验证成功的最后一步,则应使用Google订单ID。
第二个问题:失败时,服务器会将orderId放入表中,因为Google会将该信息发送给服务器。但客户从未得到回复 - &gt; orderId失败(仅在成功时给出)??
是的,&#34;失败&#34;,包括你选择&#34;取消&#34;根据某些业务规则并且没有正确响应(例如,HTTP错误而不是200 / OK),您无法在故障回调中获取订单ID。 Google will cancel the order
重要提示:如果您指定了回发网址,则您的服务器必须及时正确地回复Google为每笔交易发送的HTTP POST消息。否则,交易将被取消。
您的失败处理程序将被调用,那将是您使用唯一购物车ID的时候 - 您正在使用它来识别&#34;&#34; &#34;购物车&#34; /&#34;订单&#34;您选择&#34;取消&#34; (而不是Google订单ID)
希望我不要混淆你......只是抛出想法......