이 기사에서는 참조를 위해 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, httpservletrepsonse resp) servletexception, ioexception {properties propss = new Properties (); props.load (this.getClass (). getClassLoader (). getResourCeasStream ( "Payment.Properties")); /** 1. 13 매개 변수 준비*/문자열 p0_cmd = "구매"; // 비즈니스 유형, 고정 값 구매 문자열 p1_merid = propss.getProperty ( "p1_merid"); // 비즈니스 번호 코드, yibao 문자열의 고유 식별 p2_order = req.getparameter ( "oid"); // pass rstnat = 0.01 " 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"; // 응답 메커니즘, 고정 값 1/ * * 2. hmac의 계산 * 13 매개 변수가 필요합니다 * enctryption이 필요합니다. keyValue = props.getProperty ( "keyValue"); 문자열 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_needRespronge); /** 3. Yibao의 결제 게이트웨이로 리디렉션*/StringBuilder sb = new StringBuilder ( "https://www.yeepay.com/app-merchant-proxy/node"); sb.append ( "?"). Append ( "p0_cmd ="). Append (p0_cmd); sb.append ( "&"). Append ( "p1_merid ="). Append (p1_merid); sb.append ( "&"). Append ( "p2_order ="). Append (p2_order); sb.append ( "&"). Append ( "p3_amt ="). Append (p3_amt); sb.append ( "&"). Append ( "p4_cur ="). Append (p4_cur); sb.append ( "&"). Append ( "p5_pid ="). Append (p5_pid); sb.append ( "&"). Append ( "p6_pcat ="). Append (p6_pcat); sb.append ( "&"). Append ( "p7_pdesc ="). Append (p7_pdesc); sb.append ( "&"). Append ( "P8_URL ="). Append (P8_URL); sb.append ( "&"). Append ( "p9_saf ="). Append (p9_saf); sb.append ( "&"). Append ( "pa_mp ="). Append (PA_MP); sb.append ( "&"). Append ( "pd_frpid ="). Append (pd_frpid); sb.append ( "&"). Append ( "pr_needResponse ="). Append (pr_needResponse); sb.append ( "&"). Append ( "hmac ="). Append (hmac); resp.sendredirect (sb.tostring ()); 귀환 null;}3. 피드백 방법
지불이 성공하면 Yibao는 두 가지 방법으로 액세스합니다.
1. 사용자의 브라우저를 안내로 리디렉션합니다 (사용자가 브라우저를 닫으면 액세스 할 수 없습니다).
2. Yibao의 서버는 포인트 간 통신을 사용 하여이 방법에 액세스합니다. (성공으로 돌려 주어야합니다. 그렇지 않으면 Yibao 서버 가이 방법을 계속 호출합니다).
공개 문자열 (httpservletrequest req, httpservletreponse resp) servletexception, ioexception { /** 1. 12 매개 변수를 얻습니다* / string p1_merid = req.getParameter ( "p1_merid"); 문자열 r0_cmd = req.getParameter ( "r0_cmd"); 문자열 r1_code = req.getParameter ( "r1_code"); 문자열 r2_trxid = req.getParameter ( "r2_trxid"); 문자열 r3_amt = req.getParameter ( "r3_amt"); 문자열 r4_cur = req.getParameter ( "r4_cur"); 문자열 r5_pid = req.getParameter ( "r5_pid"); 문자열 r6_order = req.getParameter ( "r6_order"); 문자열 r7_uid = req.getParameter ( "r7_uid"); 문자열 r8_mp = req.getParameter ( "r8_mp"); 문자열 r9_btype = req.getParameter ( "r9_btype"); 문자열 hmac = req.getParameter ( "hmac"); / * * 2. keyValue를 얻습니다 */ 속성 propss = new Properties (); props.load (this.getClass (). getClassLoader (). getResourCeasStream ( "Payment.Properties")); 문자열 keyValue = props.getProperty ( "keyValue"); / * * 3. PAYNTUL의 확인 방법을 확인하여 발신자의 신원을 확인하기 위해 호출 *> 검증이 실패한 경우 : 오류 메시지를 저장하고 검증이 통과 된 경우 : * * 액세스 방법이 리디렉션되었는지 또는 지점 간 포인트인지를 결정합니다. 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, 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"를 반환합니다. } else if (r9_btype.equals ( "2")) {resp.getWriter (). print ( "success"); }} return null;}4.pay.jsp
<%@ page language = "java"import = "java.util.*"pageEncoding = "gbk"%> <%@ taglib prefix = "c"uri = "http://java.sun.com/jsp/jstl/jstl/core"%> <! aptype html public "-//01 과도기 // en "> <html> <head> <title> pay.jsp </title> <meta http-equiv ="pragma "content ="no-cache "> <meta http-equiv ="cache-control "content ="no-cache "> <meta http-equiv ="elepires "0"> <a http = "0". content = "keyword1, keyword2, keyword3"> <meta http-equiv = "description"content = "이것은 내 페이지입니다"> <!-<link rel = "stylesheet"type = "text/css"href = "styles.css">-> <link rel = "stylesheet"type/css " value = '/jss/css/order/pay.css'/> "> <script type ="text/javaScript "src ="<c : url value = '/jquery/jquery-1.5.1.js'/> "> </script> <script type ="text/javascript "> $ (function () {funct"). $ (이) 메소드 = "post"id = "form1"target = "_ top"> <input type = "hidden"name = "method"value = "지불"/> <입력 유형 = "hidden"name = "oid"value = "$ {order.oid}"/> <div> </div> <div style = "margin-left : 20px; <입력 ID = "ICBC-NET-B2C"유형 = "RAD type = "radio"name = "yh"value = "cmbchina-net-b2c"/> <img name = "cmbchina-net-b2c"align = "middle"src = "<c : url value = '/bank_img/cmb.bmp'/>"/> <입력 id = "abc-net-b2c"type = "yh" value = "abc-net-b2c"/> <img name = "abc-net-b2c"align = "middle"src = "<c : url value = '/bank_img/abc.bmp'/>"/> <입력 ID = "ccb-net-b2c"radio "name ="yh "value ="ccb-net-b2c "/>. 이름 = "ccb-net-b2c"align = "middle"src = "<c : url value = '/bank_img/ccb.bmp'///> </div> <div style ="margin-bottom : 20px; "> <input id ="bccb-net-b2c "type ="radio "values ="bccb-net-b2c " 이름 = "bccb-net-b2c"align = "middle"src = "<c : url value = '/bank_img/bj.bmp'// input id ="boco-net-b2c "type ="radio "name ="yh "value ="boco-net-b2c "/> <img name ="boco-net-b2c "allign ="boco-net-b2c "allign ="boco-net-b2c "allign ="boco-net-b2c "/>. value = '/bank_img/bcc.bmp'/// input 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 =" value = '/bank_img/cib.bmp'/// input id = "njcb-net-b2c"type = "radio"name = "yh"value = "njcb-net-b2c"/> <img name = "njcb-net-b2c"align = "middle"src = "<c : url value = '/bank_img/nanjimg. id = "input id ="njcb-net-b2c "type ="radio "name ="yh "value ="njcb-net-b2c "/> <img name ="njcb-net-b2c "align ="middle "src ="<c : url value = '/bank_img/nanjing.bmp'/// indiv> <입력 ID = "CMBC-NET-B2C"type = "radio"name = "yh"value = "cmbc-net-b2c"/> <img name = "cmbc-net-b2c"align = "middle"src = "<c : url value = '/bank_img/cmbc.bmp'// <input id =" "" "" "" ""input id = " 이름 = "yh"value = "ceb-net-b2c"/> <img name = "ceb-net-b2c"align = "middle"src = "<c : url value = '/bank_img/guangda.bmp'//"/> <input id = "boc-net-b2c"type "radio"name = "yh"value "boc-net-b2c"value " 이름 = "boc-net-b2c"align = "middle"src = "<c : url value = '/bank_img/bc.bmp'//"/> <input id = "pinganbank-net"type = "radio"name = "yh"value = "pinganbank-net"/> <img name = "pinganbank-net"allign "allign"allign "allign" value = '/bank_img/pingan.bmp'/// div> <div style = "margin-bottom : 20px;"> <input id = "cbhb-net-b2c"type = "radio"name = "yh"value = "cbhb-net-b2c"/> <img name = "cbhb-net-b2c"align = "src :"cbhb-net-b2c "<img name ="img name = "img name ="value = "cbhb-net-b2c"/> value='/bank_img/bh.bmp'//////input 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'///"/> "/input id ="nbcb-net-b2c "type ="radio "name ="yh "value ="nbcb-net-b2c "/> <img name ="nbcb-net-b2c "align ="middle "src ="<c : url value = '/bank_img/ningbo.bmp'/// <input id = ""net-net- " 이름 = "yh"value = "ecitic-net-b2c"/> <img name = "ecitic-net-b2c"align = "middle"src = "<c : url value = '/bank_img/zx.bmp'//"/> </div> <div style = "margin-bottom : 20px;"> <input id = "sdb-net-b2c =" value = "sdb-net-b2c"/> <img name = "sdb-net-b2c"align = "middle"src = "<c : url value = '/bank_img/sfz.bmp'//"/> <입력 Id = "gdb-net-b2c"radio "yh"value = "gdb-net-net-net-net-net b2c. 이름 = "gdb-net-b2c"align = "middle"src = "<c : url value = '/bank_img/gf.bmp'//"/> <input id = "shb-net-b2c"type = "radio"name = "yh"value = "shb-net-b2c"/> <img name = "shb-net-b2c"allign = "middon"c : " value = '/bank_img/sh.bmp'// "/> <입력 id ="spdb-net-b2c "type ="radio "name ="yh "value ="spdb-net-b2c "/> <img name ="spdb-net-b2c "align ="middle "src ="<c : url value =/bank_img/shpd.bmd.bmd.bmd.bmd.bmd.bmd.bmd.bmd.bmd.bmd.bmd. </div> <div style = "마진-바닥 : 20px;"> <입력 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.bmp '//"/inut. id = "bjrcb-net-b2c"type = "radio"name = "yh"value = "bjrcb-net-b2c"/> <img name = "bjrcb-net-b2c"align = "middle"src = "<c : url value = '/bank_img/beijingnongshang.bmp'/"/input id id id id id id id id. 유형 = "radio"name = "yh"value = "hxb-net-b2c"/> <img name = "hxb-net-b2c"align = "middle"src = "<c : url value = '/bank_img/hx.bmp'//"/> <input id = "cz-net-b2c"put <img name = "cz-net-b2c"align = "middle"src = "<c : url value = '/bank_img/zheshang.bmp'///// div> </div> <div style ="margin : 40px; "> <a href ="javascript : void $ ( '#form1'). " </div> </div> </form> </body> </html>결제. -Properties
P1_MERID = 10001126856KeyValue = 69Cl522AV6Q613II4W6U8K6XUW8VM1N6BFGYV769220IUYE9U37N4Y7RI4PLP8_URL = http/: // localhost/: 8080/goods?
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.