一:在支付时,可能由于用户的手机卡顿,或者一直停留在支付页面不输入支付密码的情况,这时候就需要我们手动去关闭此次交易,可以使用定时任务,规定用户在30分钟之内进行支付完成,如果没有支付完成,就会关闭次交易
二:示例代码
@RequestMapping("/closeOrder")
public void closeOrder(String orderid) {
System.out.println( orderid );
try {
AlipayClient alipayClient = new DefaultAlipayClient( constant.serverUrl,
constant.appId,
constant.privateKey,
constant.format,
constant.charset,
constant.PublicKey,
constant.signType
);
AlipayTradeCloseRequest request = new AlipayTradeCloseRequest();
JSONObject bizContent = new JSONObject();
bizContent.put( "out_trade_no", orderid );
request.setBizContent( bizContent.toString() );
AlipayTradeCloseResponse response = alipayClient.execute( request );
if (response.isSuccess()) {
System.out.println( "关闭订单调用成功" );
} else {
System.out.println( "关闭订单调用失败" );
}
} catch (AlipayApiException e) {
e.printStackTrace();
}
}
三:测试
数据库添加一条订单
支付测试,但是不输入密码!!!,模拟用户卡顿或者故意为之
如果用户在这个页面超过30分钟没有输入密码,就可以使用定时任务去调用关闭订单接口
控制台输出:
这个时候用户再去输入密码进行支付就不可以了,因为已经修改了订单的交易状态