用戶支付成功後,我們要向中間商的系統打款,【訂單支付成功接口】請求內部的【消息推送接口】,通過Rabbitmq消息通知中間商的系統,他們返回打款是否成功,這裏展示的是【訂單支付成功接口】向【消息推送接口】的請求。
@RequestBody這個註解很重要,一定要加這個註解,否則請用戶求對象huaBoOrderPushRequest對象的字段都爲null。
【消息推送接口】
/**
* @author johny
* @date 2020/5/13
*/
@RestController
@RequestMapping("/order")
@Slf4j
public class OrderController {
@Autowired
private OrderService orderService;
@Autowired
private RabbitTemplate rabbitTemplate;
@PostMapping("/push")
public ResultData updateOrderStatus(@RequestBody HuaBoOrderPushRequest huaBoOrderPushRequest){
HuaBoOrderPushDomainFactory huaBoOrderPushDomainFactory = new HuaBoOrderPushDomainFactory();
HuaBoOrderPushDomain huaBoOrderPushDomain = huaBoOrderPushDomainFactory.compose(huaBoOrderPushRequest);
try {
orderService.updateOrderByHuaBoOrderPush(huaBoOrderPushDomain);
}catch (Exception e){
log.error("更改訂單支付狀態失敗:",e);
return ResultData.getFailResult(e.getMessage());
}
return ResultData.getSuccessResult();
}
}
【訂單支付成功接口】
@Autowired
RestTemplate restTemplate;
/**
* 主訂單號 orderId
* 客戶訂單號 outTradeId
* 訂單狀態 orderStatus
* 錯誤消息 cause
* 簽名 sign
*/
public ResultData orderPush(HuaboOrderPushRequest huaboOrderPushRequest) throws MalformedURLException {
......
ResponseEntity<ResultData> resp = restTemplate.postForEntity(PropertyUtil.getProperty("huabo.order.push"), huaboOrderPushRequest, ResultData.class);
return resp.getBody();
}