关于微信支付-商户平台:查询订单提示“查询失败:操作失败,请稍候重试”的分析

 

目录

引子

分析

应对

小结


引子

在开发和实施微信 JSAPI 支付的应用后,我们遇到了一些问题,订单的状态更新不正常,当然我们首先需要从自身寻找原因和完善解决问题的办法和方案。在支付的过程中,客户会给我们一些反馈,应用系统的订单状态与微信手机端支付状态不一致,即信息状态更新异常。其中一个客户给我我们提供了手机截图,我们根据用户提供的订单号,登录微信支付商户平台,交易中心,按订单号进行查询,如下图,查询后的结果却显示“查询失败:操作失败,请稍候重试”...

分析

一般的情况下,查询订单会有两种结果,一、查不到,二、查得到。

一、查询不到订单号的显示如下图:

点击查询按钮后,系统显示“查询失败:商户订单号输入不正确”。

二、查询得到订单,如下图:

但第三种情况,某些存在且更新异常的订单,仍然提示 “查询失败:操作失败,请稍候重试”,则比较让人疑惑,如果按照字面的稍候重试去理解,则永远的答案都会是显示这一句话。客服咨询的回复和社区的求助目前也没有太理想的答案,这也在预期之中。

如引子里提供的订单号为:3328e4bae5ee40f5b6ff2fcd2782d5d8 的订单,则属于更为极端的一种情况,根据客户的反馈,通过系统其它的信息比对及排查(如支付时间、支付银行等),最终确定订单号为:3aa33681f24a41139a79e6ce431adf82,这种情况就难以解释了。

应对

目前来看,查询订单的结果无非这三种情况,无论何种情况,我们需要以下几点应对方案:

(1)建立日志跟踪机制是必不可少的,我们以 MS SQL SERVER 举例建立类似如下表:

序号字段名类型说明
1project_ciduniqueidentifier项目ID,连接项目活动表
2projectName[nvarchar](100)项目名称(冗余字段)
3per_ciduniqueidentifier个人ID,连接个人详情表
4payName[nvarchar](50)交费项目名称
5price[money]交费金额
6orderid[nvarchar](50)订单号
7ordertime[datetime]订单交易时间
8openid[nvarchar](50)微信个人openid标识
9err_msg[nvarchar](500)微信支付API返回消息
10status[nvarchar](50)支付状态,可设置消费交易成功、消费交易失败、待支付等
11paytime[datetime]支付时间
12paytype[nvarchar](10)支付类型,可包括消费、退款
13nickname[nvarchar](100)个人微信昵称(冗余字段,便于排查)
14rorderid[nvarchar](50)微信返回的退款订单号
15ciduniqueidentifier日制记录唯一标识

 (2)建立对帐排查功能

如下图登录微信支付商户平台,进入交易中心、交易订单、批量订单查询、输入或选择交易时间范围,点击查询

我们可以下载 Excel 格式的文件,如下图:

 下载的文件为CSV格式,我们可以根据实际需求转存为XLSX格式,通过读入EXCEL数据或导入数据库,与自己的业务表(如交易表、交易日志表)进行关键字比对(如订单号、微信用户openid)等,以排查异常数据进行提醒与处理。

(3)实现手工更新功能,手动更新是最后的处理方式,可以根据前面所述的排查结果单一或批量进行更新,更新的时候可以做好日志记录及标记标注等操作。

(4)对于示例中所叙述的极端情况,我们尽量还是要创建有意义的可用于后期可排查的订单号,微信订单号要求是32位数字,我们可以基于这个规则进行分段拼接,如连接个人信息表中的ID,加项目编号 加 时间戳信息,以免被动的无法主动跟踪交易信息,无法联系交易当事人的情况。

小结

在微信支付交易开发的过程中,我们会遇到很多种情况,需要不断的根据问题反馈来完善我们的应用系统 ,相关开发可参考我的文章:

《C# 实现微信退款及对帐》

​《C# 微信支付接口V2版本回调开发实践》

以上是本人的一些体会与实践,再次感谢您的阅读,欢迎讨论、指教!

评论 153
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

初九之潜龙勿用

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值