在线支付是指卖方与卖方通过因特网上的电子商务网站进行交易时,银行为其提供网上资金结算服务的一种业务,她为企业和个人提供了一个安全、快捷、方便的电子商务应用环境和网上资金结算工具,在线支付不仅帮助企业实现了销售款项的快速归集,缩短收款周期,同时也为个人网上银行客户提供了网上消费支付结算方式,使客户正在做到了足不出户,网上购物,不知道小伙伴们有没有这种感觉,逛街的时候,还能管住自己,少买点,因为钞票是直接通过自己的手给了卖家,但是网购就不一样了,我们直接点击鼠标,一个按钮的操作,钞票就嗖的一下打到第三方支付公司了,但是并没有啥感觉,还想买,因为没有经过自己的手,没有那么心疼,咳咳,以前的时候感觉支付特别的神秘,随着项目的进行,在小便的项目中也遇到这个功能,在线支付,今天这篇博客,小编就来简单的和小伙伴的分享一下如何使用SSH框架实现在线支付功能,希望对有需要的小伙伴有帮助,还请小伙伴们多多指教。
要想完成在线支付的功能,首先我们来简单的来了解一下在线支付的方式,在线支付方式有两种,第一种支付方式,就是通过网站和各个银行直接进行对接,从而完成支付操作;第二种方式,网站通过和第三方公司进行对接,第三方公司再和各个银行进行对接,完成支付操作,那么两种支付方式有什么优点和缺点呢?如下所示:
第一种支付方式:(网站直接和各个银行进行对接);
优点:免费;
缺点:网站需要了解各个银行的网银系统,才可以完成对接;
第二种方式:(网站和第三方支付公司对接,第三方公司再和网站进行对接);
优点:网站不需要了解各个网银的接口,了解第三方支付公司的接口;
缺点:收费的,一般费用1%,安全,使用方便,支付担保业务可以在很大程度上保证付款人的收益。介绍完了支付的方式,接着结合小编的项目来分析一下在线支付的流程,在小编的项目中采用第二种支付方式,也就是网站和第三方公司对接,第三方公司再和网站进行对接;那么这中方式的流程是什么样子呢?用户访问网站,找到第三方支付公司,那么用户如何才能找到第三方公司呢?通过重定向,才能找到第三方公司,有的小伙伴可能会说,使用转发的方法,转发市过不去的,因为转发只能实现内容的跳转;第三方公司进行付款的操作,肯定要跳转到网银的界面,那么怎么样才能跳转到网银的界面呢?没错还是需要通过重定向的操作,这个时候会重定向到网银系统,网银中进行付款的操作,这个时候需要重定向到第三方支付公司,这个时候,又回到第三方支付公司,第三方支付公司付完款之后通知网站,支付成功,这个过程中都是一系列的重定向操作,这一个过程,会传递很多的数据,那么如何保证数据的安全呢?这个时候,我们需要用到电子签名,所谓的电子签名,就是指数据电文中以电子形式所含、所附用于识别签名人身份并表明签名人认可其中内容的数据。通俗点说,电子签名就是通过密码技术对电子文档的电子形式的签名,并非是书面签名的数字图像化,它类似于手写签名或印章,也可以说它就是电子印章。接着,小编画一张图来简简单的说明一下,在线支付的流程,如下图所示:
ok,接着小编来详细讲解一下,如何使用SSH框架完成支付的功能,首先第一步,我们来编写jsp里面的代码,如下所示:
+
Copyright © 2005-2015 网上商城 版权所有
第二步,我们需要接收支付的通道,编码如下所示:
package cn.itcast.shop.cart.action; import org.apache.struts2.ServletActionContext; import cn.itcast.shop.cart.vo.Cart; import cn.itcast.shop.cart.vo.CartItem; import cn.itcast.shop.product.service.ProductService; import cn.itcast.shop.product.vo.Product; import com.opensymphony.xwork2.ActionSupport; /** * 购物车Action * * @author 丁国华 * */ public >
第三步,编写orderService里面的代码如下所示:
package cn.itcast.shop.order.service; import java.util.List; import org.springframework.transaction.annotation.Transactional; import cn.itcast.shop.order.dao.OrderDao; import cn.itcast.shop.order.vo.Order; import cn.itcast.shop.utils.PageBean; /** * 订单模块,业务层代码 * @author丁国华 * */ @Transactional public > findByPageUid(Integer uid, Integer page) { PageBean
第四步,编写orderDao里面的代码,如下所示:
package cn.itcast.shop.order.dao; import java.util.List; import org.springframework.orm.hibernate3.support.HibernateDaoSupport; import cn.itcast.shop.order.vo.Order; import cn.itcast.shop.utils.PageHibernateCallback; /** * 订单模块Dao层的代码 * * @author 丁国华 * */ public > list = this.getHibernateTemplate.find(hql,uid); if(list != null && list.size>0){ return list.get(0).intValue; } return null; } //DAO层的我的订单的查询 public List
第五步,获取hmac,由一个算法和密钥来获得,代码如下所示:
package cn.itcast.shop.utils; import java.io.UnsupportedEncodingException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.Arrays; public >
接着,我们来运行一下,看一下效果:
由于后面的操作涉及到个人信息,小编就不进行展示了。
关于:中科研拓
深圳市中科研拓科技有限公司专注提供软件外包、app开发、智能硬件开发、O2O电商平台、手机应用程序、大数据系统、物联网项目等开发外包服务,十年研发经验,上百成功案例,中科院软件外包合作企业。通过IT技术实现创造客户和社会的价值,致力于为用户提供很好的软件解决方案。联系电话400-0316-532,邮箱sales@zhongkerd.com,网址www.zhongkerd.com