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

Home php教程 php手冊 Online Book Mall 9--Payment Module

Online Book Mall 9--Payment Module

Dec 05, 2016 pm 01:26 PM

1. Payment preparation

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. Payment method

public String payment(HttpServletRequest req, HttpServletResponse resp)
		throws ServletException, IOException {
	Properties props = new Properties();
	props.load(this.getClass().getClassLoader().getResourceAsStream("payment.properties"));
	/*
	 * 1. 準備13個參數(shù)
	 */
	String p0_Cmd = "Buy";//業(yè)務類型,固定值Buy
	String p1_MerId = props.getProperty("p1_MerId");//商號編碼,在易寶的唯一標識
	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");//在支付成功后,易寶會訪問這個地址。
	String p9_SAF = "";//送貨地址
	String pa_MP = "";//擴展信息
	String pd_FrpId = req.getParameter("yh");//支付通道
	String pr_NeedResponse = "1";//應答機制,固定值1
	
	/*
	 * 2. 計算hmac
	 * 需要13個參數(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)關
	 */
	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. Feedback method

When the payment is successful, Yibao will visit here
Access in two ways:
1. Guide the user's browser redirection (if the user closes the browser, he cannot access here)
2. Yibao's server will Access this method using point-to-point communication. (Success must be returned, otherwise the Yibao server will keep calling this method)

public String back(HttpServletRequest req, HttpServletResponse resp)
		throws ServletException, IOException {
	/*
	 * 1. 獲取12個參數(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的校驗方法來校驗調(diào)用者的身份
	 *   >如果校驗失?。罕4驽e誤信息,轉(zhuǎn)發(fā)到msg.jsp
	 *   >如果校驗通過:
	 *     * 判斷訪問的方法是重定向還是點對點,如果要是重定向
	 *     修改訂單狀態(tài),保存成功信息,轉(zhuǎn)發(fā)到msg.jsp
	 *     * 如果是點對點:修改訂單狀態(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">編號:${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

 

 

 

 

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undress AI Tool

Undress AI Tool

Undress images for free

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Hot Topics

PHP Tutorial
1488
72