一、支付宝回调接口
回调:分布式事物解决方案。
1、通知结果:分为
同步通知: 以浏览器方式重定向到网站上去。
异步通知:支付宝会以httpclient技术更改订单状态。
为什么项目要做服务化?
服务化的好处是把共同的代码抽象出来封装成接口给别人调用。
扩展性高,降低耦合性。
分布式事物:
A B两个支付服务,调用订单服务进行订单状态更改
payInfo.update();
orderInfoClient.update();---http协议
当orderInfoClient.update()没有问题的时候,会发出一个通知给payInfo.update(),
这个时候两个服务就会一起提交事物。
当orderInfoClient.update()有问题的时候,也会发出通知给payInfo.update(),这个时候就会一起
回滚事物。
MQ解决分布式事物。 它自身有重试机制。我们只需要处理接口幂等性就好了。
二、同步回调与异步回调
订单信息表中有个state状态。为0就是没有支付 1表示已支付。
aliPayInfo.update();支付宝数据库支付信息状态已经变成已支付
会以httpclient.回调接口,异步通知通过回调接口,把订单状态告诉给网站。
三、同步回调代码
同步回调代码书写过程:
首先肯定是要在api工程中创建一个专门做回调的api接口。
在实现类中实现:
@Override
@ResponseBody
public ResponseBase synCallBack(@RequestParam Map params) {
try {
// 1.日志记录
log.info("####支付宝同步通知synCallBack####开始,params:{}", params);