Este artigo compartilha o código específico do módulo de pagamento do Java Online Mall para sua referência. O conteúdo específico é o seguinte
1. Preparação de pagamento
public string pageypre (httpServletRequest req, httpServletResponse resp) lança servletexception, ioexception {req.setattribute ("order", orderService.load (req.getParameter ("oid")); retornar "f: /jsps/order/pay.jsp";}2. Método de pagamento
Pagamento public String (httpServletRequest Req, httpServletResponse resp) lança servletexception, ioexception {Properties props = new Properties (); props.load (this.getclass (). getClassLoader (). getResourceasStream ("pagey.properties")); /** 1. Prepare 13 parâmetros*/string p0_cmd = "buy"; // tipo de negócio, valor fixo Compre string p1_merid = props.getProperty ("p1_merid"); // o código do número de negócios, a identificação exclusiva na string yibao p2_order = p2_orth = p2_getParâmetro ("oid"; p4_cur = "cny"; // moeda comercial, valor fixo cny string p5_pid = ""; // nome do produto string p6_pcat = ""; // tipo de produto string p7_pdesc = ""; // produto descrição string p8_url = props.getProperty ("p8_url"); // após o sucesso é bem -sucedido, yibs. String p9_saf = ""; // Endereço de entrega String pa_mp = ""; // Informações estendidas string pd_frpid = req.getParameter ("yh"); // canal de pagamento string pr_needResponse = "1"; // mecanismo de resposta, o valor fixo 1/ * * 2. = props.getProperty ("KeyValue"); String hmac = PaggetUtil.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, NNEEDR, P8_URL, /** 3. Redirecionar para o gateway de pagamento de 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 ()); retornar nulo;}3. Método de feedback
Quando o pagamento for bem -sucedido, Yibao o acessará de duas maneiras:
1. Guie o navegador do usuário para redirecionar (se o usuário fechar o navegador, ele não poderá acessar isso)
2. O servidor de Yibao acessará esse método usando a comunicação ponto a ponto. (Você deve retribuir ao sucesso, caso contrário, o servidor Yibao continuará chamando esse método)
public string back (httpServletRequest req, httpServletResponse resp) lança servletexception, ioexception { /** 1. Obtenha 12 parâmetros* / string p1_merid = req.getParameter ("p1_merid"); 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"); String hmac = req.getParameter ("hmac"); / * * 2. Get KeyValue */ Properties Props = new Properties (); props.load (this.getclass (). getClassLoader (). getResourceasStream ("pagey.properties")); String keyvalue = props.getProperty ("keyvalue"); / * * 3. Ligue para o método de verificação do PageDUtil para verificar a identidade do chamador *> se a verificação falhar: Salve a mensagem de erro e encaminhe-a para msg.jsp *> se a verificação for aprovada: * * Determine se o método de acesso é redirecionado ou ponto a ponto * se redirecionou * Modificar o status da ordem, salvar o status de sucesso, para a frente para MSG. bool = PaggentUtil.VififyCallback (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 ("código", "erro"); req.setattribute ("msg", "assinatura inválida, pagamento falhado! (Você não é uma boa pessoa)"); retornar "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", "Parabéns, o pagamento é bem -sucedido!"); retornar "f: /jsps/msg.jsp"; } else if (r9_btype.equals ("2")) {resp.getWriter (). print ("sucessor"); }} retornar null;}4.Pay.jsp
<%@ Page Language = "java" import = "java.util. Transitória // pt "> <html> <head> <title> pay.jsp </title> <meta http-equiv =" Pragma "content =" no-cache "> <meta http-equiv =" cache-controle "content =" no-cache "> <meta http-ouquiv =" expira " Content = "Palavra-chave1, palavra-chave2, palavra-chave3"> <meta http-equiv = "description" content = "Esta é a minha página"> <!-<link rel = "Stylesheet" type = "text/css" href = "styles.css">-> <link "" Stylesheet "type =" text/cs/cs "hf" hf hf "hf hf hf" c: "types/" text/"text/cs" hf "hf hf" hf (link "<stylesheet" type = "text/cs/" value = '/jss/css/order/pay.css'/> "> <script type =" text/javascript "src =" <c: url value = '/jQuery/jQuery-1.5.1.js'/> "> </script> <script =" text/javscript "> (funcion (função (n) ((script> <script (script) (iMcript-1.5.1.js () (script> (script) (script) (script-1) $ (this) .attr ("nome")). Att ("verificado", true); método = "post" id = "form1" target = "_ top"> <input type = "hidden" name = "método" value = "pagamento"/> <input type = "hidden" name = "oid" value = "$ {order.oid}"/> <div> <div> <div> online banking </div> <div estilo = "margin-left: 20p; <entrada de entrada = "icbc-net-b2c" type = "radio" name = "yh" value = "icbc-net-b2c" checked = "checked"/> <img name = "icbc-Net-b2c" align = "middle" src = "<c: urbs = '/Bank_Img/icbc.bmp" src = "<c: urb ='/bancs_img/icbc.bmp" src = "<c: urb = '/bancs/bank_img/icbc.bmp" " type = "Radio" name = "yh" value = "cmbchina-net-b2c"/> <img name = "cmbchina-net-b2c" align = "middle" src = "<c: url value = '/bank_img/cmb.bmp'"/> <name id = "abc-net-b2" value = "abc-net-b2c"/> <img name = "abc-net-b2c" align = "médio" src = "<c: url value = '/bak_img/abc.bmp'/>"/> <entrada id = "ccb-net-b2c" type = "" name = "yh" name = "ccb-net-b2c" align = "médio" src = "<c: url value = '/bak_img/ccb.bmp' ///> </div> <div style =" margin-bottom: 20px; "> <input id =" bccb-net-b2c "tipo =" names ") name = "bccb-net-b2c" align = "médio" src = "<c: url value = '/bak_img/bj.bmp' /// de entrada id =" boco-Net-b2c "type =" radio "name =" yh "value =" boco-Net-b2c "/> <img" bocon = "yh" value = '/bak_img/bcc.bmp' /// entrada de entrada = "boco-net-b2c"/> <entrada de entrada = "cib-net-b2c" type = "radio" name = "yh" value = "cib-net-b2c"/> <img name = "cib-net-b2c" align = "MIDLE" "SRC" sr = "cib-net-b2c" align "" value = '/bak_img/cib.bmp' /// entrada id = "njcb-net-b2c" type = "radio" name = "yh" value = "njcb-net-b2c"/> <img name = "njcb-net-b2c" align = "src =" <c: url) id = "ID de entrada =" njcb-net-b2c "type =" radio "name =" yh "value =" njcb-net-b2c "/> <img name =" njcb-net-b2c "align =" middle "src =" <c: url = '/bak_iMg/nanjing.bmp' // <entrada de entrada = "cmbc-net-b2c" type = "radio" name = "yh" value = "cmbc-net-b2c"/> <img name = "cmbc-net-b2c" align = "médio" src = "<c: url value = '/bank_img/cmbc.bmp'/" name = "yh" value = "ceb-net-b2c"/> <img name = "ceb-net-b2c" align = "médio" src = "<c: url value = '/bak_img/guangda.bmp' ///"/> <input id = "boc-net-b2c" tipo = "Radio name = "boc-net-b2c" align = "médio" src = "<c: url value = '/bak_img/bc.bmp' ///"/> <input id = "pinganBank-net" type = "radio" name = "yh" "" mIdanMet-net "/" <mg = "pingo" " value = '/bak_img/pingan.bmp' /// div> <div style = "margin-bottom: 20px;"> <input id = "cbhb-net-b2c" type = "radio" name = "yh" value = "cbhb-net-b2c"/> <iMg name = "cbh" value = '/bak_img/bh.bmp' ///// input id = "hkbea-net-b2c" type = "radio" name = "yh" value = "hkbea-net-b2c"/> <img name = "hkbea-net-b2c" align = "middle 'sc =" <c: "url/urm/" hkbea-net-b2c "align =" middle' sc = "<c:" "/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="ECITIC-NET-B2C" type = "Radio" name = "yh" value = "ecítico-net-b2c"/> <img name = "ecitic-net-b2c" align = "middle" src = "<c: url value = '/banck_img/zx.bmp' //"/> </div> <idgin = "margin-bottom: 20px; type="radio" name="yh" value="SDB-NET-B2C"/> <img name="SDB-NET-B2C" align="middle" src="<c:url value='/bank_img/sfz.bmp'///"/> <input id="GDB-NET-B2C" type="radio" name="yh" value = "gdb-net-b2c"/> <img name = "gdb-net-b2c" align = "médio" src = "<c: url value = '/bak_img/gf.bmp' ///"/> <input id = "shb-Net-b2c" type = "radio" <name = "yh" yh " name = "shb-net-b2c" align = "médio" src = "<c: url value = '/bak_img/sh.bmp' ///"/> <input id = "spdb-net-b2c" type = "radio" name = "yh"/"spdb-net-b2c"/> <img name = " src = "<c: url value = '/bak_img/shpd.bmp' ///"/> </div> <div style = "margin-botom: 20px;"> <input id = "post-Net-b-b" type = "Radio" name = "yh" "=" pós-net-b2c "/> <Img" " src = "<c: url value = '/bak_img/post.bmp' //"/> "/input id =" bjrcb-net-b2c "type =" radio "name =" yh "value =" bjrcb-net-b2c "/> <img name =" bjrcb-Net: " value = '/Bank_Img/beijingnongshang.bmp' // "/>"/input id = "hxb-net-b2c" type = "radio" name = "yh" value = "hxb-net-b2c"/> <img name = "hxb-b2c" align = "médio" src => value='/bank_img/hx.bmp'///"/> <input id="CZ-NET-B2C" type="radio" name="yh" value="CZ-NET-B2C"/> <img name="CZ-NET-B2C" align="middle" src="<c:url value='/bank_img/zheshang.bmp'//////div> </div> <div style = "margem: 40px;"> <a href = "javascript: void $ ('#form1'). submit ();"> a seguirPagamento.Properties
p1_merID = 10001126856KeyValue = 69Cl522AV6Q613II4W6U8K6XUW8VM1N6BFGYV769220IUYE9U37N4Y7RI4PLP8_URL = HTTPO/: // LocalHost/: 8080
O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.