支付宝回调

摘要:
1//这是支付宝回拨信息2@RequestMapping(“alipay_callback.do”)3@ResponseBody4publicObjectalipayCallback(HttpServletRequestrequest){5Mapparams=Maps.newHashMap();6/getParameterMap(
1     //这个是支付宝回调的信息
2     @RequestMapping("alipay_callback.do")
3 @ResponseBody
4     publicObject alipayCallback(HttpServletRequest request){
5         Map<String,String> params =Maps.newHashMap();
6         //getParameterMap()一般多用于接收前台表单多参数传输的数据
7         //支付宝的回调都是把信息放到request里面
8         Map requestParams =request.getParameterMap();
9         //keyset()是获取所有的key值,iterator()是迭代遍历
10         for(Iterator iter =requestParams.keySet().iterator();iter.hasNext();){
11             String name =(String)iter.next();
12             //这里把key放到数组里面
13             String[] values =(String[]) requestParams.get(name);
14             String valueStr = "";
15             //这个for循环的尊用就是把上面那个String中的值都遍历一遍
16             for(int i = 0 ; i <values.length;i++){
17                 //这个是三元运算符
18                 valueStr = (i == values.length -1)?valueStr + values[i]:valueStr + values[i]+",";
19 }
20             //把数据全部加进map集合中   name就是key  valueStr就是value
21 params.put(name,valueStr);
22 }
23         //sign就是签名    trade_status是交易的状态
24         logger.info("支付宝回调,sign:{},trade_status:{},参数:{}",params.get("sign"),params.get("trade_status"),params.toString());
25 
26         //非常重要,验证回调的正确性,是不是支付宝发的.并且呢还要避免重复通知.
27         //这个非常重要,但是不知道这个是什么意思
//这个是签名类型 sign参数已经帮我们删除掉了,在这里我们要把签名类型删除掉
28 params.remove("sign_type"); 29 try{ 30 //这里是RSA验证签名 31 //Configs.getAlipayPublicKey() 其实就是支付宝的应用公钥(记住不是支付宝的公钥,是支付宝应用公钥) 32 //Configs.getSignType()也就是支付宝文本类型里面的签名类型:RSA2 33 boolean alipayRSACheckedV2 = AlipaySignature.rsaCheckV2(params, Configs.getAlipayPublicKey(),"utf-8",Configs.getSignType()); 34 //如果验证上面的boolean为true的话,我们就应该更改下订单的状态,减少下库存这些操作 35 if(!alipayRSACheckedV2){ 36 return ServerResponse.createByErrorMessage("非法请求,验证不通过,再恶意请求我就报警找网警了"); 37 } 38 } catch(AlipayApiException e) { 39 logger.error("支付宝验证回调异常",e); 40 }
  //回调之后修改账单状态
        ServerResponse serverResponse =iOrderService.aliCallback(params);
        if(serverResponse.isSuccess()){
            returnConst.AlipayCallback.RESPONSE_SUCCESS;
        }
        returnConst.AlipayCallback.RESPONSE_FAILED;
    }

处理订单状态点我查看

如果你感觉本文对你有帮助,欢迎进群一起探讨交流:点我加群

免责声明:文章转载自《支付宝回调》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇VMware克隆已安装的虚拟机python 钉钉 消息推送 文件传输下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

C#支付宝支付接口H5版(手机网页支付)

接口官方文档 https://docs.open.alipay.com/203/107090/ 首先在Nuget 安装 Alipay      /// <summary>         /// 支付宝支付         /// </summary>         /// <param name="model">&l...

首次揭秘!扫福得福:支付宝春节集五福背后的技术分享

小蚂蚁导读:在刚过去不久的春节,你是否也参与了支付宝春节集五福的活动呢?不少小伙伴发现,今年的支付宝扫福更严格、更快也更准确了,这背后的技术是怎么做到的呢? 本期稿件小蚂蚁邀请到了支付宝多媒体技术部创新组的算法专家嘉睿与大家分享支付宝春节集五福背后的技术,如果你也对此感兴趣,欢迎投简历加入我们!该团队目前正在招聘目标检测识别、文字检测识别方向的专业人才,有...

免签支付系统,微信支付宝免签支付,个人支付接口源码

免签支付系统演示站点:http://pay.changu.net/pay 源码地址:https://github.com/wxs2/xposed-pay 免签支付系统关键字: ccpay多商户个人收款码支付系统源码个人免签收款,骑士系统源码码支付源码个人免签收款平台码支付源码免软件监控码支付源码,网页版监控个人二维码收款pay.changu.net收款系统...

DELPHI支付宝支付代码

  真实业务场景的考虑 按照支付宝或者微信支付的开发手册的说法,一个标准的客户端接入支付业务模型应该是这样的,我忽略时序图,只用文字描述: 用户登录客户端,选择商品,然后点击客户端支付。 客户端收集商品信息,然后调用自己业务平台的预付款接口。 业务平台根据客户端提交的商品信息,生成自己的订单号等内容,并按照第三方支付的要求对订单信息进行拼装组合,并编码和...

支付宝异步通知处理实现原理总结

支付宝有一个接口:实现支付请求(里面要提供一个订单号) 你有一个接口:实现支付结果的通知(通知里面会包含订单号) 后面就简单了 1)你生成订单 请求调用 支付宝接口 去支付(然后。。然后就没然后了) 2)你的接口:等着呗 支付宝会调用的接口 通知你 那个订单完成的结果 3) 支付系统的异步通知实质上是给给定的地址发送请求实现的,这个地址很可能是不会有页面而...

支付宝 ILLEGAL_SIGN

 支付宝 ILLEGAL_SIGN: 解决办法:地址加上 <![CDATA[ ...... ]]> <PAY_COMPLETE_PAGE_URL><![CDATA[https://baoxian.itaiping.com/ae-console/remote/insuredQueryNew?ins_req_id=C732459...