`
忧里修斯
  • 浏览: 436124 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

网银在线支付注意事项

阅读更多
1、到网银在线http://www.chinabank.com.cn/index/index.shtml去注册一个商户
2、登陆后台https://merchant3.chinabank.com.cn下载jsp开发文档,最主要的是MD5.class
3、获取到商户号和密钥,开发时需用到
4、具体开发所需的关键参数如下:

<%@ page contentType="text/html; charset=utf-8" language="java"%>
<%@ page import="java.util.*"%>
<%@ page import="java.text.*"%>
<jsp:useBean id="MD5" scope="request" class="beartool.MD5" />
<%
	//初始化定义参数
	String v_mid, key, v_url, v_oid, v_amount, v_moneytype, v_md5info; //定义必须传递的参数变量

	v_mid = "21434574"; // 商户号,这里为测试商户号20000400,替换为自己的商户号即可
	v_url = "http://localhost/Receive.jsp"; // 商户自定义返回接收支付结果的页面
	// MD5密钥要跟订单提交页相同,如Send.asp里的 key = "test" ,修改""号内 test 为您的密钥
	key = "abcdefghij123456"; // 如果您还没有设置MD5密钥请登陆我们为您提供商户后台,地址:https://merchant3.chinabank.com.cn/
	// 登陆后在上面的导航栏里可能找到“资料管理”,在资料管理的二级导航栏里有“MD5密钥设置” 
	// 建议您设置一个16位以上的密钥或更高,密钥最多64位,但设置16位已经足够了
	//****************************************

	//以上三项需要商户修改

	// v_oid=request.getParameter("v_oid");
	if (request.getParameter("v_oid") != null
			&& !request.getParameter("v_oid").equals("")) //判断是否有传递订单号
	{
		v_oid = request.getParameter("v_oid");
	} else {
		Date currTime = new Date();
		SimpleDateFormat sf = new SimpleDateFormat("yyyyMMdd-" + v_mid
				+ "-hhmmss", Locale.US);
		v_oid = sf.format(currTime); // 推荐订单号构成格式为 年月日-商户号-小时分钟秒
	}
	v_amount = "111";//request.getParameter("v_amount"); // 订单金额                   
	v_moneytype = "CNY"; // 币种
	v_md5info = ""; // 对拼凑串MD5私钥加密后的值

	String text = v_amount + v_moneytype + v_oid + v_mid + v_url + key; // 拼凑加密串
	v_md5info = MD5.getMD5ofStr(text); // 网银支付平台对MD5值只认大写字符串,所以小写的MD5值得转换为大写

	String remark1, remark2;

	remark1 = request.getParameter("remark1"); //备注字段1
	remark2 = request.getParameter("remark2"); //备注字段2
%>

<!--以下信息为标准的 HTML 格式 + JAVA 语言 拼凑而成的 网银在线 支付接口标准演示页面 -->

<html>

	<body onLoad="javascript:document.E_FORM.submit()">
		<form action="https://pay3.chinabank.com.cn/PayGate" method="POST"
			name="E_FORM">

			<!--以下几项为网上支付重要信息,信息必须正确无误,信息会影响支付进行!-->

			<input type="hidden" name="v_md5info" value="<%=v_md5info%>" size="100">
			<input type="hidden" name="v_mid" value="<%=v_mid%>">
			<input type="hidden" name="v_oid" value="<%=v_oid%>">
			<input type="hidden" name="v_amount" value="<%=v_amount%>">
			<input type="hidden" name="v_moneytype" value="<%=v_moneytype%>">
			<input type="hidden" name="v_url" value="<%=v_url%>">


			<!--以下几项项为网上支付完成后,随支付反馈信息一同传给信息接收页,在传输过程中内容不会改变,如:Receive.asp -->

			<input type="hidden" name="remark1" value="<%=remark1%>">
			<input type="hidden" name="remark2" value="<%=remark2%>">



		</form>

	</body>
</html>


5、支付完成返回的页面
<%@page contentType="text/html; charset=gb2312" language="java"%>
<jsp:useBean id="MD5" scope="request" class="beartool.MD5"/>
<%
//****************************************	// MD5密钥要跟订单提交页相同,如Send.asp里的 key = "test" ,修改""号内 test 为您的密钥
											// 如果您还没有设置MD5密钥请登陆我们为您提供商户后台,地址:https://merchant3.chinabank.com.cn/
String key = "abcdefghij123456";						// 登陆后在上面的导航栏里可能找到“资料管理”,在资料管理的二级导航栏里有“MD5密钥设置” 
											// 建议您设置一个16位以上的密钥或更高,密钥最多64位,但设置16位已经足够了
//****************************************

//获取参数
	   String v_oid = request.getParameter("v_oid");		// 订单号
	 String v_pmode = request.getParameter("v_pmode");		// 支付方式中文说明,如"中行长城信用卡"
   String v_pstatus = request.getParameter("v_pstatus");	// 支付结果,20支付完成;30支付失败;
   String v_pstring = request.getParameter("v_pstring");	// 对支付结果的说明,成功时(v_pstatus=20)为"支付成功",支付失败时(v_pstatus=30)为"支付失败"
	String v_amount = request.getParameter("v_amount");		// 订单实际支付金额
 String v_moneytype = request.getParameter("v_moneytype");	// 币种
	String v_md5str = request.getParameter("v_md5str");		// MD5校验码
	 String remark1 = request.getParameter("remark1");		// 备注1
	 String remark2 = request.getParameter("remark2");		// 备注2


String text = v_oid+v_pstatus+v_amount+v_moneytype+key;
String v_md5 = MD5.getMD5ofStr(text).toUpperCase();
		
if (v_md5str.equals(v_md5))
{
	if ("30".equals(v_pstatus))
	{
		out.print("支付失败");
	}else if ("20".equals(v_pstatus)){
		// 支付成功,商户 根据自己业务做相应逻辑处理
		//此处加入商户系统的逻辑处理(例如判断金额,判断支付状态,更新订单状态等等)......
		%>
		<TABLE width=500 border=0 align="center" cellPadding=0 cellSpacing=0>
		  <TBODY>
			<TR> 
			  <TD vAlign=top align=middle> <div align="left"><B><FONT style="FONT-SIZE:14px">MD5校验码:<%=v_md5str%></FONT></B></div></TD>
			</TR>
			<TR> 
			  <TD vAlign=top align=middle> <div align="left"><B><FONT style="FONT-SIZE: 14px">订单号:<%=v_oid%></FONT></B></div></TD>
			</TR>
			<TR> 
			  <TD vAlign=top align=middle> <div align="left"><B><FONT style="FONT-SIZE: 14px">支付卡种:<%=v_pmode%></FONT></B></div></TD>
			</TR>
			<TR> 
			  <TD vAlign=top align=middle> <div align="left"><B><FONT style="FONT-SIZE: 14px">支付结果:<%=v_pstring%></FONT></B></div></TD>
			</TR>
			<TR> 
			  <TD vAlign=top align=middle> <div align="left"><B><FONT style="FONT-SIZE: 14px">支付金额:<%=v_amount%></FONT></B></div></TD>
			</TR>
			<TR> 
			  <TD vAlign=top align=middle> <div align="left"><B><FONT style="FONT-SIZE: 14px">支付币种:<%=v_moneytype%></FONT></B></div></TD>
			</TR>
		  </TBODY>
		</TABLE>
		<%
	}
}else{
    out.print("校验码未通过,不是银行传递回来的参数");
}
%>
分享到:
评论
4 楼 ihic11 2013-12-13  
我的为什么Receive.jsp一直有乱码?请帮忙
3 楼 0640110146 2011-02-24  
楼主,请问下,如何得到网银在线上交易后生成的订单,而不是我们商户系统提供的订单号!支付宝就有,但是网银在线好像不返回这个字段
2 楼 忧里修斯 2009-11-14  
不好意思,针对国外的还没做过。
1 楼 andey007518 2009-11-12  
这样的全部都是要付费的平台的,看了下主要针对国内的,有没有类似针对中国地区以外的其他地区的呢,不过还是谢谢lZ~~

相关推荐

    网银支付开发文档

    本文档旨在提供网银在线支付网关接口的详细指南,包括接口开发过程中的各项细节和技术要点,帮助商户快速理解并实现银行卡在线支付功能。 **阅读对象:** - 商户系统设计人员 - 编程人员 - 测试人员 - 需要具备一定...

    信用卡快捷支付网银支付流程图.doc

    四、网上银行支付的注意事项 网上银行支付需要注意以下几点: * 确认支付信息:用户需要确认支付信息的正确性,避免错误支付。 * 保持账户安全:用户需要保持账户信息的安全,避免账户信息泄露。 * 了解支付限额:...

    ASP开发网银,支付宝,财付通demo及说明

    2. **网银支付接口**:网银支付是指用户通过自己的网上银行账户进行支付的方式。在ASP中,开发者需要编写代码来与银行的API进行交互,获取支付页面,处理支付结果,并确保支付过程的安全性,如通过SSL加密传输敏感...

    网银支付官方demo

    网银支付官方demo是一个用于演示如何与银行系统进行网银支付交互的应用程序示例。这个demo通常由银行或第三方支付平台提供,目的是帮助开发者理解并实现网银支付接口的集成。在开发过程中,通过这样的demo,开发者...

    企业网银支付引起的错误解决办法

    ### 二、其他注意事项 除了上述问题之外,在进行企业网银支付时还应注意以下几点: #### 1. 防止钓鱼攻击 钓鱼攻击是指攻击者通过伪装成可信实体来获取用户的敏感信息(如用户名、密码等)。为了防止成为钓鱼攻击的...

    中国工商银行网上银行新B2C在线支付接口说明V1.0.0.14(20110706)

    B2C在线支付业务通常涉及以下流程:用户在商家网站选择商品或服务,进入支付页面,选择工商银行支付方式,系统跳转至工行的支付网关,用户输入网银信息完成支付,最后,工行会将支付结果通知给商家。此过程需确保...

    银联网银接口代码,实现网站的在线支付功能

    3. 银联系统对订单信息进行验证,并引导用户跳转到银行支付页面。 4. 用户在银行页面输入支付信息(银行卡号、密码等),完成支付操作。 5. 银行系统确认支付成功后,将结果通知银联,银联再将结果返回给网站。 6. ...

    asp网银支付接口(源代码)

    它们解释了代码的功能、工作原理以及可能的注意事项。开发者可以通过阅读注释快速了解系统的架构和逻辑。 6. **数据库交互**:在处理支付过程中,ASP代码很可能与数据库进行交互,存储和查询订单信息、用户信息和...

    新云支付网银接口说明文档1

    文档说明表明这份文档是用于指导新云支付的商户和技术人员在他们的系统中集成新云支付网银接口,以便能够处理用户的网上银行支付。阅读对象主要为商户的开发人员以及与新云支付网银接口相关的技术人员。 **第二章 ...

    PHP实现的交通银行网银在线支付接口ECSHOP插件和使用例子

    银行通常会提供一个演示项目,包含详细的安装步骤和注意事项。一旦环境配置完成,可以将提供的插件源码(如`includes/modules/payment/bankcomm.php`)和语言包源码按照指定路径保存到ECSHOP的相应文件夹中。然后在...

    Discuz!网银在线插件 X3

    这款插件支持银行直连,意味着用户在论坛内购买虚拟商品或服务时,可以直接通过各大银行的网银系统进行支付,无需跳转到第三方支付平台,减少了中间环节,增加了用户的支付信任度。 在技术层面,该插件基于PHP编程...

    双乾网银支付网关ASP接口

    这个接口允许网站开发者集成双乾支付系统到他们的网站中,以便用户能够通过各种银行的网银服务进行安全便捷的支付。在电子商务领域,这种支付网关的集成对于提供顺畅的购物体验至关重要。 首先,我们需要了解"95...

    ECshop农业银行支付插件

    "ECShop农业银行支付插件"是专门为ECShop设计的一个扩展模块,目的是为了集成中国农业银行的网上支付服务,使得消费者在购买商品时可以方便地通过农业银行的网银或快捷支付方式进行付款。 该插件的实现主要依赖于...

    ASP版支付宝API实例集合

    - 文档:详细解释每个接口的功能、参数、返回值和使用注意事项。 - 类库:封装好的ASP类,简化了API的调用过程,开发者可以直接使用这些类来实现支付功能。 - 测试工具:用于模拟请求和验证接口功能是否正常运行。 ...

    工行支付Java代码示例.zip

    在本压缩包“工行支付Java代码示例.zip”中,包含了使用Java语言与中国工商银行网上银行新B2C在线支付接口进行集成的示例代码。这个API SDK版本为icbc-api-sdk-cop_v2_20181211,意味着它是2018年12月11日更新的版本...

    CWC大型商城(网银在线版) v1.5

    【CWC大型商城(网银在线版) v1.5】是一个专为电子商务设计的软件系统,它集成了在线支付功能,支持网银交易,旨在为商家提供一个高效、安全的网上交易平台。这个版本v1.5是该商城系统的升级版,通常包含了一些性能...

    交通银行B2C网上支付API.JAVA安装包1.0.2

    这个安装包是基于Java编程语言,使得Java开发者能够轻松地将银行支付功能整合到自己的电商平台或者应用中。 首先,我们需要理解什么是B2C网上支付。B2C(Business to Consumer)是指企业与消费者之间的电子商务模式...

    某科技Q币代理商平台在线支付操作指南.docx

    - **线上支付**:选择此方式后使用网上银行支付,款项实时到账。 - **注意事项**: - 用户需提前开通网上银行服务。 - 当前仅支持招商银行及中国工商银行的网上银行支付。 - **招商银行网上银行开通**:请访问...

Global site tag (gtag.js) - Google Analytics