1. <abbr id="5joko"></abbr>

        <abbr id="5joko"></abbr>\n
        \n\t支付金額:<\/span>¥${order.total }<\/span>\n\t編號(hào):${order.oid }<\/span>\n<\/div>\n
        \" method=\"post\" id=\"form1\" target=\"_top\">\n\n\n
        \n\t
        選擇網(wǎng)上銀行<\/div>\n\t
        \n\t
        \n\t\t\n\t\t\"\/>\n\t\t\n\t\t\n\t\t\"\/>\n\n\t\t\n\t\t\"\/>\n\t\t\n\t\t\n\t\t\"\/>\n\t <\/div>\t\n\t
        \n\t\t\n\t\t\"\/>\n\n\t\t\n\t\t\"\/>\n\n\t\t\n\t\t\"\/>\n\n\t\t\n\t\t\"\/>\n\t <\/div>\n\t
        \n\t\t\n\t\t\"\/>\n\n\t\t\n\t\t\"\/>\n\n\t\t\n\t\t\"\/>\n\n\t\t\n\t\t\"\/>\n\t <\/div>\n\t
        \n\t\t\n\t\t\"\/>\n\n\t\t\n\t\t\"\/>\n\n\t\t\n\t\t\"\/>\n\n\t\t\n\t\t\"\/>\n\t <\/div>\n\t
        \n\t\t\n\t\t\"\/>\n\n\t\t\n\t\t\"\/>\n\n\t\t\n\t\t\"\/>\n\n\t\t\n\t\t\"\/>\n\t <\/div>\n\t
        \n\t\t\n\t\t\"\/>\n\n\t\t\n\t\t\"\/>\n\n\t\t\n\t\t\"\/>\n\n\t\t\n\t\t\"\/>\n\t <\/div>\n\t<\/div>\n\t
        \n\t\t下一步<\/a>\n\t<\/div>\n<\/div>\n<\/form>\n <\/body>\n<\/html>\n<\/pre>\n<\/div>\n

          <\/p>\n

        payment.properties<\/p>\n

        \n
        p1_MerId=10001126856\nkeyValue=69cl522AV6q613Ii4W6u8K6XuW8vM1N6bFgyv769220IuYe9u37N4y7rI4Pl\np8_Url=http\\:\/\/localhost\\:8080\/goods\/OrderServlet?method\\=back\n<\/pre>\n<\/div>\n

          <\/p>\n

         <\/p>\n

          <\/p>\n

          <\/p>\n

        <\/div>\n
        <\/div>"}

        亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

        首頁 php教程 php手冊(cè) 網(wǎng)上圖書商城9--支付模組

        網(wǎng)上圖書商城9--支付模組

        Dec 05, 2016 pm 01:26 PM

        1.支付準(zhǔn)備

        public String paymentPre(HttpServletRequest req, HttpServletResponse resp)
        		throws ServletException, IOException {
        	req.setAttribute("order", orderService.load(req.getParameter("oid")));
        	return "f:/jsps/order/pay.jsp";
        }
        

        ?

        2.付款方式

        public String payment(HttpServletRequest req, HttpServletResponse resp)
        		throws ServletException, IOException {
        	Properties props = new Properties();
        	props.load(this.getClass().getClassLoader().getResourceAsStream("payment.properties"));
        	/*
        	 * 1. 準(zhǔn)備13個(gè)參數(shù)
        	 */
        	String p0_Cmd = "Buy";//業(yè)務(wù)類型,固定值Buy
        	String p1_MerId = props.getProperty("p1_MerId");//商號(hào)編碼,在易寶的唯一標(biāo)識(shí)
        	String p2_Order = req.getParameter("oid");//訂單編碼
        	String p3_Amt = "0.01";//支付金額
        	String p4_Cur = "CNY";//交易幣種,固定值CNY
        	String p5_Pid = "";//商品名稱
        	String p6_Pcat = "";//商品種類
        	String p7_Pdesc = "";//商品描述
        	String p8_Url = props.getProperty("p8_Url");//在支付成功后,易寶會(huì)訪問這個(gè)地址。
        	String p9_SAF = "";//送貨地址
        	String pa_MP = "";//擴(kuò)展信息
        	String pd_FrpId = req.getParameter("yh");//支付通道
        	String pr_NeedResponse = "1";//應(yīng)答機(jī)制,固定值1
        	
        	/*
        	 * 2. 計(jì)算hmac
        	 * 需要13個(gè)參數(shù)
        	 * 需要keyValue
        	 * 需要加密算法
        	 */
        	String 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_NeedResponse, keyValue);
        	
        	/*
        	 * 3. 重定向到易寶的支付網(wǎng)關(guān)
        	 */
        	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());
        	return null;
        }
        

        ?

        3.回饋方法

        當(dāng)付款成功時(shí),易寶會(huì)訪問這裡
        用兩種方法訪問:
        1. 引導(dǎo)用戶的瀏覽器重定向(如果用戶關(guān)閉了瀏覽器,就不能訪問這裡了)
        2. 易寶的伺服器會(huì)使用點(diǎn)對(duì)點(diǎn)通訊的方法來存取這個(gè)方法。 (必須回饋success,不然易寶伺服器會(huì)一直呼叫這個(gè)方法)

        public String back(HttpServletRequest req, HttpServletResponse resp)
        		throws ServletException, IOException {
        	/*
        	 * 1. 獲取12個(gè)參數(shù)
        	 */
        	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. 獲取keyValue
        	 */
        	Properties props = new Properties();
        	props.load(this.getClass().getClassLoader().getResourceAsStream("payment.properties"));
        	String keyValue = props.getProperty("keyValue");
        	/*
        	 * 3. 調(diào)用PaymentUtil的校驗(yàn)方法來校驗(yàn)調(diào)用者的身份
        	 *   >如果校驗(yàn)失敗:保存錯(cuò)誤信息,轉(zhuǎn)發(fā)到msg.jsp
        	 *   >如果校驗(yàn)通過:
        	 *     * 判斷訪問的方法是重定向還是點(diǎn)對(duì)點(diǎn),如果要是重定向
        	 *     修改訂單狀態(tài),保存成功信息,轉(zhuǎn)發(fā)到msg.jsp
        	 *     * 如果是點(diǎn)對(duì)點(diǎn):修改訂單狀態(tài),返回success
        	 */
        	boolean 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", "無效的簽名,支付失敗?。悴皇呛萌耍?quot;);
        		return "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", "恭喜,支付成功!");
        			return "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/core" %>
        
        
        <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//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="expires" content="0">    
        	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
        	<meta http-equiv="description" content="This is my page">
        	<!--
        	<link rel="stylesheet" type="text/css" href="styles.css">
        	-->
        	<link rel="stylesheet" type="text/css" href="<c:url value='/jsps/css/order/pay.css'/>">
        	<script type="text/javascript" src="<c:url value='/jquery/jquery-1.5.1.js'/>"></script>
        
        <script type="text/javascript">
        $(function() {
        	$("img").click(function() {
        		$("#" + $(this).attr("name")).attr("checked", true);
        	});
        });
        </script>
          </head>
          
          <body>
        <div class="divContent">
        	<span class="spanPrice">支付金額:</span><span class="price_t">¥${order.total }</span>
        	<span class="spanOid">編號(hào):${order.oid }</span>
        </div>
        <form action="<c:url value='/OrderServlet'/>" method="post" id="form1" target="_top">
        <input type="hidden" name="method" value="payment"/>
        <input type="hidden" name="oid" value="${order.oid }"/>
        <div class="divBank">
        	<div class="divText">選擇網(wǎng)上銀行</div>
        	<div style="margin-left: 20px;">
        	  <div style="margin-bottom: 20px;">
        		<input 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'/>"/>
        		
        		<input id="CMBCHINA-NET-B2C" type="radio" name="yh" value="CMBCHINA-NET-B2C"/>
        		<img name="CMBCHINA-NET-B2C" align="middle" src="<c:url value='/bank_img/cmb.bmp'/>"/>
        
        		<input id="ABC-NET-B2C" type="radio" name="yh" value="ABC-NET-B2C"/>
        		<img 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="middle" src="<c:url value='/bank_img/ccb.bmp'/>"/>
        	  </div>	
        	  <div style="margin-bottom: 20px;">
        		<input id="BCCB-NET-B2C" type="radio" name="yh" value="BCCB-NET-B2C"/>
        		<img name="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" align="middle" src="<c:url value='/bank_img/bcc.bmp'/>"/>
        
        		<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'/>"/>
        
        		<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'/>"/>
        	  </div>
        	  <div style="margin-bottom: 20px;">
        		<input 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="CEB-NET-B2C" type="radio" name="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"/>
        		<img name="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" align="middle" src="<c:url 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="middle" src="<c:url 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="ECITIC-NET-B2C" type="radio" name="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" 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="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="middle" 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/shpd.bmp'/>"/>
        	  </div>
        	  <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'/>"/>
        
        		<input 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="HXB-NET-B2C" type="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" 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="margin: 40px;">
        		<a href="javascript:void $('#form1').submit();" class="linkNext">下一步</a>
        	</div>
        </div>
        </form>
          </body>
        </html>
        

          

        payment.properties

        p1_MerId=10001126856
        keyValue=69cl522AV6q613Ii4W6u8K6XuW8vM1N6bFgyv769220IuYe9u37N4y7rI4Pl
        p8_Url=http\://localhost\:8080/goods/OrderServlet?method\=back
        

          

         

          

          

        本網(wǎng)站聲明
        本文內(nèi)容由網(wǎng)友自願(yuàn)投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請(qǐng)聯(lián)絡(luò)admin@php.cn

        熱AI工具

        Undress AI Tool

        Undress AI Tool

        免費(fèi)脫衣圖片

        Undresser.AI Undress

        Undresser.AI Undress

        人工智慧驅(qū)動(dòng)的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

        AI Clothes Remover

        AI Clothes Remover

        用於從照片中去除衣服的線上人工智慧工具。

        Clothoff.io

        Clothoff.io

        AI脫衣器

        Video Face Swap

        Video Face Swap

        使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

        熱工具

        記事本++7.3.1

        記事本++7.3.1

        好用且免費(fèi)的程式碼編輯器

        SublimeText3漢化版

        SublimeText3漢化版

        中文版,非常好用

        禪工作室 13.0.1

        禪工作室 13.0.1

        強(qiáng)大的PHP整合開發(fā)環(huán)境

        Dreamweaver CS6

        Dreamweaver CS6

        視覺化網(wǎng)頁開發(fā)工具

        SublimeText3 Mac版

        SublimeText3 Mac版

        神級(jí)程式碼編輯軟體(SublimeText3)

        熱門話題

        Laravel 教程
        1597
        29
        PHP教程
        1488
        72