电商购物网站如何调用第三方支付平台(支付宝,财付通,盛付通等)

news/2024/5/21 18:06:18/文章来源:https://blog.csdn.net/zongxiao08/article/details/8577088
各个平台传递参数有所不同,流程基本是一致的。

通常第三方的支付平台都会有一个关于平台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. }
/***  发送支付宝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的处理基本相同,直接在页面打印出结果)

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. }
@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);}


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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_886864.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在GitHub上搭建自己的静态网站

问题: 写了网站,在没有买服务器的情况下让别人可以访问: 步骤: 1.准备好要发布的网站的HTML文件 2.下载并安装好GitHub客户端(在客户端操作更加方便): 地址1:https://desktop.github.com/ 地址2: https://pan.baidu.com/s/1SypPfb9yIIQgC9XkXs_NxQ 提取码:u4ve …

网站课程设计(简单线上购物商城)

网站课程设计(简单线上购物商城) 1.开发环境 ​ VS2019,SQL2012,ASP.NET开发 2.项目主题 ​ ​ ​ ​ ​ ​ ​ 刚好完成了网站的课程设计,觉得该好好纪念一下((✪ω✪)),这是一个简易线上购物平台,只是实现了一部分基础功能,例如商品的浏览,添加购物车收藏等.(项目代码在文…

机器学习实战——第二章之改进约会网站的配对效果

三种类型:不喜欢的-1,魅力一般的-2,极具魅力的-3。 样本特征:每年获得的飞行常客里程数,玩视频游戏所耗时间百分比,每周消费的冰淇淋公升数。 1 from numpy import *2 import matplotlib3 import matplotli…

图像网站下载图片

图像网站下载图片 文章目录 准备工作方法一:方法二: 准备工作 实现从百度图片中下载某一类型的图片 import requests from selenium import webdriver通过webdriver打开浏览器,如果遇到问题可以参考https://blog.csdn.net/weixin_49374896…

婚外情网站的谎言和资料外泄故事 企业该吸取怎样的教训

近日被曝全球最大的偷情网站Ashley Madison已遭黑客组织入侵,黑客宣称已掌握超过3700万已婚外遇男女的个人资料,除非达到他们的要求,否则将公布客户的真实姓名、裸照、信用卡详细资料与“性幻想内容”。Ashley Madison去年曾推出只要支付19美…

高考志愿填报小心钓鱼网站 趋势科技PC-cillin 2012保护学生网上报名无忧

[趋势科技中国]– [2012年5月11日] 细节决定成败,随着高考志愿网上集中填报的来临,针对这一高考关口时间的钓鱼网站和网站木马病毒开始明显增多。全球服务器安全、虚拟化及云计算安全领导厂商趋势科技提醒广大考生和家长,在查看高校网站和填写…

适合做个人博客网站的一套静态页面模板,非常不错哦

分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow 原文:适合做个人博客网站的一套静态页面模板&#x…

开发多用户注册使用的网站---享元模式

我们在实际项目开发过程中,肯定遇到以下类似的情况:专为小型公司注册并显示的公司信息,提供不同样式的显示方式;我们不会为每个注册的账户的公司都开发出一套量身打造的网站,而且才用共享技术的方式来实现核心技术、其…

大型网站架构系列:负载均衡详解(1)

大型网站架构系列:负载均衡详解(1) 面对大量用户访问、高并发请求,海量数据,可以使用高性能的服务器、大型数据库,存储设备,高性能Web服务器,采用高效率的编程语言比如(Go,Scala)等&…

大型网站架构系列:负载均衡详解(3)

大型网站架构系列:负载均衡详解(3) 本次分享大纲 软件负载均衡概述Ngnix负载均衡Lvs负载均衡Haproxy负载均衡本次分享总结 一、软件负载均衡概述 硬件负载均衡性能优越,功能全面,但是价格昂贵,一般适合初期…

大型网站架构系列:负载均衡详解(4)

大型网站架构系列:负载均衡详解(4) 本文是负载均衡详解的第四篇,主要介绍了LVS的三种请求转发模式和八种负载均衡算法,以及Haproxy的特点和负载均衡算法。具体参考文章,详见最后的链接。 三、LVS负载均衡 L…

大型网站架构系列:电商网站架构案例(2)

大型网站架构系列:电商网站架构案例(2) 电网网站架构案例系列的第二篇文章。主要讲解网站架构分析,网站架构优化,业务拆分,应用集群架构,多级缓存,分布式Session。 五、网站架构分析 根据以上预估&#xff…

大型网站架构系列:电商网站架构案例(3)

大型网站架构系列:电商网站架构案例(3) 本文章是电商网站架构案例的第三篇,主要介绍数据库集群,读写分离,分库分表,服务化,消息队列的使用,以及本电商案例的架构总结。 6.5数据库集群&#xff0…

大型网站架构系列:电商网站架构案例(1)

大型网站架构系列:电商网站架构案例(1) 大型网站架构是一个系列文档,欢迎大家关注。本次分享主题:电商网站架构案例。从电商网站的需求,到单机架构,逐步演变为常用的,可供参考的分布式架构的原型。除具备功…

大型网站架构系列:分布式消息队列(一)

大型网站架构系列:分布式消息队列(一) 以下是消息队列以下的大纲,本文主要介绍消息队列概述,消息队列应用场景和消息中间件示例(电商,日志系统)。 本次分享大纲 消息队列概述消息队列…

大型网站架构系列:消息队列(二)

大型网站架构系列:消息队列(二) 本文是大型网站架构系列:消息队列(二),主要分享JMS消息服务,常用消息中间件(Active MQ,Rabbit MQ,Zero MQ&#x…

大型分布式网站架构技术总结

大型分布式网站架构技术总结 本文是学习大型分布式网站架构的技术总结。对架构一个高性能,高可用,可伸缩,可扩展的分布式网站进行了概要性描述,并给出一个架构参考。一部分为读书笔记,一部分是个人经验总结。对大型分布…

如何让数据说话! —网站实例分析

数据在很多网站都被看作是衡量一个产品或者一个设计好坏的基本指标之一。数据指标也曾经压的我很长一段时间喘不过气来。但是现在想想确实有时候数据能告诉你很多很多。它未必是衡量产品好坏的唯一标准,但是它也确实能告知你很多。 那么数据究竟能告知我们些什么呢&…

看CSDN博客,用电脑访问其手机版网站——更清爽!

一、效果图对比 A.第一张图为电脑版谋篇博客; B.第二张图为对应手机版博客; ----------------------------------------------------------------------------------------------------------------------------------------------- 对比效果不言而喻&…

爬虫日记之05两种Web请求渲染过程(附图解和网站实例)

爬虫日记之两种Web请求渲染过程 2022-3-5 Part1 首先我们来对两种Web请求过程的概念进行一下区分~ 1.服务器渲染:在服务器那边直接把数据和html整合在一起,统一返回给浏览器 这种方法的好处是在页面代码中能看到数据,且只需要浏览器请求一…