做微信支付的时候,遇到一个问题。就是支付结果通知。腾讯并非直接在前台页面返回是否真的支付成功。而是通过后台推送消息告诉商户是否订单真的支付成功。
推送的地址,就是在做统一下单时一堆参数中的notify_url。
只要在这个地址获取相关数据就能知道我们的订单是否成功支付。
但是!
由于理解错误,在这里出错了。
腾讯推送来的消息是个xml字符串。里面有return_code,如果是ACCESS,说明支付成功。这里,我把return_code解理成为单独通过get传过来的。所以程序里单独用get去取return_code,自然是啥都没有。
后面再看文档,发现例子中的xml里有return_code,才明白,它是在xml里传过来的。
下面的事就简单了。先验证sign是否正确。再判断return_code。然后取参数去做业务处理。完成。
腾讯的推送消息如果收不到正确的应答,它会隔一定的间隔重新发送。但是也是有次数限制的。只是越往后间隔时间越长而已。