تشارك هذه المقالة الكود المحدد لوحدة الدفع في Java Online Mall للرجوع إليها. المحتوى المحدد كما يلي
1. إعداد الدفع
Public String PaymentPre (httpservletrequest req ، httpservletresponse resp) يلقي servletexception ، ioException {req.setAttribute ("order" ، orderService.load (req.getParameter ("OID"))) ؛ إرجاع "f: /jsps/order/pay.jsp" ؛}2. طريقة الدفع
دفع السلسلة العامة (httpservletrequest req ، httpservletresponse resp) servletexception ، ioException {properties props = new properties () ؛ props.load (this.getClass (). getClassloader (). /**. = "CNY" ؛ // العملة التجارية ، القيمة الثابتة CNY String P5_PID = "" "؛ // اسم المنتج سلسلة p6_pcat =" "؛ // نوع المنتج سلسلة p7_pdesc =" " السلسلة p9_saf = "" ؛ // string string string pa_mp = "" ؛ // سلسلة المعلومات الموسعة pd_frpid = req.getParameter ("yh") ؛ // سلسلة قناة الدفع pr_needresponse = "1" keyvalue = props.getProperty ("keyvalue") ؛ String HMAC = paymentutil.buildhmac (p0_cmd ، p1_merid ، p2_order ، p3_amt ، p4_cur ، p5_pid ، p6_pcat ، p7_pdesc ، p8_url ، p9_saf ، pa_mp ، pd_frpid ، pr_needreesponse ، keyvalue) ؛ /** 3. إعادة التوجيه إلى بوابة الدفع الخاصة بـ Yibao*/StringBuilder SB = جديد StringBuilder ("https://www.yeepay.com/app-merchant-proxy/node") ؛ sb.append ("؟"). إلحاق ("p0_cmd ="). إلحاق (p0_cmd) ؛ sb.append ("&"). إلحاق ("p1_merid ="). إلحاق (p1_merid) ؛ sb.append ("&") sb.append ("&"). إلحاق ("p3_amt ="). إلحاق (p3_amt) ؛ sb.append ("&"). إلحاق ("p4_cur ="). إلحاق (p4_cur) ؛ sb.append ("&"). إلحاق ("p5_pid ="). إلحاق (p5_pid) ؛ sb.append ("&") sb.append ("&"). إلحاق ("p7_pdesc ="). إلحاق (p7_pdesc) ؛ sb.append ("&"). إلحاق ("p8_url ="). إلحاق (p8_url) ؛ sb.append ("&"). إلحاق ("p9_saf ="). إلحاق (p9_saf) ؛ sb.append ("&"). إلحاق ("pa_mp ="). إلحاق (pa_mp) ؛ sb.append ("&"). إلحاق ("pd_frpid ="). إلحاق (pd_frpid) ؛ sb.append ("&"). إلحاق ("pr_needResponse ="). إلحاق (pr_needResponse) ؛ sb.append ("&"). إلحاق ("hmac ="). إلحاق (HMAC) ؛ Resp.SendRedirect (SB.ToString ()) ؛ إرجاع فارغ ؛}3. طريقة التغذية المرتدة
عندما تكون الدفع ناجحة ، سوف يصل yibao إلى طريقتين:
1. توجيه متصفح المستخدم لإعادة توجيه (إذا أغلق المستخدم المتصفح ، فلن يتمكن من الوصول إلى هذا)
2. سيصل خادم Yibao إلى هذه الطريقة باستخدام اتصال من نقطة إلى نقطة. (يجب أن ترد إلى النجاح ، وإلا فإن خادم Yibao سيستمر في استدعاء هذه الطريقة)
Back String Back (httpservletrequest req ، httpservletresponse resp) يلقي servletexception ، ioException { /* 1. String r0_cmd = req.getParameter ("r0_cmd") ؛ string r1_code = req.getParameter ("r1_code") ؛ String r2_trxid = req.getParameter ("r2_trxid") ؛ String r3_amt = req.getParameter ("r3_amt") ؛ String r4_cur = req.getParameter ("r4_cur") ؛ String r5_pid = req.getParameter ("r5_pid") ؛ String r6_order = req.getParameter ("r6_order") ؛ String r7_uid = req.getParameter ("r7_uid") ؛ String r8_mp = req.getParameter ("r8_mp") ؛ String r9_btype = req.getParameter ("r9_btype") ؛ سلسلة hmac = req.getParameter ("HMAC") ؛ / * * 2. احصل على keyvalue */ properties props = خصائص جديدة () ؛ props.load (this.getClass (). getClassloader (). سلسلة keyvalue = props.getProperty ("keyvalue") ؛ / * * 3. اتصل بمدفوعات التحقق من PaymentUtil للتحقق من هوية المتصل *> إذا فشل التحقق: احفظ رسالة الخطأ وإعادة توجيهها إلى msg.jsp *> إذا مر التحقق Bool = payerutil.verifyCallback (HMAC ، P1_merid ، r0_cmd ، r1_code ، r2_trxid ، r3_amt ، r4_cur ، r5_pid ، r6_order ، r7_uid ، r8_mp ، r9_btype ، keyvalue) ؛ if (! bool) {req.setattribute ("code" ، "error") ؛ req.setattribute ("MSG" ، "توقيع غير صالح ، فشل الدفع! (أنت لست شخصًا جيدًا)") ؛ إرجاع "f: /jsps/msg.jsp" ؛ } if (r1_code.equals ("1")) {orderservice.updatestatus (r6_order ، 2) ؛ if (r9_btype.equals ("1")) {req.setattribute ("code" ، "success") ؛ req.setattribute ("MSG" ، "تهانينا ، الدفع ناجح!") ؛ إرجاع "f: /jsps/msg.jsp" ؛ } آخر إذا (r9_btype.equals ("2")) {resp.getWriter (). print ("success") ؛ }} إرجاع فارغ ؛}4.pay.jsp
<٪@ page language = "java" import = "java.util. Transitional // en "> <html> <head> <title> pay.jsp </itlem> <meta http-equiv =" pragma "content =" no-cache "> <meta http-equiv =" cache-control " content = "keyword1 ، keyword2 ، keyword3"> <meta http-equiv = "description" content = "this is my page"> <!-<link rel = "stylesheet" type = "text/css" href = "styles.css"-> <link rel = "text" type = "text/css" value = '/jss/css/order/pay.css'/> "> <script type =" text/javaScript "src =" <c: url value = '/jQuery/jQuery -1.5.1.js'/> "> </script> <script type/javascript"> $ ($ ("$ (" img ". $ (this) .attr ("name")). attr ("تم التحقق" ، صواب) ؛ method = "post" id = "form1" target = "_ top"> <input type = "hidden" name = "method" value = "payment"/> <input type = "Hidden" id = "icbc-net-b2c" type = "radio" name = "yh" value = "icbc-net-b2c" checked = "checked"/> <img name = "icbc-net-b2c name = "yh" value = "cmbchina-net-b2c"/> <img name = "cmbchina-net-b2c" align = "middle" src = "<c: url value = '/bank_img/cmb.bmp'/> <conform id =" abc-net-b2c "type = name = "abc-net-b2c" align = "middle" src = "<c: url value = '/bank_img/abc.bmp'/>"/> <input id = "ccb-net-b2c" type = "radio" name = "yH" value = '/bank_img/ccb.bmp' ///> </viv> <div style = "margin-bottom: 20px ؛"> <input id = "bccb-net-b2c" type = "radio" name = "src = c:" midle src = "midle" value = '/bank_img/bj.bmp' /// input id = "boco-net-b2c" type = "radio" name = "yh" value = "boco-net-b2c"/> <img name = "boco-net-b2c" align = "middle" id = "boco-net-b2c"/> <input id = "cib-net-b2c" type = "radio" name = "yh" value = "cib-net-b2c"/> <img name = "cib-net-b2c" align = "middle" src = "<c: url value = '/bank_img/cib type = "radio" name = "yh" value = "njcb-net-b2c"/> <img name = "njcb-net-b2c" align = "middle" src = "<c: url value = '/bank_img/nanjing.bmp' /// input id =" njcb-net-b2c value = "njcb-net-b2c"/> <img name = "njcb-net-b2c" align = "middle" src = "<c: url value = '/bank_img/nanjing.bmp' /// indiv> <div style =" margin-bottom: 20px ؛ value = "cmbc-net-b2c"/> <img name = "cmbc-net-b2c" align = "middle" src = "<c: url value = '/bank_img/cmbc.bmp' // name = "CEB-NET-B2C" align = "middle" src = "<c: url value = '/bank_img/guangda.bmp' /// value = '/bank_img/bc.bmp' /// "/> <input id =" pinganbank-net "type =" radio "name =" yh " style = "margin-bottom: 20px ؛"> <input id = "cbhb-net-b2c" type = "radio" name = "yh" id = "hkbea-net-b2c" type = "radio" name = "yh" value = "hkbea-net-b2c"/> <img name = "hkbea-net-b2c" align = "middle" src = "n: url value = '/bank_img/dy.bmp' /// name = "yh" value = "nbcb-net-b2c"/> <img name = "nbcb-net-b2c" align = "middle" src = "<c: url value = '/bank_img/ningbo.bmp' ///"/> <propef id = "ecit-net-b2c type =" radio = <img name = "ecitic-net-b2c" align = "middle" src = "<c: url value = '/bank_img/zx.bmp' ///"/> </div> <div style = "margin-bottom: 20px ؛ name = "sdb-net-b2c" align = "middle" src = "<c: url value = '/bank_img/sfz.bmp' ///"/> <input id = "gdb-net-b2c" type = "radio" name = "yh src = "<c: url value = '/bank_img/gf.bmp' ///"/> <input id = "shb-net-b2c" type = "radio" value = '/bank_img/sh.bmp' /// "/> <input id =" spdb-net-b2c "type =" radio "name =" yh " <div style = "margin-bottom: 20px ؛"> <input id = "post-net-b2c" type = "radio" name = "yh" value = "post-net-b2c"/> <img name = "post-net-b2c" align = "middle" src = "<c: url value = '/bank_img/post. type = "radio" name = "yh" value = "bjrcb-net-b2c"/> <img name = "bjrcb-net-b2c" align = "middle" src = "<c: url value = '/bank_img/beijingnongshang.bmp' //"/> value = "hxb-net-b2c"/> <img name = "hxb-net-b2c" align = "middle" src = "<c: url value = '/bank_img/hx.bmp' ///"/> <input id = "cz-net-b2c align = "middle" src = "<c: url value = '/bank_img/zheshang.bmp' ///// div> </div> <div style =" margin: 40px ؛ "> <a href =" javaScript: void $ ('#form1').payment.properties
p1_merid = 10001126856KeyValue = 69Cl522AV6Q613II4W6U8K6XUW8VM1N6BFGYV769220IUYE9U9U37N4Y7RI4PLP8_URL = http/: // localhost/: 8080/orderServERVELT؟
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.