Cet article partage le code spécifique du module de paiement du centre commercial Java Online pour votre référence. Le contenu spécifique est le suivant
1. Préparation de paiement
Public String PaymentPre (httpServletRequest req, httpservletResponse resp) lève ServletException, ioException {req.setAttribute ("Order", OrderService.Load (req.getParameter ("OID"))); retourner "f: /jsps/order/pay.jsp";}2. Méthode de paiement
Paiement de chaîne publique (httpServletRequest req, httpServletResponse resp) lève ServletException, ioException {Properties props = new Properties (); Prophes.load (this.getClass (). GetClassLoader (). GetResourCeAsStream ("PAYS.Properties")); / * * 1. Préparer 13 paramètres * / chaîne p0_cmd = "acheter"; // type d'entreprise, valeur fixe acheter chaîne p1_merid = props.getProperty ("p1_merid"); // le code du numéro d'entreprise, identification unique dans le code yibao p2_or p4_cur = "cny"; // devise de commerce, valeur fixe cny chaîne p5_pid = ""; // name de produit chaîne p6_pcat = ""; // type de type chaîne p7_pdesc = ""; // la chaîne de description p8_url = props.getproperty ("p8_url"); // après le paiement est réussi, yibao accédera à cette adresse. Chaîne p9_saf = ""; // Adresse d'expédition chaîne PA_MP = ""; // chaîne d'informations étendue pd_frpid = req.getParameter ("yh"); // chaîne de canaux de paie keyValue = props.getProperty ("keyValue"); String HMAC = PAYSETUTIL.BUILDHMAC (P0_CMD, P1_MERID, P2_ORD, P3_AMT, P4_CUR, P5_PID, P6_PCAT, P7_PDESC, P8_URL, P9_SAF, PA_MP, PD_FRPID, PR_NEEDRESPATION, KEYVALUE); / * * 3. Rediriger vers la passerelle de paiement 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_NEEDESPONSE); SB.APPEND ("&"). APPEND ("HMAC ="). APPEND (HMAC); resp.sendRedirect (sb.toString ()); retourner null;}3. Méthode de rétroaction
Lorsque le paiement réussit, Yibao y accédera de deux manières:
1. Guide le navigateur de l'utilisateur à rediriger (si l'utilisateur ferme le navigateur, il ne pourra pas y accéder)
2. Le serveur de Yibao accédera à cette méthode en utilisant la communication point à point. (Vous devez redonner au succès, sinon le serveur Yibao continuera d'appeler cette méthode)
public String back (httpsservletRequest req, httpServletResponse resp) lève Servlexception, ioException {/ * * 1. Get 12 Paramètres * / 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. Obtenez keyValue * / Properties props = new Properties (); Prophes.load (this.getClass (). GetClassLoader (). GetResourCeAsStream ("PAYS.Properties")); String keyValue = props.getProperty ("keyValue"); / * * 3. Appelez la méthode de vérification du paiement du paiement pour vérifier l'identité de l'appelant *> Si la vérification échoue: Enregistrez le message d'erreur et transférez-le à msg.jsp *> si la vérification passe: * * Déterminez si la méthode d'accès est redirigé ou point à point, si il est redirigé * Modifiez le statut de commande, modifiez-le sur le statut de commande * Bool = PaymentTutil.VerifyCallback (HMAC, P1_Merid, R0_CMD, R1_Code, R2_TRXID, R3_AMT, R4_CUR, R5_PID, R6_ORD, R7_UID, R8_MP, R9_BTYPE, KEYVALUE); if (! bool) {req.setAttribute ("code", "erreur"); req.setAttribute ("msg", "signature non valide, le paiement a échoué! (Vous n'êtes pas une bonne personne)"); return "f: /jsps/msg.jsp"; } if (r1_code.equals ("1")) {orderService.updateStatus (r6_order, 2); if (r9_btype.equals ("1")) {req.setAttribute ("code", "succès"); req.setAttribute ("msg", "Félicitations, le paiement réussit!"); return "f: /jsps/msg.jsp"; } else if (r9_btype.equals ("2")) {resp.getWriter (). print ("succès"); }} retourner null;}4.pay.jsp
<% @ page Language = "Java" import = "java.util. *" pageencoding = "gbk"%> <% @ taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core"%> <! doctype html public "- // w3c // dtd html 4.01 public" - // w3c // dtd html 4.01 public "- // w3c // dtd html 4.01 public" - // w3c // dtd html 4.01 public "- // w3c // dtd html 4.01 public" - // w3c // dtd html 4.01 public "- // w3c // dtd html 4.01 public" - // w3c // dtd html 4.01 Public "- // W3C // DTD HTML 4.01 Transitional // en "> <html> <éad- head> <itle> Pay.jsp </title> <méta http-equiv =" pragma "contenu =" non-cache "> <meta http-equiv =" cache-control "contenu =" no-cache "> <mett http-equiv =" expires "contenu =" 0 "> <méta http-equiv =" expires "contenu =" 0 "> <méta content = "Keyword1, Keyword2, Keyword3"> <meta http-equiv = "description" contenu = "Ceci est ma page"> <! - <link rel = "Stylesheet" type = "text / css" href = "Styles.css"> -> <lin value = '/ jss / css / ordonnance / pay.css' /> "> <script type =" text / javascript "src =" <c: url value = '/ jQuery / jQuery-1.5.1.js' /> "> </ script> <script type =" text / javascript "> $ (function () {$ (" iMg "). $ (this) .attr ("name")). att ("vérifié", true);});}); </script> </ head> <body> <div> <span> montant: </span> <span> $ {order.total} </span> <span> Method = "post" id = "form1" cible = "_ top"> <input type = "Hidden" name = "Method" value = "paiement" /> <input type = "Hidden" name = "oid" value = "$ {order.oid}" /> <div> <div> Sélectionner la banque en ligne </ div> <div style = "margin-left: 20px;"> <div style = "margin-bott: 20px;> <div style =" margin-bott: 20px;> <div style = "margin-bott: 20px;> ^ id = "icbc-net-b2c" type = "radio" name = "yh" value = "icbc-net-b2c" checked = "checked" /> <img name = "icbc-net-b2c" align = "middle" src = "<c: url value = '/ bank_img / icbc.bmp' />" /> <put id = "cmbchchina net-b2c =" /> <put id = "cmbchchina net-b2c =" /> <put id = "cmbchchchina net-b2c =" /> <put id = "CMBCHA name = "yh" value = "cmbchina-net-b2c" /> <img name = "cmbchina-net-b2c" align = "middle" src = "<c: url value = '/ bank_img / cmb.bmp' />" /> <intrl id = "abc-net-b2c" type = "radio" nom = "yh" name = "abc-net-b2c" align = "middle" src = "<c: url value = '/ bank_img / abc.bmp' />" /> <input id = "ccb-net-b2c" type = "radio" name = "yh" value = "ccb-net-b2c" /> <iMg name = "ccb-net-b2c" Align = "midd value = '/ bank_img / ccb.bmp' ///> </ div> <div style = "margin-bottom: 20px;"> <entrée id = "bccb-net-b2c" type = "radio" name = "yh" value = "bccb-net-b2c" /> <img name = "bccb-net-b2c" allign = "middle" src = "<c: url valeur = '/ bank_img / bj.bmp' /// input id = "boco-net-b2c" type = "radio" name = "yh" value = "boco-net-b2c" /> <img name = "boco-net-b2c" align = "middle" src = "<c: url = '/ bank_img / bcc.bmp' // dis 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.bmp' /// ult type = "radio" name = "yh" value = "njcb-net-b2c" /> <img name = "njcb-net-b2c" align = "middle" src = "<c: url value = '/ bank_img / nanjing.bmp' /// url 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> <div style =" margin-bottom: 20px; "> <entrée =" cmbc-net-b2c "type =" yh "yh" value = "cmbc-net-b2c" /> <img name = "cmbc-net-b2c" align = "middle" src = "<c: url value = '/ bank_img / cmbc.bmp' //" /> <entrée id = "ceb-net-b2c" type = "radio" name = "yh" value = "ceb net-b2" /> <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" /> <img name = "boc-net-b2c" Align = "midd Value = '/ Bank_img / bc.bmp' /// "/> <input id =" pinganbank-net "type =" radio "name =" yh "value =" pinganbank-net "/> <img name =" pinganbank-net "align =" middle "src =" <c: url = '/ bank_img / pingan.bmp' ///////v> <url = '/ bank_img / pingan.bmp' ///////v> <Url = ' style = "margin-bottom: 20px;"> <input id = "cbhb-net-b2c" type = "radio" name = "yh" value = "cbhb-net-b2c" /> <img name = "cbhb-net-b2c" align = "middle" src = "<c: url value = '/ bank_img / bh.bmp' //////////////// url. 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' ///" /> "/ entrée 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' /////" /> <entrée id = "ecitic-net-b2c" type = "radio" name = "yh" value = "eCitic net-b2c" type = "radio" nom = "yh" value = "ecitic net-b2c" type = "radio" Name = "YH" <img name = "ecitic-net-b2c" align = "middle" src = "<c: url value = '/ bank_img / zx.bmp' ///" /> </ div> <div style = "margin-bottom: 20px;"> <entrée id = "sdb-net-b2c" type = "radio" name = "yh" value = "sdb net-b2c" /> <radio = "yh" " 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 = "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" align = "midd" src = "<c: url Value = '/ Bank_Img / Sh.Bmp' /// "/> <Input 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 <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.bmp' //" /> "/ id =" bjrcb-b2cb '// "/>" / entrée ID = "bjrcb-b2cb' //" /> "/ entrée ID =" bjrcb-b2cb '// "/>" / entrée ID = "BJR-B2CB-B2 type = "radio" name = "yh" value = "bjrcb-net-b2c" /> <img name = "bjrcb-net-b2c" align = "middle" src = "<c: url value = '/ bank_img / beijingnongshang.bmp' //" /> "/ entrée id =" hxb-net-b2c "type =" radio = "yh" value = "hxb-net-b2c" /> <img name = "hxb-net-b2c" align = "middle" src = "<c: url value = '/ bank_img / hx.bmp' ///" /> <entrée id = "cz-net-b2c" type = "radio" name = "yh" value = "cz-net-b2c" /> <gr name = "cz-b2" align = "middle" src = "<c: url value = '/ bank_img / zheshang.bmp' ////// div> </ div> <div style =" margin: 40px; "> <a href =" javascript: void $ ('# form1'). soumis (); "> suivante </a> </v> </v>Paiement.properties
P1_Merid = 10001126856KEYVALUE = 69CL522AV6Q613II4W6U8K6XUW8VM1N6BFGYV769220IUYE9U37N4Y7RI4PLP8_URL = Htttp /: // LocalHost /: 8080 / Articles / Articles
Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.