微信支付,在回调中不光要处理自己的业务逻辑,同时要通知微信你已经处理完了,不需要在通知了,否则微信会以15s/15s/30s/3m/10m/20m/30m/30m/30m/60m/3h/3h/3h/6h/6h - 总计 24h4m)的频率通知,直到你告诉它你处理完成或者通知频率完成后才不会再次通知。
这个时候我们就要在回调中通过代码来告诉微信,无论是支付成功还是支付失败都要告诉它。而在PHP中,以return的方式输出或者输出json等是不行的。在我们的通知中,不能夹杂自己的处理和输出的逻辑。
// 微信成功是返回
echo '<xml>
<return_code><![CDATA[SUCCESS]]></return_code>
<return_msg><![CDATA[OK]]></return_msg>
</xml>';
die;
// 支付失败时要在return_msg里边告诉他们支付失败的原因,这个原因微信会在回调的时候已xml的格式告诉你。字段为return_msg
只有以echo的方式去通知微信,微信那边才会知道你这边的业务逻辑已经处理完成了,它才不会进行通知。并且以xml的格式输出,这里可以参考微信支付文档的支付结果通知