跟踪订单状态

注意
通过本SDK,您可以在应用程序的客户端侧跟踪订单状态。但是,我们建议您设置支付Webhook处理程序在应用程序后端接收订单信息。这样您可以实现对完成的购买的额外验证。

用户购买后,您的应用程序可执行以下操作:

  • 在应用程序UI中显示订单状态
  • 成功支付后划走相应用户余额
  • 成功支付后发放购买的商品

使用本SDK实现前述操作的逻辑时,可通过以下方式跟踪订单状态:

订阅订单状态更改

要订阅订单状态更改,请使用Store库中的getOrderStatus SDK方法并向该方法传入以下参数:

  • listenerOrderStatusListener类型的监听器对象。
  • orderId — 以参数形式从通过购物车购买、一键购买或用虚拟货币进行购买收到的订单ID。
SDK参考文档
了解SDK方法及其参数的详细信息。

调用XStore.getOrderStatus方法的示例:

Copy
Full screen
Small screen
XStore.getOrderStatus(object : OrderStatusListener() {

               override fun  onStatusUpdate(status: OrderResponse.Status) {

                   if(status == OrderResponse.Status.DONE) {

                       Log.d("MainActivity", "Success")

                   }

               }

               override fun  onFailure() {

                   Log.d("MainActivity", "Failure")

               }

           }, orderId)

建议打开支付UI时调用XStore.getOrderStatus方法。

购买方法封装了多个订单状态跟踪方法。跟踪根据以下算法执行:

  1. 建立一个Web socket连接。
  2. 如建立Web socket连接成功,且订单状态变为donecancel,则停止跟踪。如Web socket连接失败或响应包含不正确的数据,则使用短轮询跟踪订单状态。
  3. 通过短轮询继续跟踪订单状态。每3秒钟发送一次简单HTTP订单状态请求。如订单状态变为donecancel,则停止跟踪。

请求订单状态

您还可以请求订单状态,例如将用户从支付UI重定向到应用程序时请求。请在支付UI关闭时使用XPayments类返回的状态来进行跟踪。

注意
XPayments类返回的状态指示用户是否在支付UI中完成了购买流程,这些状态与付款交易状态不同。

XPayments类可返回以下状态:

  • XPayments.Status.COMPLETED — 用户已完成支付并回到应用中。
  • XPayments.Status.CANCELLED — 用户关闭了支付UI且未完成支付。
  • XPayments.Status.UNKNOWN — 支付过程中发生了错误,如银行拒绝了该笔交易。

要获取当前付款交易的状态,请使用Store库中的getOrder方法。请将通过购物车购买一键购买用虚拟货币进行购买收到的订单ID作为参数传入。

本文对您的有帮助吗?
谢谢!
我们还有其他可改进之处吗? 留言
非常抱歉
请说明为何本文没有帮助到您。 留言
感谢您的反馈!
我们会查看您的留言并运用它改进用户体验。
为此页面评分
为此页面评分
我们还有其他可改进之处吗?

不想回答

感谢您的反馈!

有用链接

上次更新时间: 2024年3月26日

发现了错别字或其他内容错误? 请选择文本,然后按Ctrl+Enter。

报告问题
我们非常重视内容质量。您的反馈将帮助我们做得更好。
请留下邮箱以便我们后续跟进
感谢您的反馈!