微信支付回调时,业务流程处理失败的情况下,该如何进行后续步骤
在进行微信支付开发,处理回调请求时,对于一切正常的订单,微信回调会正常终止;但如果处理回调过程中发生异常,不知该如何处理。具体过程大致如下:
1、微信支付成功,并且微信端可以正常发起回调;
2、回调过程中,正常处理业务(如更新订单状态为“已付款”)且成功时,返回<return_code><![CDATA[SUCCESS]]></return_code>,微信回调终止,订单后续流程可正常进行(如发货等);
3、若回调过程中,处理业务失败(如更新订单状态失败),返回<return_code><![CDATA[FAIL]]></return_code>时,微信会继续发起回调。
针对第3中情况,即使继续回调,在此过程中业务处理失败的问题未得到处理,待微信多次回调结束后,当前订单仍然是“待付款”状态,但用户的钱已经支付了,假设“待付款”的订单无法发货,这样的情况该如何准确处理呢?
P.S.个人认为准确的情况,应该是在回调过程中发生异常处理失败返回FAIL的时候,微信(或我的程序)调用退款接口,将用户支付金额返回到账户,但这样也有两点问题:
1、调用退款接口之后,针对原支付成功的回调,该如何返回?返回FAIL无法终止回调,返回SUCCESS,又感觉不符合场景。
2、调用退款接口,微信端同样会针对这个退款进行回调,如果这个退款的回调再发生异常失败,又如何处理?
以上,望有相关处理经验的朋友们解惑,谢谢~