们都知道,在现在的网站中,基本上都会有支付功能,在线支付作为一个潮流已是现代化网站的必备功能模块,那么几天我就分享一下如果来做这个在线支付功能。
在线支付一般来说有两种实现方式,一种是调用各个银行提供的接口,另一种是使用第三方集成好的支付功能。两种方式各有优劣,这个相信行内人士都是非常了解的了。对于第三方支付来说会需要提交企业5证来验证,还会有部分手续费,但是实现起来就非常方便了。对于直接使用银联接口的话就是使用起来必来麻烦,要为各个银行写接口实现,但是相比起来就更加安全了。
本文主要讲的是使用第三方支付平台来整合到我们的项目中,实现实际的支付功能。本文使用的例程是一个真实的支付过程,请注意,不要再测试中支付过多金额,否则后果自负。以前文说到的一个网上书店系统来说明,这里接入的是易宝支付的测试指纹和接口。如实际企业开发者可以使用企业牌照申请接口,如是普通开发者用来测试在线支付功能的可以直接使用。
我们先来说应该如何生成订单。
一、数据库设计
我们需要来一个订单表,订单详情表,以及订单的自动化序列表
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
|
二、bean设计
生成其get,set方法,并且记得要序列化Serializable
1 2 3 4 |
|
三、接口设计
设计订单的实体类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
接口的实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 |
|
四、Service的设计
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
|
实现其接口
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
|
生成订单
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
|
接下来就是支付功能的实现了。我们要为上面生成的订单来支付。
五、界面设计。
订单生成后腰跳转过去支付,这个支付界面我们可以使用一个表单。pay.jsp。并且将内容提交到PayServlet中。
1 |
|
订单号: 支付金额:元 | |||
请您选择在线支付银行 | |||
招商银行 | 工商银行 | 农业银行 | 建设银行 |
中国民生银行总行 | 光大银行 | 交通银行 | 深圳发展银行 |
北京银行 | 兴业银行 | 上海浦东发展银行 | 中信银行 |
六、servletc逻辑处理
对于使用易宝支付我们无需导入jar包,我们直接使用其接口即可。下面这张图片是易宝支付的接口说明。
PayServlet的内容。
这里值得说一下的就是 p8_Url ,也就是支付成功后悔返回的商家界面地址。我这里写的是自己工程的地址。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
|
PayUtil.java是一个工具类,这里我们直接使用官方的即可。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 |
|
对于支付成功之后,我们需要修改我们的订单状态,改为已付款,所以我们需要一个响应的servlet
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
|
在这个网上书店的支付中,我们可以看到这样的效果:这里以支付1分钱为例,来演示在线支付功能。
用户在浏览商品后加入购物车并生成订单了。
先是跳转我们自己写的这个选择银行的表单中。
支付的过程我们会先跳转到易宝支付的页面。
我这里选择建设银行来支付。所以点击确定后就会跳转到建设银行的界面。
支付成功之后就返回。
然后就会跳转回我们自己的项目中,这个时候来查看一个订单的状态,会发现已经支付成功了。
总结:在线支付功能是个非常实用的功能,我们都应该需要掌握其基本的开发流程,并亲自动手进行测试才会更加清楚了了解。