zoukankan      html  css  js  c++  java
  • 电商购物网站如何调用第三方支付平台(支付宝,财付通,盛付通等)

    各个平台传递参数有所不同,流程基本是一致的。

    通常第三方的支付平台都会有一个关于平台api的开发指南,在里面介绍了需要传递参数,返回的参数。

    首先是组装平台需要的参数,post到支付宝:

    Java代码 复制代码 收藏代码
    1. /**
    2. * 发送支付宝http支付报文
    3. * @param payOrderData
    4. * @return
    5. * @throws Exception
    6. */
    7. @RequestMapping("/**")
    8. public ModelAndView sendAlipayOrder(** ***,HttpServletRequest request) throws Exception {
    9. if("".equals(payOrderData.getOut_trade_no())&& "".equals(payOrderData.getCommodity_id())
    10. && "".equals(payOrderData.getPrice()) && "".equals(payOrderData.getSubject()) && "".equals(payOrderData.getBody()) ){
    11. throw new Exception("提交支付数据不完整!");
    12. }
    13. /*---------------协议参数----------------------------*/
    14. /**
    15. * 签名加密算法
    16. */
    17. String sign_type = "MD5";
    18. /**
    19. * 交易过程中服务器后台处理通知的页面
    20. * (通知对象是支付平台,告知是否处理成功)
    21. */
    22. String notify_url = "http://..";
    23. /**
    24. * 付完款后跳转的页面 要用 http://格式的完整路径
    25. * (通知对象是用户,告知是否付款成功)
    26. */
    27. String return_url = "http://..";
    28. //省略。。。
    29. //封装参数,发送到支付平台,需要将参数按照平台约定的方式进行加密,支付平台接收到参数后,会将参数加密通传递过来的加密对比,防止发送过程中URL被更改。
    30. return new ModelAndView("**/**",map);
    31. }


    下面的逻辑就是对 notify_url(后台通知),return_url(前台通知页面)的处理了。支付平台处理完请求后,会返回处理结果请求服务器这2个链接。

    前台return_url页面返回处理(后台notify_url的处理基本相同,直接在页面打印出结果)

    Java代码 复制代码 收藏代码
    1. @RequestMapping(value="/***", method = RequestMethod.GET)
    2. public ModelAndView getAlipayReturn(HttpServletRequest request,HttpServletResponse response) throws Exception{
    3. String mysign = AlipayNotify.GetMysign(params,key);//将返回的参数加密
    4. String notify_id = request.getParameter("notify_id");
    5. String responseTxt = AlipayNotify.Verify(notify_id,partnerId);
    6. String sign = request.getParameter("sign");
    7. String trade_no = request.getParameter("trade_no"); //支付宝交易号
    8. String total_fee = request.getParameter("total_fee"); //获取总金额
    9. String trade_status = request.getParameter("trade_status");
    10. //省略。。
    11. if(mysign.equals(sign) && responseTxt.equals("true")){
    12. if(trade_status.equals("TRADE_FINISHED") || trade_status.equals("TRADE_SUCCESS")){
    13. //这里是对比签名无误,付款成功的处理,修改状态等等。。
    14. }
    15. }
    16. //最好能记录下日志
    17. ModelMap model=new ModelMap();
    18. model.addAttribute("payState", return_status);
    19. return new ModelAndView("redirect:***",model);
    20. }


    以上是调用第三方支付平台的基本流程。

  • 相关阅读:
    Android短信管家视频播放器代码备份
    深入理解Android的startservice和bindservice
    Android拦截外拨电话
    android中的目录结构介绍
    2013年最后的3个月,你想到了什么呢?
    如何通过Html网页调用本地安卓app?
    Textview文字监控(输入到某个字符后,进行操作)
    ASP.NET MVC5 网站开发实践(二) Member区域
    ASP.NET MVC5 网站开发实践(二) Member区域
    ASP.NET MVC5 网站开发实践(一)
  • 原文地址:https://www.cnblogs.com/bjanzhuo/p/3576072.html
Copyright © 2011-2022 走看看