電腦網(wǎng)站支付成功后可通過支付寶接口主動(dòng)查詢訂單結(jié)果
更多精彩
- 更多技術(shù)博客匆赃,請移步 asing1elife's blog
前置條件
- 該方法基于 Java 支付寶掃碼支付 (新) 實(shí)現(xiàn)
調(diào)用查詢接口進(jìn)行訂單查詢
public class AliQueryServiceImpl extends AliCoreServiceImpl {
public Boolean getPayResult(Long orderId) {
AlipayTradeQueryRequest queryRequest = new AlipayTradeQueryRequest();
queryRequest.setBizModel(generateOrderInfo(orderId));
AlipayTradeQueryResponse response = null;
try {
response = alipayClient.execute(queryRequest);
} catch (AlipayApiException e) {
logger.error("支付寶查詢訂單" + orderId + "失敗略荡!", e);
}
if (response == null) {
logger.error("支付寶未獲取訂單" + orderId + "詳情务唐!");
return false;
}
if (response.isSuccess()) {
if (response.getTradeStatus().equals(TRADE_STATUS_SUCCESS) || response.getTradeStatus().equals(TRADE_STATUS_FINISHED)) {
// 更新訂單狀態(tài)
updateOrderInfo(response.getOutTradeNo(), OrderPay.aliPay.getCode());
return true;
}
logger.error("支付寶訂單" + orderId + "交易失敗亦渗,交易狀態(tài):" + response.getTradeStatus());
return false;
} else {
logger.error("支付寶訂單" + orderId + "查詢失敗智末!");
return false;
}
}
private AlipayTradeQueryModel generateOrderInfo(Long orderId) {
OrderDTO order = orderManageService.getOrder(orderId);
AlipayTradeQueryModel model = new AlipayTradeQueryModel();
model.setOutTradeNo(order.getCode());
return model;
}
}