บทความนี้แชร์รหัสเฉพาะของโมดูลการชำระเงินมอลล์ Java Online Mall สำหรับการอ้างอิงของคุณ เนื้อหาเฉพาะมีดังนี้
1. การเตรียมการชำระเงิน
การชำระเงินสตริงสาธารณะ (httpservletrequest req, httpservletResponse resp) โยน servletexception, ioexception {req.setAttribute ("order", orderervice.load (req.getparameter ("OID"))); return "f: /jsps/order/pay.jsp";}2. วิธีการชำระเงิน
การชำระเงินสตริงสาธารณะ (httpservletrequest req, httpservletresponse resp) พ่น servletexception, ioexception {properties props = คุณสมบัติใหม่ (); props.load (this.getClass (). getClassLoader (). getResourceasstream ("payment.properties")); /** 1. เตรียม 13 พารามิเตอร์*/สตริง p0_cmd = "ซื้อ"; // ประเภทธุรกิจ, ค่าคงที่ซื้อสตริง p1_merid = props.getProperty ("p1_merid"); // รหัสหมายเลขธุรกิจการระบุที่ไม่ซ้ำกันในสตริง yibao p2_order = req.getParameter p4_cur = "cny"; // การค้าสกุลเงิน, ค่าคงที่ cny สตริง p5_pid = ""; // ชื่อผลิตภัณฑ์สตริง p6_pcat = ""; // ประเภทผลิตภัณฑ์สตริง p7_pdesc = ""; // คำอธิบายผลิตภัณฑ์สตริง p8_url = props.getProperty ("p8_url") สตริง p9_saf = ""; // ที่อยู่การจัดส่งสตริง 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 /** 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 ("&"). ผนวก ("p2_order ="). ผนวก (p2_order); sb.append ("&"). ผนวก ("P3_AMT ="). ผนวก (P3_AMT); sb.append ("&"). ผนวก ("p4_cur =") ผนวก (p4_cur); sb.append ("&"). ผนวก ("P5_PID ="). ผนวก (P5_PID); sb.append ("&"). ผนวก ("p6_pcat ="). ผนวก (p6_pcat); 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 ()); คืนค่า null;}3. วิธีการตอบรับ
เมื่อการชำระเงินสำเร็จ Yibao จะเข้าถึงได้สองวิธี:
1. คู่มือเบราว์เซอร์ของผู้ใช้เพื่อเปลี่ยนเส้นทาง (หากผู้ใช้ปิดเบราว์เซอร์เขาจะไม่สามารถเข้าถึงสิ่งนี้ได้)
2. เซิร์ฟเวอร์ของ Yibao จะเข้าถึงวิธีนี้โดยใช้การสื่อสารแบบจุดต่อจุด (คุณต้องตอบแทนความสำเร็จไม่เช่นนั้นเซิร์ฟเวอร์ Yibao จะเรียกใช้วิธีนี้ต่อไป)
สตริงสาธารณะย้อนกลับ (httpservletrequest req, httpservletResponse resp) พ่น servletexception, ioexception { /** 1. รับ 12 พารามิเตอร์* / string p1_merid = req.getparameter ("p1_merid"); String r0_cmd = req.getParameter ("R0_CMD"); String R1_Code = req.getParameter ("R1_Code"); สตริง 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"); สตริง r8_mp = req.getParameter ("R8_MP"); String r9_btype = req.getParameter ("R9_BTYPE"); สตริง hmac = req.getParameter ("HMAC"); / * * 2. รับ keyValue */ คุณสมบัติอุปกรณ์ประกอบฉาก = คุณสมบัติใหม่ (); props.load (this.getClass (). getClassLoader (). getResourceasstream ("payment.properties")); สตริง keyValue = props.getProperty ("keyValue"); / * * 3. วิธีการตรวจสอบการชำระเงินของ Call เพื่อตรวจสอบตัวตนของผู้โทร *> หากการตรวจสอบล้มเหลว: บันทึกข้อความแสดงข้อผิดพลาดและส่งต่อไปยัง msg.jsp *> หากการตรวจสอบผ่าน: * * ตรวจสอบว่าวิธีการเข้าถึงถูกนำไปข้างหน้า BOOL = PaymentUtil.VerifyCallback (HMAC, P1_MERID, R0_CMD, R1_CODE, R2_TRXID, R3_AMT, R4_CUR, R5_PID, R6_ORDER, R7_UID, R8_MP, R9_BTYPE, Keyveype); if (! bool) {req.setAttribute ("รหัส", "ข้อผิดพลาด"); req.setAttribute ("msg", "ลายเซ็นที่ไม่ถูกต้อง, การชำระเงินล้มเหลว! (คุณไม่ใช่คนดี)"); return "f: /jsps/msg.jsp"; } if (r1_code.equals ("1")) {orderservice.updatestatus (r6_order, 2); if (r9_btype.equals ("1")) {req.setAttribute ("รหัส", "ความสำเร็จ"); req.setAttribute ("msg", "ขอแสดงความยินดีการชำระเงินประสบความสำเร็จ!"); return "f: /jsps/msg.jsp"; } อื่นถ้า (r9_btype.equals ("2")) {resp.getWriter (). พิมพ์ ("ความสำเร็จ"); }} return null;}4.pay.jsp
<%@ page language = "java" import = "java.util.*" pageencoding = "gbk"%> <%@ taglib คำนำหน้า = "c" uri = "http://java.sun.com/jsp/jstl/core"%> transitional // en "> <html> <head> <title> pay.jsp </title> <meta http-equiv =" pragma "content =" no-cache "> <meta http-equiv =" cache-control "เนื้อหา =" no-cache "> content = "keyword1, keyword2, keyword3"> <meta http-equiv = "คำอธิบาย" content = "นี่คือหน้าของฉัน"> <!-<link rel = "stylesheet" type = "text/css" href = "styles.css">-> <link rel = "stylesheet" value = '/jss/css/order/pay.css'/> "> <script type =" text/javascript "src =" <c: url value = '/jQuery/jQuery-1.5.1.js'/> "> </script> <script type =" ข้อความ $ (นี่) .attr ("ชื่อ")). attr ("ตรวจสอบ", จริง); method = "post" id = "form1" target = "_ top"> <input type = "hidden" name = "method" value = "การชำระเงิน"/> <อินพุต type = "hidden" name = "oid" value = "$ {order.oid}"/> <div> id = "icbc-net-b2c" type = "Radio" name = "yh" value = "icbc-net-b2c" ตรวจสอบ = "ตรวจสอบ"/> <img name = "icbc-net-b2c" Align = "Middle" Src = "<c: url value = '/bank_img/icbc name = "yh" value = "cmbchina-net-b2c"/> <img name = "cmbchina-net-b2c" align = "กลาง" src = "<c: url value = '/bank_img/cmb.bmp' name = "abc-net-b2c" align = "middle" src = "<c: url value = '/bank_img/abc.bmp'/>"/> <อินพุต id = "ccb-net-b2c" type = "Radio" name = "yh" value = "ccb-net-b2c"/> value = '/bank_img/ccb.bmp' ///> </div> <div style = "margin-bottom: 20px;"> <อินพุต id = "bccb-net-b2c" type = "Radio" name = "yh" value = "bccb-net-b2c"/> value = '/bank_img/bj.bmp' /// อินพุต id = "boco-net-b2c" type = "วิทยุ" ชื่อ = "yh" value = "boco-net-b2c"/> <img name = "boco-net-b2c id = "boco-net-b2c"/> <อินพุต id = "cib-net-b2c" type = "radio" name = "yh" value = "cib-net-b2c"/> <img name = "cib-net-b2c" allign = "กลาง" src = " type = "radio" name = "yh" value = "njcb-net-b2c"/> <img name = "njcb-net-b2c" align = "กลาง" src = "<c: url value = '/bank_img/nanjing.bmp' ///////////////////////////////////////////// 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' //"/> <อินพุต id = "ceb-net-b2c name = "ceb-net-b2c" align = "middle" src = "<c: url value = '/bank_img/guangda.bmp' ////"/> <อินพุต id = "boc-net-b2c" type = "Radio" name = "yh" value = "boc-net-b2c"/> value = '/bank_img/bc.bmp' //// "/> <อินพุต id =" pinganbank-net "type =" Radio "name =" yh "value =" pinganbank-net "/> <img name =" pinganbank-net " style = "margin-bottom: 20px;"> <input id = "cbhb-net-b2c" type = "Radio" name = "yh" value = "cbhb-net-b2c"/> <img name = "cbhb-b2c" middle "middle" src = " id = "hkbea-net-b2c" type = "Radio" name = "yh" value = "hkbea-net-b2c"/> <img name = "hkbea-net-b2c" Align = "Middle" Src = "<c: url value = '/bank_img/dy.bmp' /// name = "yh" value = "nbcb-net-b2c"/> <img name = "nbcb-net-b2c" align = "กลาง" src = "<c: url value = '/bank_img/ningbo.bmp' //////////////-2 ต้น name = "ecitic-net-b2c" allign = "middle" src = "<c: url value = '/bank_img/zx.bmp' ////"/> </div> <div style = "margin-bottom: 20px;"> <อินพุต id = "sdb-net-b2c name = "sdb-net-b2c" allign = "middle" src = "<c: url value = '/bank_img/sfz.bmp' ////"/> <อินพุต id = "gdb-net-b2c" type = "Radio" name = "value =" gdb-net-b2c "/> src = "<c: url value = '/bank_img/gf.bmp' ////"/> <อินพุต id = "shb-net-b2c" type = "radio" name = "yh" value = "shb-net-b2c"/> <img name = "shb-net-b2c value = '/bank_img/sh.bmp' ///// "/> <อินพุต id =" spdb-net-b2c "type =" radio "name =" yh "value =" spdb-net-b2c "/> <img name =" spdb-b2c "middle =" middle "src =" <div style = "margin-bottom: 20px;"> <input id = "post-net-b2c" type = "Radio" name = "yh" value = "post-net-b2c"/> <img name = "post-net-b2c" allign = "กลาง" src = "<c: url value = '/bank_img/post.bm type = "radio" name = "yh" value = "bjrcb-net-b2c"/> <img name = "bjrcb-net-b2c" align = "กลาง" 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' ////"/> <อินพุต = "cz-net-b2c Align = "Middle" src = "<c: url value = '/bank_img/zheshang.bmp' //////////////////////////////////////////////////////////////if>Payment.properties
P1_Merid = 10001126856KEYVALUE = 69CL522AV6Q613II4W6U8K6XUW8VM1N6BFGYV769220IUYE9U37N4Y7RI4PLP8_URL = HTTP/: // localhost/: 8080/: 8080
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น