最近,在做一个网上商场,需要对接第三方支付平台.
这个模块的功能所涉及 到的知识挺简单的,就是servlet(action)+encrypt(加密)+redirect(客户端浏览器重定向).
这些知识都是基础知识,并不是难点.但是我却弄了好长时间...终其原因是不明白,第三方支付流程.
现把第三支付流程总结如下,对有以上困惑的同事,有所帮助.
- 如上图所描述的, 这里涉及到的角色有4个:消费者,网上商户,第三方支付平台,银行.
- 当消费者浏览商户网站,下订单.并在商户网站上选择第三方支付平台进行支付时,向商户网站发送request
- 商户网站在支付servlet中封装参数,再利用第三方支付平台给你的秘钥对支付数据进行加密得到加密字符串,然后把这些支付数据放到request范围中.
- 在返回的jsp页面中,准备表单数据,并使用的body标签中的onload事件让表单自动提交
- 消费者客户端接受到response之后,浏览器会自动向第三方支付平台发送request请求.
- 第三方支付平台采取相同的措施返回某个response,并且消费者浏览器又自动重定向到银行网关
- 然后就是消费者支付的细节了.
- 当消费者支付完成后,银行向消费会向消费者发送应答响应(其实就是客户端重定向到回调url).但是这种客户端重定向不靠谱,还需要想第三方支付平台发送支付响应.第三方支付平台在把这个响应返回到商户网站.
- 商户网站接收到响应,向消费者提供服务.
- 最后就是商户网站与第三方支付平台进行财务清算,第三方支付平台与银行进行财务清算了.
以下是用staruml绘制的序列图:
注:这里的第三方采用的http方式进行服务器交互的,
银行使用的是socket进行交互,
这个视不同的公司交互方式是不同的的,.