异步通知

为保证数据的一致性,芝麻系统会给商户发送订单操作成功通知,注意:只有订单操作成功才会给商户发送通知。


异步通知接收地址设置


冻结:alipay.fund.auth.order.app.freeze

解冻:alipay.fund.auth.order.unfreeze

撤销:alipay.fund.auth.operation.cancel

转支付:alipay.trade.pay


接收异步通知,需要在上述接口中传入notify_url,具体接口异步通知字段说明,请查看接口详情介绍。


验签方法 同步接口和异步通知验签,请参考验签流程。


异步通知接收代码规范 接收程序执行完后必须打印输出“success”(不包含引号)。如果商户反馈给芝麻信用的字符不是success这7个字符,芝麻信用服务器会不断重发通知,直到超过24小时22分钟。一般情况下,25小时以内完成8次通知(通知的间隔频率一般是:4m,10m,10m,1h,2h,6h,15h);
接收程序执行完成后,该页面不能执行页面跳转。如果执行页面跳转,芝麻信用会接收不到success字符,会被芝麻信用服务器判定为该页面程序运行出现异常,而重发处理结果通知;
代码示例:

/**
 * 异步通知代码示例
 */
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException,
                                                                                   IOException {
    // 获取请求参数
    Map<String, String> params = RequestUtil.getRequestParams(request);
    String notifyType = params.get("notify_type");

    // 不同消息类型,执行不同业务逻辑
    if("xxxx".equals(notifyType)) {
        processBizMsg(request,response);
        return;
    } 

}

/**
 * 业务信息处理
 */
public void processBizMsg(final HttpServletRequest request, HttpServletResponse response) throws IOException {

        //1、验签
        ……

        //2、通知参数解析
        Map<String, String[]> notifyParams = request.getParameterMap();
        String notifyParamStr=JSONObject.toJSONString(notifyParams);
        System.out.println("异步通知:" + notifyParamStr);
        
        //3、执行业务逻辑
        ……

        //4、向芝麻反馈处理是否成功
        PrintWriter writer = null;
        try {
            writer = response.getWriter();
            writer.write("success"); //一定要打印success
            writer.flush();
        } finally {
            if (writer != null) {
                writer.close();
            }
        }
    }
}




onlineServer