电商购物网站如何调用第三方支付平台(支付宝,财付通,盛付通等)
来源:互联网 发布:卫星机顶盒改网络电视 编辑:程序博客网 时间:2024/04/24 18:51
各个平台传递参数有所不同,流程基本是一致的。
通常第三方的支付平台都会有一个关于平台api的开发指南,在里面介绍了需要传递参数,返回的参数。
首先是组装平台需要的参数,post到支付宝:
下面的逻辑就是对 notify_url(后台通知),return_url(前台通知页面)的处理了。支付平台处理完请求后,会返回处理结果请求服务器这2个链接。
前台return_url页面返回处理(后台notify_url的处理基本相同,直接在页面打印出结果)
以上是调用第三方支付平台的基本流程。
通常第三方的支付平台都会有一个关于平台api的开发指南,在里面介绍了需要传递参数,返回的参数。
首先是组装平台需要的参数,post到支付宝:
- /**
- * 发送支付宝http支付报文
- * @param payOrderData
- * @return
- * @throws Exception
- */
- @RequestMapping("/**")
- public ModelAndView sendAlipayOrder(** ***,HttpServletRequest request)throws Exception {
- if("".equals(payOrderData.getOut_trade_no())&&"".equals(payOrderData.getCommodity_id())
- && "".equals(payOrderData.getPrice()) && "".equals(payOrderData.getSubject()) && "".equals(payOrderData.getBody()) ){
- throw new Exception("提交支付数据不完整!");
- }
- /*---------------协议参数----------------------------*/
- /**
- * 签名加密算法
- */
- String sign_type = "MD5";
- /**
- * 交易过程中服务器后台处理通知的页面
- * (通知对象是支付平台,告知是否处理成功)
- */
- String notify_url = "http://..";
- /**
- * 付完款后跳转的页面 要用 http://格式的完整路径
- * (通知对象是用户,告知是否付款成功)
- */
- String return_url = "http://..";
- //省略。。。
- //封装参数,发送到支付平台,需要将参数按照平台约定的方式进行加密,支付平台接收到参数后,会将参数加密通传递过来的加密对比,防止发送过程中URL被更改。
- return new ModelAndView("**/**",map);
- }
/** * 发送支付宝http支付报文 * @param payOrderData * @return * @throws Exception */@RequestMapping("/**")public ModelAndView sendAlipayOrder(** ***,HttpServletRequest request) throws Exception {if("".equals(payOrderData.getOut_trade_no())&& "".equals(payOrderData.getCommodity_id())&& "".equals(payOrderData.getPrice()) && "".equals(payOrderData.getSubject()) && "".equals(payOrderData.getBody()) ){throw new Exception("提交支付数据不完整!");}/*---------------协议参数----------------------------*//** * 签名加密算法 */String sign_type = "MD5"; /** * 交易过程中服务器后台处理通知的页面 * (通知对象是支付平台,告知是否处理成功) */String notify_url = "http://.."; /** * 付完款后跳转的页面 要用 http://格式的完整路径 * (通知对象是用户,告知是否付款成功) */String return_url = "http://.."; //省略。。。//封装参数,发送到支付平台,需要将参数按照平台约定的方式进行加密,支付平台接收到参数后,会将参数加密通传递过来的加密对比,防止发送过程中URL被更改。return new ModelAndView("**/**",map);}
下面的逻辑就是对 notify_url(后台通知),return_url(前台通知页面)的处理了。支付平台处理完请求后,会返回处理结果请求服务器这2个链接。
前台return_url页面返回处理(后台notify_url的处理基本相同,直接在页面打印出结果)
- @RequestMapping(value="/***", method = RequestMethod.GET)
- public ModelAndView getAlipayReturn(HttpServletRequest request,HttpServletResponse response)throws Exception{
- String mysign = AlipayNotify.GetMysign(params,key);//将返回的参数加密
- String notify_id = request.getParameter("notify_id");
- String responseTxt = AlipayNotify.Verify(notify_id,partnerId);
- String sign = request.getParameter("sign");
- String trade_no = request.getParameter("trade_no");//支付宝交易号
- String total_fee = request.getParameter("total_fee");//获取总金额
- String trade_status = request.getParameter("trade_status");
- //省略。。
- if(mysign.equals(sign) && responseTxt.equals("true")){
- if(trade_status.equals("TRADE_FINISHED") || trade_status.equals("TRADE_SUCCESS")){
- //这里是对比签名无误,付款成功的处理,修改状态等等。。
- }
- }
- //最好能记录下日志
- ModelMap model=new ModelMap();
- model.addAttribute("payState", return_status);
- return new ModelAndView("redirect:***",model);
- }
@RequestMapping(value="/***", method = RequestMethod.GET)public ModelAndView getAlipayReturn(HttpServletRequest request,HttpServletResponse response) throws Exception{String mysign = AlipayNotify.GetMysign(params,key);//将返回的参数加密String notify_id = request.getParameter("notify_id");String responseTxt = AlipayNotify.Verify(notify_id,partnerId);String sign = request.getParameter("sign");String trade_no = request.getParameter("trade_no");//支付宝交易号String total_fee = request.getParameter("total_fee"); //获取总金额String trade_status = request.getParameter("trade_status"); //省略。。if(mysign.equals(sign) && responseTxt.equals("true")){if(trade_status.equals("TRADE_FINISHED") || trade_status.equals("TRADE_SUCCESS")){ //这里是对比签名无误,付款成功的处理,修改状态等等。。}}//最好能记录下日志ModelMap model=new ModelMap();model.addAttribute("payState", return_status);return new ModelAndView("redirect:***",model);}
以上是调用第三方支付平台的基本流程。
- 电商购物网站如何调用第三方支付平台(支付宝,财付通,盛付通等)
- B2C电商网站调用第三方支付平台流程
- 支付宝第三方支付 平台
- 电商平台接入第三方支付接口之微信支付接入订单系统
- iOS第三方支付(支付宝)
- 第三方支付宝支付
- 第三方支付宝支付
- iOS 第三方支付 支付宝支付
- 第三方支付之支付宝支付
- 第三方支付之支付宝支付
- 第三方支付支付宝支付
- 第三方支付平台评价
- 第三方支付平台理解
- 浅谈第三方支付平台
- 第三方支付平台对比
- 调用第三方接口~支付宝
- Java后台调用第三方支付接口(易宝支付)
- 在线支付(通过第三方支付平台易保支付)
- 黑马程序员-集合1-List集合
- 什么是java
- 黑马程序员-对象包装类
- 节表属性格式分析
- java方法转换大写日期及人民币大写转换方式 .txt
- 电商购物网站如何调用第三方支付平台(支付宝,财付通,盛付通等)
- FreeCMS有些功能出现乱码怎么办?
- 定位节表中RELOC所在符号表位置
- java中到底是继承父类变量还是访问父类变量
- JQuery EasyUI form ajax 提交后办事器返回操纵成果,IE提示下载
- Spring+Quartz实现定时任务的配置方法
- uva 253 - Cube painting 思维问题
- __FILE__,__LINE__
- Sublime Text 3正式版发布