简单记录回调的使用

这里写自定义目录标题

简单记录第一次写回调的使用

第一次写回调,总是有一些忐忑和蒙蔽,虽然知道是什么原理,听过支付宝和微信的回调,支付宝提供了同步和异步,同步可以理解为简单的跳转到一个页面,而异步则是当我们请求成功时它会主动调用我们的回调函数,同步只是调用一次,而异步会调用多次,比如你通知你的小伙伴去买东西,他没去,同步就是你只告诉它一次,而异步就是告诉他多次,支付宝的异步是25小时内会调用8次,现在基本上在公司都是用异步。
再说为什么要回调呢?举个例子,比如支付宝的付款操作,我们下单,只有两种结果,一种是成功,一种是失败,无论哪一种都会返回给我们参数,但是它返回给我们是需要时间的,我们不可能等它返回给我们,我们再做自己的业务,所以有了回调一说,当我们提交下单请求的同时,把回调也进行提交,这样它们同时到后台,如果成功直接调用,我们就不用等它给我们返回的结果。
最后还有一点就是,回调的时候是它返回给我们数据,我们拿到数据再处理,这段时间在做快递寄件的时候,看他们官方给的Api文档,看的一脸懵,其实他们给的文档很清楚,可是当时自己脑子没转过来,文档里面说的请求参数指的是他们返回给我们的参数,而返回的数据指的是我们给他们后台返回的参数。
下面是快递100中的下单回调接口,做的时候确实很迷,具体写好的代码如下

 //下单回调接口
    public String callBackUrl(HttpServletRequest request){
        System.out.println("callBackUrl3");
        String taskId = request.getParameter("taskId");
        String param = request.getParameter("param");
        String sign = request.getParameter("sign");
        //记录回调的内容,方便出问题后双方排查问题
        System.out.println("taskId"+taskId+"...param"+param+"....sign"+sign);
        //下单时给的salt,没有可以忽略
        String salt="123456";
        String ourSign = SignUtils.sign(param+salt);
        System.out.println(ourSign);
        SubscribeResp subscribeResp = new SubscribeResp();
        subscribeResp.setResult(Boolean.TRUE);
        subscribeResp.setReturnCode("200");
        subscribeResp.setMessage("成功");
        String resp = new Gson().toJson(subscribeResp);
        if(ourSign.equals(sign)){
            //处理自己的业务
            System.out.println("数据更新到数据库成功1");
            return resp;
        }
        return null;
    };
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值