也是近来发现,很多用户微信完结支付分订单并没有成功。主要原因是当前账户下没有足够的支付余额。有些用户比较担心信用逾期的问题,会主动找到这边说明问题,并转账支付。

在标记订单为待支付后,调用 完结支付分订单API 进行重新付款。

此时发现了一个之前不太了解的错误:订单重入参数校验失败。查询发现,完结支付分订单的 end_time 取的是当前值,而非调用时的时间。这会导致现有传入参数与微信已存储的信用订单内容不一致。之前使用 完结支付分订单API 进行重新付款有一段时间了,但并未发现这个问题。

然后我就发现了 API 列表中的另一个重新付款相关的接口:商户发起催收扣款API。这个接口只需要传入订单 ID 就可以重新发起罚款了,相对来说,更简单一点。

使用之后发现了「完结」与「催款」两个 API 之间的区别。「完结」前置条件:服务订单状态为“进行中”且订单状态说明需为[USER_CONFIRM:用户确认],「催款」前置条件:服务订单支付状态处于“待支付”状态。

也就是说「催款」只能在支付发起失败之后才能调用,完结需要的参数会更多,并且重新支付时参数需要与第一次支付时的参数保持一致。诸如:订单重入参数校验失败,重入参数不一致等等。而如果在第一次支付时使用「催款」则会报错:当前订单状态不合法,订单状态为确认状态。

所以,在适当的适合使用适当的接口很重要。