📄 payreceive_notify.jsp
字号:
<%@ page contentType="text/html; charset=gb2312" language="java" errorPage="errorpage.jsp"%>
<%@ page import="java.util.*"%>
<%@ page import="java.text.*"%>
<jsp:useBean id='oMD5' scope='request' class='beartool.MD5'/>
<%
//特别提示:本程序未在JSP环境进行测试,如有问题,请及时反馈给我们,谢谢!
//#############################################################
//# 贺喜支付平台支付接口服务器端通知接收程序
//# v2.3jsp
//# http://www.168reg.cn
//#
//# 版权所有: 株洲市和谐网络科技发展有限公司
//#
//# 主页地址: http://www.168reg.cn
//# 技术支持: support@168reg.cn
//# 技 术 QQ: 359465724
//# 技术QQ群:8246422,7048987
//#
//#############################################################
//# ·郑重声明:
//# ·此程序不得随意公开发布、销售或进行其他非法转让。
//# ·如对此程序有任何疑问,请在管理区留言。
//#############################################################
//本文件功能介绍:
//1、根据自己的密钥设置验证返回的加密字符串是否正确。
//2、向贺喜支付平台反馈处理成功的字符。
//3、如果返回的提交有错误,即显示失败信息。
//4、为了增强反馈定单的安全性,系统返回的加密字符串由“支付平台定单号+商户订单号+自定义字段1+自定义字段2+成功支付金额+支付方式编号+商户编号+定单支付状态+商户密钥+支付模式”经过MD5加密后产生的。下面的程序已经完成了此加密字符串的验证。
//5、为了防止黑客通过不正常的手段恶意反馈(刷新)接收页面,请您在此程序中加入验证定单号的功能,即每一个成功定单只能反馈一次此页面。
//6、反馈的数据您都可以充分利用并添加到您自己的数据库中。
//初始化定义参数
//商户编号,请把您的商户编号替换掉这里的0值。
String reg_userid="0";
//商户密钥,请把您的商户密钥替换掉这里的空值。
String reg_key="";
//您可以充分利用以下反馈信息并添加到您自己的数据库中。
String v_orderid=new String(request.getParameter("v_orderid").getBytes("iso-8859-1")); //贺喜支付平台反馈的定单号
String v_orderdate=new String(request.getParameter("v_orderdate").getBytes("iso-8859-1")); //定单成交时间
String v_price=new String(request.getParameter("v_price").getBytes("iso-8859-1")); //定单成交价格,以分为单位
String v_billno=new String(request.getParameter("v_billno").getBytes("iso-8859-1")); //商户订单号
String v_custom1=new String(request.getParameter("v_custom1").getBytes("iso-8859-1")); //自定义字段1
String v_custom2=new String(request.getParameter("v_custom2").getBytes("iso-8859-1")); //自定义字段2
String v_mobileno=new String(request.getParameter("v_mobileno").getBytes("iso-8859-1")); //用户支付的手机号码,仅手机短信注册时有效
String v_servicename=new String(request.getParameter("v_servicename").getBytes("iso-8859-1")); //支付订单的服务名称
String v_payvia=new String(request.getParameter("v_payvia").getBytes("iso-8859-1")); //用户选择的支付途径,1:银行卡在线支付;2:声讯电话支付;3:互联星空支付;4:手机短信注册;5:腾讯财付通支付;6:腾讯Q币支付;7:神州行充值卡支付;8,盛大游戏点卡支付;9,支付宝支付;10,手机银行支付;11,北京宽带支付;12,联通充值卡支付
String v_payviastr=new String(request.getParameter("v_payviastr").getBytes("iso-8859-1")); //用户选择的支付途径中文名称
String v_md5=new String(request.getParameter("v_md5").getBytes("iso-8859-1")); //返回的加密字符串
String v_pstatus=new String(request.getParameter("v_pstatus").getBytes("iso-8859-1")); //定单成功反馈的字符串,有1和0两种情况。主要用于验证是否属正常反馈。1为成功。
String v_pstring=new String(request.getParameter("v_pstring").getBytes("iso-8859-1")); //定单支付状态说明。
String v_paymode=new String(request.getParameter("v_paymode").getBytes("iso-8859-1")); //当前定单运行模式,仅启用测试模式时有效,值为testmode。
String v_server=new String(request.getParameter("v_server").getBytes("iso-8859-1")); //当前定单通知的模式,1为服务器端通知。
//-----------重新计算md5的值,验证返回的数字签名是否正确------------------------------------------------
if(v_pstatus.equals("1")){
String text = v_orderid+v_billno+v_custom1+v_custom2+v_price+v_payvia+reg_userid+v_pstatus+reg_key+v_paymode; //为正确数值串拼凑顺序
digestString = oMD5.getMD5ofStr(text); //计算MD5的值
if (digestString.equals(v_md5)){
//建议在此对定单号进行验证以防止用户刷新返回页面多次获得服务。
//下面请显示通知成功的代码
%>Y<%
}
else
{
//下面请放入定单支付失败页面的HTML代码
%>N<%
}}
%>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -