场景:
1.用于查询红包详情
2.当红包发送、领取和退回等操作没有拿到明确的结果时(如请求处理中(10003)、未知异常(20000)),则可以通过查询该笔操作的详情来确定。
(1)如请求处理中(10003):
出现该结果码,则可能是由于网络异常或其他问题导致请求处理超时,此时有两种处理方式:
A.以同样的请求直接发起重试,支付宝端有做相应的幂等逻辑;
B.调用查询接口确认操作结果,如果结果字段中status取值为SUCCESS,则代表之前的操作是成功的。
(2)未知异常(20000): 出现该结果码,则可能是由于网络异常或其他问题导致商户没有拿到明确的操作结果,此时有两种处理方式:A.以同样的请求直接发起重试,支付宝端有做相应的幂等逻辑;
B.调用查询接口确认操作结果,如果结果字段中status取值为SUCCESS,则代表之前的操作是成功的。
调用流程:
代码示例:
AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do",AlipayConfig.app_id, AlipayConfig.merchant_private_key, "json","GBK", AlipayConfig.alipay_public_key,"RSA"); AlipayFundCouponOperationQueryRequest request = new AlipayFundCouponOperationQueryRequest(); request.setBizContent("{" + "\"auth_no\":\"2018022210002001350268558440\"," + "\"out_order_no\":\"20180222113230111\"," + "\"operation_id\":\"20180222889489683502\"" + "\"out_request_no\":\"20180222112830111\"" + " }"); AlipayFundCouponOperationQueryResponse response; try { response = alipayClient.execute(request); if (response.isSuccess()) { System.out.println("调用成功"+response.getBody()); } else { System.out.println("调用失败"+response.getBody()); } } catch (AlipayApiException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally { }
如果大家还有什么疑问欢迎帖子下面跟帖追问吐槽