目的:
在支付之后,获取支付状态,回调自己系统的接口
问题:
回调不成功,支付宝(沙箱版)显示支付完成,但是并没有按照自己想的那样调用回调接口,经过打日志,发现根本就没有进这个接口
处理过程:
首先,既然它没有访问到我们的接口,是不是接口的路径是错误的?或者是对方系统根本就没有收到我们的回调地址,发送有问题?这里说一下,刚开始我天真的以为在沙箱环境中配置一下回调地址就可以,然后在这个死胡同里钻了好久。。。
这里的应用网关和授权回调地址是系统上线和需要返回三方授权信息的时候才需要填,(具体是什么作用还没有细看,有时间了解一下),因为我现在只是自己的系统调用,然后演示,所以只需要在传递支付参数的时候带上回调的地址就可以
.setNotifyUrl(PropertiesUtil.getProperty("alipay.callback.url"))
支付宝的回调有两种方式:同步和异步,上边使用的异步的方式
不可将本机IP作为回调地址,原因如下:
关于 alipay.callback.url 我们不可以将本机 IP 作为回调接口的 IP,因为在回调时,对方系统会通过互联网的方式来访问这个接口,如果填的 IP 使我们主机的 IP,那他肯定是访问不到的,因为我们的本机IP是属于内网的,我们所在内网的网关IP才是可以被外网访问的,所以这里我们用一下内网穿透的工具,来达到IP映射的目的
内网穿透的工具可以参考这个老哥写的,简单便捷
总结:
- 根据自己需要去配置应用网关和授权回调地址(如果只是自己开发课程设计程序什么的就不需要了)
- 组装回调地址到发送支付请求的参数中
- 切记,不可将本机 IP 作为回调地址,可借助内网穿透的工具解决