我的日常

登录/注册
您现在的位置:论坛 盖世程序员(我猜到了开头 却没有猜到结局) 盖世程序员 > 第10章 在线网上支付(JSP+Swrvlet+JavaBean)
总共48087条微博

动态微博

查看: 2669|回复: 2

第10章 在线网上支付(JSP+Swrvlet+JavaBean)

[复制链接]

326

主题

72

听众

999

金钱

实习版主

该用户从未签到

优秀版主

跳转到指定楼层
楼主
发表于 2014-04-26 11:23:17 |只看该作者 |倒序浏览
网上支付是电子支付的一种形式,它是通过第三方提供的与银行之间的支付接口进行的即时支付方式,这种方式的好处在于可以直接把资金从用户的银行卡中转账到网站账户中,汇款马上到账,不需要人工确认。客户和商家之间可采用信用卡、电子钱包、电子支票和电子现金等多种电子支付方式进行网上支付,采用在网上电子支付的方式节省了交易的开销。! w; {; A! u* s9 c6 q; M1 m
  1. package com.cjg.servlet;
    3 g7 Y1 [4 v: z% M' Q  ]( |

  2. ' w( d" {! S) M" V5 o- F
  3. import java.io.IOException;8 v1 l- }$ t0 R2 ^

  4. ( G) u  J" e$ x& s  [
  5. import javax.servlet.ServletException;8 i0 Q# I& G. B
  6. import javax.servlet.http.HttpServlet;
    ' n7 [; X; P0 K4 I1 D; X
  7. import javax.servlet.http.HttpServletRequest;
    & [1 k% I0 T+ B0 ~! q  P
  8. import javax.servlet.http.HttpServletResponse;8 D5 j4 ]/ k; f0 u, r, d2 l3 ^

  9. " j5 I8 L2 Q9 \8 P1 ]3 \
  10. import com.cjg.tool.ReadConfigInfo;
    1 n4 J' A$ O0 y9 S" ?
  11. import com.cjg.tool.PanyMoneyTool;2 A8 i8 o9 D7 m" z/ W) i* ?
  12. 6 Q0 Q9 A- o" L+ ~0 R  k7 h+ p
  13. /**
    1 c% O, ^! k$ P% }1 ^6 L1 `* D
  14. * 响应银行支付结果请求# n3 t5 |: g+ Z2 i0 j
  15. * @author科帮网5 P, z' E& _2 i9 k
  16. *( }4 p$ c0 P- X5 ~; G; k
  17. */3 q9 A8 k' _& s5 I& Y
  18. public class PayMoneyResultResponse extends HttpServlet {+ ^- ~8 l1 t. q
  19. 2 O$ R$ l+ Y' \
  20.         public void doGet(HttpServletRequest request, HttpServletResponse response)7 G0 p( u+ `+ n2 k! n0 l# ~0 O
  21.                         throws ServletException, IOException {
    " w* @+ `9 Z! f4 F: O. R( R
  22.                 this.doPost(request, response);2 S! t+ e- }+ @6 J
  23.         }
    ) c& }& g" W$ r
  24. ; L6 M. V5 b4 O  G$ M& |
  25.         public void doPost(HttpServletRequest request, HttpServletResponse response)
    . ^  m. ?$ |) C3 k9 q. c) j
  26.                         throws ServletException, IOException {
    + k4 \( ^( ~0 Z& l" l) d3 \
  27.                 request.setCharacterEncoding("GBK");
    . n+ A% a7 {- U0 u9 G" X3 _
  28.                 String merchantID = ReadConfigInfo.getValue("p1_MerId"); // 商家ID
    7 I$ K3 p, C0 C+ ^' G
  29.                 String keyValue = ReadConfigInfo.getValue("keyValue"); // 商家密钥
    / J8 G1 G4 A# {% c( k: v' P7 h
  30.                
    0 l2 s, u% z3 _6 @& ]
  31.                 String sCmd = request.getParameter("r0_Cmd"); //业务类型7 j% y2 D0 h. B4 H. s& W
  32.                 String sResultCode = request.getParameter("r1_Code"); //扣款结果,该字段值为1时表示扣款成功.
    9 F* P- C0 {2 g0 v1 x  X/ K0 O
  33.                 String sTrxId = request.getParameter("r2_TrxId"); //YeePay易宝交易订单号- p3 J0 m6 ?( G1 a  f
  34.                 String amount = request.getParameter("r3_Amt");//扣款金额,交易结束后,YeePay易宝交易系统将实际扣款金额返回给商户
      P9 L2 s3 V% Q0 `1 d9 P! Y" f
  35.                 String currency = request.getParameter("r4_Cur");//交易币种,人民币为CNY
    % ?1 T5 C* a) t8 o8 }2 O1 ?/ N4 D
  36.                 String productId = request.getParameter("r5_Pid");//商品ID! D. V+ N6 e3 M& {' l& p1 k
  37.                 String orderId = request.getParameter("r6_Order");//商户订单号
    & C- o7 y* d9 w- M% o
  38.                 String userId = request.getParameter("r7_Uid");//YeePay易宝会员ID
    . U, W' i! V% g
  39.                 String mp  = request.getParameter("r8_MP");//商户扩展信息,可以任意填写1K 的字符串,交易返回时将原样返回
    3 L: s+ ?. j- p' L3 _- |" N- g
  40.                 String bType = request.getParameter("r9_BType");//交易结果通知类型,1: 交易成功回调(浏览器重定向)2: 交易成功主动通知(服务器点对点通讯)" {, U" w' k* Q( h% T
  41.                 String rb_BankId  = request.getParameter("rb_BankId");//支付银行
    4 q) r" g# L# s! L0 R3 B; K9 Q
  42.                 String rp_PayDate = request.getParameter("rp_PayDate");//在银行支付时的时间
    & C. r# [# _' M$ `# l! ?: G) d( x3 v
  43.                 String hmac = request.getParameter("hmac");//MD5交易签名" d6 I0 A/ `) q7 z0 n' i7 |! w
  44.                 3 z6 `' {/ m: ~4 ~2 C
  45.                 boolean result = PanyMoneyTool.verifyCallback(hmac, merchantID, sCmd, sResultCode, sTrxId, amount,
    * }& Z2 d1 N8 K! g: |0 e7 c% s+ i
  46.                                 currency, productId, orderId, userId, mp, bType, keyValue);: ^- }5 M. j5 m* ?1 [
  47.                 if(result){* y4 y4 N5 O! G( ]7 d
  48.                         if("1".equals(sResultCode)){
    5 U8 V5 C/ W, j- ~  v
  49.                                 //你们这个地方应该把数据库中订单的支付状态设置成已经支付.
    - f) [1 p" Y6 c, m4 H
  50.                                 String message = "订单号为:"+ orderId+ "的订单支付成功了";
    7 u. a6 v' |3 P7 u- K! p$ C' ]
  51.                                 message += ",用户支付了"+ amount +"元";4 w2 t1 c" v/ X- j& k, Z! M4 A
  52.                                 message +=",交易结果通知类型:";+ J0 t1 l. p) |
  53.                                 if("1".equals(bType)){
    ! m: G' {" ~1 y7 \
  54.                                          message += "浏览器重定向";, t) Y2 a, t. }5 {. I. B
  55.                                 }else if("2".equals(bType)){
    8 A, H( K: \7 S
  56.                                          message += "易宝支付网关后台程序通知";/ V/ ?; G" D% F* K
  57.                                 }
    * V* `# l* {9 w+ D- H, Y! X
  58.                                 message += ",易宝订单系统中的订单号为:"+ sTrxId;0 R. Q' N: Y( D; p$ g
  59.                                 request.setAttribute("message", message);& Q8 A# c$ ^5 F$ x- Z
  60.                         }else{
      o9 p5 O" `( S# V( K0 V
  61.                                 request.setAttribute("message", "用户支付失败");4 T) F9 ^( m) d3 x) V+ B6 j. ?
  62.                         }
    # _. s( R% }8 J7 a) w5 o2 E+ d1 G; j6 f
  63.                 }else{+ e- q2 `- @; W8 j3 R
  64.                         request.setAttribute("message", "数据来源不合法");
    3 w) y5 G2 O& c3 ?" x
  65.                 }% X5 J1 E* L' H7 ~1 ]% t
  66.                 request.getRequestDispatcher("/WEB-INF/page/payMoneyResult.jsp").forward(request, response);2 h0 S' A: M' v6 k) {  D# T
  67.         }7 `# Z1 M, _' Z+ N$ w1 @- A
  68. 1 ~! ~! [4 F) {! z( U3 `
  69. }, ~" d6 _2 m; f7 B  O
复制代码
资料下载地址:点击下载( ^: ~$ a2 H4 f4 m5 L

3 k. M$ V+ i) c6 s7 T; y& ^8 W  z( N" c; V! H6 M

科帮网 1、本主题所有言论和图片纯属会员个人意见,与本社区立场无关
2、本站所有主题由该帖子作者发表,该帖子作者与科帮网享有帖子相关版权
3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和科帮网的同意
4、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
7、科帮网管理员和版主有权不事先通知发贴者而删除本文


JAVA爱好者①群:JAVA爱好者① JAVA爱好者②群:JAVA爱好者② JAVA爱好者③ : JAVA爱好者③

12

主题

7

听众

684

金钱

四袋长老

该用户从未签到

活跃会员

沙发
发表于 2014-05-03 10:31:29 |只看该作者
没有连接地址啊
回复

使用道具 举报

3

主题

4

听众

133

金钱

三袋弟子

该用户从未签到

80后 推广达人

板凳
发表于 2014-05-14 08:10:02 |只看该作者
感觉安全性是个问题。。。
回复

使用道具 举报

快速回复
您需要登录后才可以回帖 登录 | 立即注册

   

关闭

站长推荐上一条 /1 下一条

发布主题 快速回复 返回列表 联系我们 官方QQ群 科帮网手机客户端
快速回复 返回顶部 返回列表