??xml version="1.0" encoding="utf-8" standalone="yes"?>
阉K云最Ch格发布,12.18???点购乎ͼ再n5分钟免一单?br />
]]>
<form method=get action="http://www.google.com/search">
<input type=text name=q>
<input type=submit name=btnG value="Google 搜烦">
<input type=hidden name=ie value=GB2312>
<input type=hidden name=oe value=GB2312>
<input type=hidden name=hl value=zh-CN>
<input type=hidden name=domains value="www.williamlong.info">
<input type=hidden name=sitesearch value="www.williamlong.info">
</form>
<!-- l束-->
<!--Baidu站内搜烦开?->
<form action="http://www.baidu.com/baidu">
<input type=text name=word>
<input type="submit" value="Baidu 搜烦">
<input name=tn type=hidden value="bds">
<input name=cl type=hidden value="3">
<input name=ct type=hidden value="2097152">
<input name=si type=hidden value="www.williamlong.info">
</form>
<!--Baidu站内搜烦l束-->
<!--Yahoo站内搜烦开?->
<form action="http://www.yahoo.com.cn/search">
<input type=text name="p">
<input type="submit" value="Yahoo 搜烦">
<input type=hidden name=vs value="www.williamlong.info">
</form>
<!--Yahoo站内搜烦l束-->
下面是Google和百度的Javascript版的站内搜烦代码Q?/p>
<!--
<script type="text/javascript">
function googlesearch () {
var wq=document.getElementsByName("wq")[0].value;
var link="http://www.google.com/search?domains=www.williamlong.info&sitesearch=www.williamlong.info&q="+wq;
window.open(link); }
</script>
<input type="text" name="wq"/><input type="submit" onclick="javascript:googlesearch()" value="Google 搜烦" />
<!-- l束-->
<!--Baidu站内搜烦开?->
<script language="javascript">
function baidusearch () {
var wd=document.getElementsByName("wd")[0].value;
var link="http://www.baidu.com/s?si=www.williamlong.info&cl=3&ct=2097152&tn=baidulocal&word="+wd;
window.open(link); }
</script>
<input type="text" name="wd"/><input type="submit" onclick="javascript:baidusearch()" value="Baidu 搜烦" />
<!--Baidu站内搜烦l束-->
个h站链接 爱储备网
create sequence <序列?/span>U?/span>>
start with <起始?/span>>
increment by <增长?/span>>
[maxvalue ?/span>]
[minvalue ?/span>]
[cycle 当到达最大值的时候,l从头开?/span>]
[Nocycle -- 一直篏加,不@?/span>]
[Cache ]
二、Oracal的lpad函数
lpad( string1, padded_length, [ pad_string ] ) pad_string是个可选参敎ͼq个字符串是要粘贴到string1的左边,如果q个参数未写Qlpad函数会在string1的左边粘贴空根{?br />
例如Q?br />
其中string1是需要粘贴字W的字符?br />
padded_length是返回的字符串的数量Q如果这个数量比原字W串的长度要短,lpad函数会把字W串截取?em>padded_length;
lpad('tech', 7);
返? tech'
lpad('tech', 2);
返?te'
lpad('tech', 8, '0');
返?0000tech'
lpad('tech on the net', 15, 'z');
返?nbsp;'tech on the net'
lpad('tech on the net', 16, 'z');
返?nbsp;'ztech on the net'
三、Oracal的to_char函数
The following are date examples for the to_char function. You will notice that in some examples, the format_mask parameter begins with "FM". This means that zeros and blanks are suppressed. The zeros have been suppressed so that the day component shows as "9" as opposed to "09".
to_char(sysdate, 'yyyy/mm/dd');
would return '2003/07/09'
to_char(sysdate, 'Month DD, YYYY');
would return 'July 09, 2003'
to_char(sysdate, 'FMMonth DD, YYYY');
would return 'July 9, 2003'
to_char(sysdate, 'MON DDth, YYYY');
would return 'JUL 09TH, 2003'
to_char(sysdate, 'FMMON DDth, YYYY');
would return 'JUL 9TH, 2003'
to_char(sysdate, 'FMMon ddth, YYYY');
would return 'Jul 9th, 2003'
This can be seen in the examples below.
to_char(sysdate, 'FMMonth DD, YYYY');
would return 'July 9, 2003'
to_char(sysdate, 'FMMON DDth, YYYY');
would return 'JUL 9TH, 2003'
to_char(sysdate, 'FMMon ddth, YYYY');
would return 'Jul 9th, 2003'
四、例Q?/span>
DROP SEQUENCE test_mySeq;
DROP TABLE test;
CREATE SEQUENCE test_mySeq
START WITH 1001
INCREMENT BY 1
MAXVALUE 9999999999
MINVALUE 1
CYCLE
NOCACHE;
CREATE TABLE test
(
ID VARCHAR2(10) not null,
orderid VARCHAR2(20) not NULL
);
SELECT * FROM test ORDER BY orderid ASC;
INSERT INTO test(ID,orderid)VALUES(to_char(SYSDATE,'yyyymmdd'),'HG-'||to_char(SYSDATE,'yyyymmdd')||lpad(test_mySeq.nextval, 8, '0'));
COMMIT;
转自Qhttp://blog.csdn.net/jkant/archive/2009/04/24/4106687.aspx
减肥瘦n品L 值得信赖*脉脉妆*正品现货谢绝讲h 〓深港商盟〓名品欧坊Q美国休闲品牌AFpdQ?/a> QQ三国游戏币及道具专卖?/a> 脸U红的瘦w旗舰店减肥瘦n品L 值得信赖*脉脉妆*正品现货谢绝讲h 〓深港商盟〓名品欧坊Q美国休闲品牌AFpdQ?/a> QQ三国游戏币及道具专卖?/a> 脸U红的瘦w旗舰店减肥瘦n品L 值得信赖*脉脉妆*正品现货谢绝讲h 〓深港商盟〓名品欧坊Q美国休闲品牌AFpdQ?/a> QQ三国游戏币及道具专卖?/a> 脸U红的瘦w旗舰店
<input type="text" onkeypress="if (event.keyCode < 45 || event.keyCode > 57) event.returnValue = false;"/>
或?
<input onkeyup="if(event.keyCode !=37 && event.keyCode != 39) value=value.replace(/\D/g,'');"onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/\D/g,''))">
5. 只能是英文字W和数字
<input onkeyup="value="/oblog/value.replace(/[\W]/g,"'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))">
6. 验证油箱格式
<SCRIPT LANGUAGE=javascript RUNAT=Server>
function isEmail(strEmail) {
if (strEmail.search(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/) != -1)
return true;
else
alert("oh");
}
</SCRIPT>
<input type=text onblur=isEmail(this.value)>
7. 屏蔽关键?q里屏蔽***?***)
<script language="javascript1.2">
function test() {
if((a.b.value.indexOf ("***") == 0)||(a.b.value.indexOf ("****") == 0)){
alert(":)");
a.b.focus();
return false;}
}
</script>
<form name=a onsubmit="return test()">
<input type=text name=b>
<input type="submit" name="Submit" value="check">
</form>
8. 两次输入密码是否相同
<FORM METHOD=POST ACTION="">
<input type="password" id="input1">
<input type="password" id="input2">
<input type="button" value="test" onclick="check()">
</FORM>
<script>
function check()
{
with(document.all){
if(input1.value!=input2.value)
{
alert("false")
input1.value = "";
input2.value = "";
}
else document.forms[0].submit();
}
}
</script>
够了?:)
屏蔽右键 很酷
oncontextmenu="return false" ondragstart="return false" onselectstart="return false"
加在body?br />
?br />
2.1 表单不能ؓI?br />
<script language="javascript">
<!--
function CheckForm()
{
if (document.form.name.value.length == 0) {
alert("误入您姓名!");
document.form.name.focus();
return false;
}
return true;
}
-->
</script>
2.2 比较两个表单的值是否相?br />
<script language="javascript">
<!--
function CheckForm()
if (document.form.PWD.value != document.form.PWD_Again.value) {
alert("您两ơ输入的密码不一P请重新输?");
document.ADDUser.PWD.focus();
return false;
}
return true;
}
-->
</script>
2.3 表单只能ؓ数字?_",用于电话/银行帐号验证?可扩展到域名注册{?br />
<script language="javascript">
<!--
function isNumber(String)
{
var Letters = "1234567890-"; //可以自己增加可输入?br />
var i;
var c;
if(String.charAt( 0 )=='-')
return false;
if( String.charAt( String.length - 1 ) == '-' )
return false;
for( i = 0; i < String.length; i ++ )
{
c = String.charAt( i );
if (Letters.indexOf( c ) < 0)
return false;
}
return true;
}
function CheckForm()
{
if(! isNumber(document.form.TEL.value)) {
alert("您的电话L不合法!");
document.form.TEL.focus();
return false;
}
return true;
}
-->
</script>
2.4 表单输入数?长度限定
<script language="javascript">
<!--
function CheckForm()
{
if (document.form.count.value > 100 || document.form.count.value < 1)
{
alert("输入数g能小于零大于100!");
document.form.count.focus();
return false;
}
if (document.form.MESSAGE.value.length<10)
{
alert("输入文字于10!");
document.form.MESSAGE.focus();
return false;
}
return true;
}
//-->
</script>
2.5 中文/英文/数字/邮g地址合法性判?br />
<SCRIPT LANGUAGE="javascript">
<!--
function isEnglish(name) //英文值检?br />
{
if(name.length == 0)
return false;
for(i = 0; i < name.length; i++) {
if(name.charCodeAt(i) > 128)
return false;
}
return true;
}
function isChinese(name) //中文值检?br />
{
if(name.length == 0)
return false;
for(i = 0; i < name.length; i++) {
if(name.charCodeAt(i) > 128)
return true;
}
return false;
}
function isMail(name) // E-mail值检?br />
{
if(! isEnglish(name))
return false;
i = name.indexOf(" at ");
j = name dot lastIndexOf(" at ");
if(i == -1)
return false;
if(i != j)
return false;
if(i == name dot length)
return false;
return true;
}
function isNumber(name) //数值检?br />
{
if(name.length == 0)
return false;
for(i = 0; i < name.length; i++) {
if(name.charAt(i) < "0" || name.charAt(i) > "9")
return false;
}
return true;
}
function CheckForm()
{
if(! isMail(form.Email.value)) {
alert("您的电子邮g不合法!");
form.Email.focus();
return false;
}
if(! isEnglish(form.name.value)) {
alert("英文名不合法Q?);
form.name.focus();
return false;
}
if(! isChinese(form.cnname.value)) {
alert("中文名不合法Q?);
form.cnname.focus();
return false;
}
if(! isNumber(form.PublicZipCode.value)) {
alert("邮政~码不合法!");
form.PublicZipCode.focus();
return false;
}
return true;
}
//-->
</SCRIPT>
2.6 限定表单不能输入的字符
<script language="javascript">
<!--
function contain(str,charset)// 字符串包含测试函?br />
{
var i;
for(i=0;i<charset.length;i++)
if(str.indexOf(charset.charAt(i))>=0)
return true;
return false;
}
function CheckForm()
{
if ((contain(document.form.NAME.value, "%\(\)><")) || (contain(document.form.MESSAGE.value, "%\(\)><")))
{
alert("输入了非法字W?);
document.form.NAME.focus();
return false;
}
return true;
}
//-->
</script>
1. 查一D字W串是否全由数字l成
---------------------------------------
<script language="Javascript"><!--
function checkNum(str){return str.match(/\D/)==null}
alert(checkNum("1232142141"))
alert(checkNum("123214214a1"))
// --></script>
2. 怎么判断是否是字W?nbsp;
---------------------------------------
if (/[^\x00-\xff]/g.test(s)) alert("含有汉字");
else alert("全是字符");
3. 怎么判断是否含有汉字
---------------------------------------
if (escape(str).indexOf("%u")!=-1) alert("含有汉字");
else alert("全是字符");
4. 邮箱格式验证
---------------------------------------
//函数名:chkemail
//功能介绍Q检查是否ؓEmail Address
//参数说明Q要查的字符?nbsp;
//q回|0Q不?1Q是
function chkemail(a)
{ var i=a.length;
var temp = a.indexOf('@');
var tempd = a.indexOf('.');
if (temp > 1) {
if ((i-temp) > 3){
if ((i-tempd)>0){
return 1;
}
}
}
return 0;
}
5. 数字格式验证
---------------------------------------
//函数名:fucCheckNUM
//功能介绍Q检查是否ؓ数字
//参数说明Q要查的数字
//q回|1为是数字Q?Z是数?nbsp;
function fucCheckNUM(NUM)
{
var i,j,strTemp;
strTemp="0123456789";
if ( NUM.length== 0)
return 0
for (i=0;i<NUM.length;i++)
{
j=strTemp.indexOf(NUM.charAt(i));
if (j==-1)
{
//说明有字W不是数?nbsp;
return 0;
}
}
//说明是数?nbsp;
return 1;
}
6. 电话L格式验证
---------------------------------------
//函数名:fucCheckTEL
//功能介绍Q检查是否ؓ电话L
//参数说明Q要查的字符?nbsp;
//q回|1为是合法Q?Z合法
function fucCheckTEL(TEL)
{
var i,j,strTemp;
strTemp="0123456789-()# ";
for (i=0;i<TEL.length;i++)
{
j=strTemp.indexOf(TEL.charAt(i));
if (j==-1)
{
//说明有字W不合法
return 0;
}
}
//说明合法
return 1;
}
7. 判断输入是否Z文的函数
---------------------------------------
function ischinese(s){
var ret=true;
for(var i=0;i<s.length;i++)
ret=ret && (s.charCodeAt(i)>=10000);
return ret;
}
8. l合的判断用戯入的合法性的函数
---------------------------------------
<script language="javascript">
//限制输入字符的位数开?nbsp;
//m是用戯入,n是要限制的位?nbsp;
function issmall(m,n)
{
if ((m<n) && (m>0))
{
return(false);
}
else
{return(true);}
}
9. 判断密码是否输入一?nbsp;
---------------------------------------
function issame(str1,str2)
{
if (str1==str2)
{return(true);}
else
{return(false);}
}
10. 判断用户名是否ؓ数字字母下滑U?
---------------------------------------
function notchinese(str){
var reg=/[^A-Za-z0-9_]/g
if (reg.test(str)){
return (false);
}else{
return(true); }
}
11. form文本域的通用校验函数
---------------------------------------
作用Q检所有必非I的input文本Q比如姓名,账号Q邮件地址{等?br />
该校验现在只针对文本域,如果要针对form里面的其他域对象Q可以改变判断条件?br />
使用ҎQ在要检的文本域中加入title文字。文字是在提CZ息,你要提示l用L该字D늚中文名。比如要用户名
html如下<input name="txt_1" title="姓名">,当然Q最好用可视化工h如dreamweaver什么的来编辑域?br />
如果要检数字类型数据的话,再把域的idl一为sz.
javascript判断日期cd比较ȝQ所以就没有做日期类型校验的E序?高手可以补充?br />
E序比较草,只是提供一个思\。抛砖引玉! Q)
哦,对了Q函数调用方法:< form onsubmit="return dovalidate()">
function dovalidate()
{
fm=document.forms[0] //只检一个form,如果是多个可以改变判断条?br />
for(i=0;i<fm.length;i++)
{
//判断条ӞҎcd不同可以修改
if(fm[i].tagName.toUpperCase()=="INPUT" &&fm[i].type.toUpperCase()=="TEXT" && (fm[i].title!=""))
if(fm[i].value="/blog/="")//
{
str_warn1=fm[i].title+"不能为空!";
alert(str_warn1);
fm[i].focus();
return false;
}
if(fm[i].id.toUpperCase()=="SZ")//数字校验
{
if(isNaN(fm[i].value))
{ str_warn2=fm[i].title+"格式不对";
alert(str_warn2);
fm[i].focus();
return false;
}
}
}
return true;
}
2 >表单提交验证c?
2.1 表单不能ؓI?br />
<script language="javascript">
<!--
function CheckForm()
{
if (document.form.name.value.length == 0) {
alert("误入您姓名!");
document.form.name.focus();
return false;
}
return true;
}
-->
</script>
2.2 比较两个表单的值是否相?br />
<script language="javascript">
<!--
function CheckForm()
if (document.form.PWD.value != document.form.PWD_Again.value) {
alert("您两ơ输入的密码不一P请重新输?");
document.ADDUser.PWD.focus();
return false;
}
return true;
}
-->
</script>
2.3 表单只能ؓ数字?_",用于电话/银行帐号验证?可扩展到域名注册{?br />
<script language="javascript">
<!--
function isNumber(String)
{
var Letters = "1234567890-"; //可以自己增加可输入?br />
var i;
var c;
if(String.charAt( 0 )=='-')
return false;
if( String.charAt( String.length - 1 ) == '-' )
return false;
for( i = 0; i < String.length; i ++ )
{
c = String.charAt( i );
if (Letters.indexOf( c ) < 0)
return false;
}
return true;
}
function CheckForm()
{
if(! isNumber(document.form.TEL.value)) {
alert("您的电话L不合法!");
document.form.TEL.focus();
return false;
}
return true;
}
-->
</script>
2.4 表单输入数?长度限定
<script language="javascript">
<!--
function CheckForm()
{
if (document.form.count.value > 100 || document.form.count.value < 1)
{
alert("输入数g能小于零大于100!");
document.form.count.focus();
return false;
}
if (document.form.MESSAGE.value.length<10)
{
alert("输入文字于10!");
document.form.MESSAGE.focus();
return false;
}
return true;
}
//-->
</script>
2.5 中文/英文/数字/邮g地址合法性判?br />
<SCRIPT LANGUAGE="javascript">
<!--
function isEnglish(name) //英文值检?br />
{
if(name.length == 0)
return false;
for(i = 0; i < name.length; i++) {
if(name.charCodeAt(i) > 128)
return false;
}
return true;
}
function isChinese(name) //中文值检?br />
{
if(name.length == 0)
return false;
for(i = 0; i < name.length; i++) {
if(name.charCodeAt(i) > 128)
return true;
}
return false;
}
function isMail(name) // E-mail值检?br />
{
if(! isEnglish(name))
return false;
i = name.indexOf(" at ");
j = name dot lastIndexOf(" at ");
if(i == -1)
return false;
if(i != j)
return false;
if(i == name dot length)
return false;
return true;
}
function isNumber(name) //数值检?br />
{
if(name.length == 0)
return false;
for(i = 0; i < name.length; i++) {
if(name.charAt(i) < "0" || name.charAt(i) > "9")
return false;
}
return true;
}
function CheckForm()
{
if(! isMail(form.Email.value)) {
alert("您的电子邮g不合法!");
form.Email.focus();
return false;
}
if(! isEnglish(form.name.value)) {
alert("英文名不合法Q?);
form.name.focus();
return false;
}
if(! isChinese(form.cnname.value)) {
alert("中文名不合法Q?);
form.cnname.focus();
return false;
}
if(! isNumber(form.PublicZipCode.value)) {
alert("邮政~码不合法!");
form.PublicZipCode.focus();
return false;
}
return true;
}
//-->
</SCRIPT>
2.6 限定表单不能输入的字符
<script language="javascript">
<!--
function contain(str,charset)// 字符串包含测试函?br />
{
var i;
for(i=0;i<charset.length;i++)
if(str.indexOf(charset.charAt(i))>=0)
return true;
return false;
}
function CheckForm()
{
if ((contain(document.form.NAME.value, "%\(\)><")) || (contain(document.form.MESSAGE.value, "%\(\)><")))
{
alert("输入了非法字W?);
document.form.NAME.focus();
return false;
}
return true;
}
//-->
</script>
减肥瘦n品L 值得信赖*脉脉妆*正品现货谢绝讲h 〓深港商盟〓名品欧坊Q美国休闲品牌AFpdQ?/a> QQ三国游戏币及道具专卖?/a> 脸U红的瘦w旗舰店减肥瘦n品L 值得信赖*脉脉妆*正品现货谢绝讲h 〓深港商盟〓名品欧衣坊Q美国休闲品牌AFpdQ?/a> QQ三国游戏币及道具专卖?/a> 脸U红的瘦w旗舰店减肥瘦n品L 值得信赖*脉脉妆*正品现货谢绝讲h 〓深港商盟〓名品欧衣坊Q美国休闲品牌AFpdQ?/a> QQ三国游戏币及道具专卖?/a> 脸U红的瘦w旗舰店
<br>
<a href="<%=gateway.payment.payment.CreateUrl()%>"><img src="images/alipay_bwrx.gif" border="0"></a>
</body>
</html>
alipay_notify.jsp
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.util.*"%>
<%request.setCharacterEncoding("gb2312");
String partner = ""; //partner合作伙伴idQ必d写)
String privateKey = ""; //partner 的对应交易安全校验码Q必d写)
String alipayNotifyURL = "
+ "&partner="
+ partner
+ "¬ify_id="
+ request.getParameter("notify_id");
//获取支付宝ATNq回l果Qtrue是正的订单信息Qfalse 是无效的
//如果你的服务器不支持https讉K的话Q需要用老的接口查询地址了,论坛上会公布
String responseTxt = gateway.checkURL.checkURL
.check(alipayNotifyURL);
Map params = new HashMap();
//获得POST q来参数讄到新的params?br />
Map requestParams = request.getParameterMap();
for (Iterator iter = requestParams.keySet().iterator(); iter
.hasNext();) {
String name = (String) iter.next();
String[] values = (String[]) requestParams.get(name);
String valueStr = "";
for (int i = 0; i < values.length; i++) {
valueStr = (i == values.length - 1) ? valueStr + values[i]
: valueStr + values[i] + ",";
//valueStr = valueStr + values[i];
}
params.put(name, valueStr);
}
String mysign = com.alipay.util.SignatureHelper.sign(params, privateKey);
//out.println(mysign+"-----"+request.getParameter("sign"));
if (mysign.equals(request.getParameter("sign")) || responseTxt.equals("true") ){
out.println("success");
}
%>
retrun_url.jsp
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.util.*"%>
<%request.setCharacterEncoding("gb2312");
//String partner = ""; //partner合作伙伴idQ必d写)
String privateKey = ""; //partner 的对应交易安全校验码Q必d写)
// String alipayNotifyURL = "
// + "&partner="
// + partner
// + "¬ify_id="
// + request.getParameter("notify_id");
//获取支付宝ATNq回l果Qtrue是正的订单信息Qfalse 是无效的
//String responseTxt = gateway.checkURL.checkURL
// .check(alipayNotifyURL);
//׃return url的返回通知Qnotifyid为空Q无法到服务器查询真假,所以只要比对签名就?br />
Map params = new HashMap();
//获得POST q来参数讄到新的params?br />
Map requestParams = request.getParameterMap();
for (Iterator iter = requestParams.keySet().iterator(); iter
.hasNext();) {
String name = (String) iter.next();
String[] values = (String[]) requestParams.get(name);
String valueStr = "";
for (int i = 0; i < values.length; i++) {
valueStr = (i == values.length - 1) ? valueStr + values[i]
: valueStr + values[i] + ",";
//valueStr = valueStr + values[i];
}
params.put(name, valueStr);
}
String mysign = com.alipay.util.SignatureHelper_return.sign(params, privateKey);
//out.println(mysign+"-----"+request.getParameter("sign"));
if (mysign.equals(request.getParameter("sign")) ){
if (request.getParameter("trade_status").equalsIgnoreCase("TRADE_FINISHED")){
// 可以做重定向Q也可以用来虚拟物品发货
}
}
%>
SignatureHelper.java
package com.alipay.util;
import gateway.md5.Md5Encrypt;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Properties;
public class SignatureHelper {
public static String sign(Map params, String privateKey) {
Properties properties = new Properties();
for (Iterator iter = params.keySet().iterator(); iter.hasNext();) {
String name = (String) iter.next();
Object value = params.get(name);
if (value == null) {
continue;
}
if (name == null || name.equalsIgnoreCase("sign")
|| name.equalsIgnoreCase("sign_type")) {
continue;
}
properties.setProperty(name, value.toString());
}
String content = getSignatureContent(properties);
return sign(content, privateKey);
}
@SuppressWarnings("unchecked")
public static String getSignatureContent(Properties properties) {
StringBuffer content = new StringBuffer();
List keys = new ArrayList(properties.keySet());
Collections.sort(keys);
for (int i = 0; i < keys.size(); i++) {
String key = (String) keys.get(i);
String value = properties.getProperty(key);
content.append((i == 0 ? "" : "&") + key + "=" + value);
}
return content.toString();
}
public static String sign(String content, String privateKey) {
if (privateKey == null) {
return null;
}
String signBefore = content + privateKey;
// System.out.print(Md5Encrypt.md5(signBefore));
return Md5Encrypt.md5(signBefore);
}
}
SignatureHelper_return.java
package com.alipay.util;
import gateway.md5.Md5Encrypt;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Properties;
public class SignatureHelper_return {
public static String sign(Map params, String privateKey) {
Properties properties = new Properties();
for (Iterator iter = params.keySet().iterator(); iter.hasNext();) {
String name = (String) iter.next();
Object value = params.get(name);
if (value == null) {
continue;
}
if ( name.equalsIgnoreCase("sign")
|| name.equalsIgnoreCase("sign_type")) {
continue;
}
properties.setProperty(name, value.toString());
}
String content = getSignatureContent(properties);
return sign(content, privateKey);
}
@SuppressWarnings("unchecked")
public static String getSignatureContent(Properties properties) {
StringBuffer content = new StringBuffer();
List keys = new ArrayList(properties.keySet());
Collections.sort(keys);
for (int i = 0; i < keys.size(); i++) {
String key = (String) keys.get(i);
String value = properties.getProperty(key);
content.append((i == 0 ? "" : "&") + key + "=" + value);
}
return content.toString();
}
public static String sign(String content, String privateKey) {
if (privateKey == null) {
return null;
}
String signBefore = content + privateKey;
// System.out.print(Md5Encrypt.md5(signBefore));
return Md5Encrypt.md5(signBefore);
}
}
checkURL.java
package gateway.checkURL;
import java.net.*;
import java.io.*;
public class checkURL {
/**
* 对字W串q行MD5加密
* @param myUrl
*
* @param url
*
* @return 获取url内容
*/
public static String check(String urlvalue ) {
String inputLine = "";
try
{
URL url = new URL(urlvalue);
HttpURLConnection urlConnection = (HttpURLConnection)url.openConnection();
BufferedReader in = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));
String stTemp = "";
while((stTemp = in.readLine()) != null)
{
System.out.println(stTemp);
inputLine = inputLine + stTemp;
}
}
catch(Exception e)
{
e.printStackTrace();
}
return inputLine;
}
}
Md5Encrypt.java
/**
* Alipay.com Inc. Copyright (c) 2004-2005 All Rights Reserved.
*
* <p>
* Created on 2005-7-9
* </p>
*/
package gateway.md5;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
/**
* MD5加密法
*/
public class Md5Encrypt {
/**
* 对字W串q行MD5加密
*
* @param text 明文
*
* @return 密文
*/
public static String md5(String text) {
MessageDigest msgDigest = null;
try {
msgDigest = MessageDigest.getInstance("MD5");
} catch (NoSuchAlgorithmException e) {
throw new IllegalStateException("System doesn't support MD5 algorithm.");
}
msgDigest.update(text.getBytes());
byte[] bytes = msgDigest.digest();
byte tb;
char low;
char high;
char tmpChar;
String md5Str = new String();
for (int i = 0; i < bytes.length; i++) {
tb = bytes[i];
tmpChar = (char) ((tb >>> 4) & 0x000f);
if (tmpChar >= 10) {
high = (char) (('a' + tmpChar) - 10);
} else {
high = (char) ('0' + tmpChar);
}
md5Str += high;
tmpChar = (char) (tb & 0x000f);
if (tmpChar >= 10) {
low = (char) (('a' + tmpChar) - 10);
} else {
low = (char) ('0' + tmpChar);
}
md5Str += low;
}
return md5Str;
}
}
payment.java
package gateway.payment;
import java.util.*;
public class payment {
public static String CreateUrl() prestr = prestr + key; //生成Md5摘要Q?br />
String sign = gateway.md5.Md5Encrypt.md5(prestr); parameter = parameter + "sign=" + sign + "&sign_type=" + sign_type; //q回支付UrlQ?br />
return parameter; 注意:
{
Date out_trade_no=new Date();
String paygateway = "
String service = "create_direct_pay_by_user";
String partner = ""; //partner合作伙伴ID(必填)
String sign_type = "MD5";
String subject = "订单?" + out_trade_no; //subject 商品名称
String body = "交易地点Mh包含邮费"; //body 商品描述
String price = "100"; //price 商品单h 0.01?0000.00
String show_url = "
String quantity = "1";
String payment_type = "1";
String logistics_type = "EXPRESS";//logistic为物信?br />
String logistics_fee = "2";
String logistics_payment = "SELLER_PAY";
String logistics_type_1 = "EMS";
String logistics_fee_1 = "4";
String logistics_payment_1 = "SELLER_PAY";
String seller_email = ""; //卖家账号(必填)
String key = ""; //partner账户的支付宝安全校验?必填)
String notify_url = "
String[] Oristr ={ "service="+service, "partner=" + partner, "subject=" + subject, "body=" + body, "out_trade_no=" + out_trade_no, "price=" + price, "show_url=" + show_url, "quantity=" + quantity, "payment_type=" + payment_type, "logistics_type=" + logistics_type, "logistics_fee=" + logistics_fee, "logistics_payment=" + logistics_payment, "logistics_type_1=" + logistics_type_1, "logistics_fee_1=" + logistics_fee_1, "logistics_payment_1=" + logistics_payment_1, "seller_email=" + seller_email, "notify_url=" + notify_url };
Arrays.sort(Oristr);//Sorts the specified array of objects into ascending order
//according to the natural ordering of its elements.
String prestr="";
for (int i = 0; i < Oristr.length; i++)
{
if (i==Oristr.length-1)
{
prestr = prestr + Oristr[i] ;
}
else
{
prestr = prestr + Oristr[i] + "&";
}
}
//构造支付UrlQ?br />
String parameter = "";
parameter = parameter + paygateway;
for (int i = 0; i < Oristr.length; i++)
{
parameter = parameter + Oristr[i] + "&";
}
}
}
包的位置,
参数排序是以字母的排序排?br />
转自:http://www.tkk7.com/etlan/archive/2006/06/30/55990.html
]]>