关注联楷|返回首页 | 网站案例 | 帮助中心

合作共赢、快速高效、优质的网站建设提供商

上海网站建设 

服务热线:021-61394118

上海联楷科技

asp 集成paypal

作者:佚名   时间:2012-02-05   分享到:

首先你要有2个帐号用来付款和收款,paypal想的很周到,在下面这个地址可以注册
https://www.sandbox.paypal.com/cgi-bin/webscr
注册方法,现在注册一个和你平时一样的帐号,单独注册,这个需要,
好了之后会让你添加test account,需要2个,一个付款的,一个收款的,地址前缀随便写,密码用简单的一些的,例如12345678,金额随便填写个几千几百都行,反正是测试用的。
2个都添加好了之后的界面如下
然后还需要做一件事情,设置返回,需要在paypal里面设置得到一个身份标记,和填写返回地址
身份标记获得方法
1、登录paypal并,选择中文语言。
2、在“我的贝宝”-->“用户信息” -->“更多选项”-->“网站付款习惯设定” --> 自动返回设置为开启,返回url修改为自己网站的,付款数据传输设置为开启,其它不用改,点保存
注意:如果你是本机测试,返回地址用localhost是不可以的,我是局域网环境,用本机的局域网IP,192.168.0.2后面再写上网页路径就可以了
现在可以开始在网页中加入代码了

上面几行的代码意思你可以在其他地方参考,主要是注意到这个action是测试专用的。
发送测试地址后,你就可以用刚才的测试帐号付款了
付款完成后会返回到你设置的页面paypalreturn.asp
<%mainpath="data/1.mdb"
Set conn = Server.CreateObject("ADODB.Connection")
connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(mainpath)
conn.Open connstr
%>
<%
dim Msg

str1=Trim(request.querystring("tx"))
str2="&at=RVgu3U_YDBUHGzfnTUvH9ZZv2AAX0uNkALxfJ5TKko5Pq0lO3PJVZbLrlOK" '这里是Paypal身份标记,取得方法http://blog.sina.com.cn/s/blog_51c904510100fpdj.html
str = "?tx="&str1& "&cmd=_notify-synch"&str2
paypalurl="https://www.sandbox.paypal.com/cgi-bin/webscr" '测试版paypal,非测试版https://www.paypal.com/cgi-bin/webscr
paypalurl=paypalurl&str

Set objHttp=Server.CreateObject("Msxml2.ServerXMLHTTP.3.0")
objHttp.setOption 2, 13056
objHttp.open "POST",paypalurl,False,"",""
objHttp.send()

ResponseTxt = objHttp.ResponseText
Set objHttp=Nothing

ResponseTxt=UrlDecode(ResponseTxt)
If Mid(ResponseTxt,1,7) = "SUCCESS" Then
Call viate(dingdan) 'viate是自定义函数,可以在这里设置更新订单的代码

Msg = "非常感谢,您的订单已支付成功,我们会在24小时内发货!"
Else
Msg = "非常抱歉,在支付过程中,验证支付数据出错,有问题请联系管理员!"
End If

response.write "" '支付完毕返回用户订单页 !


Function viate(dingdan)
Form_Id=int(request("dingdan_id"))
'response.Write Form_Id
set rs=server.CreateObject("adodb.recordset")
sql="select * from orderlist where Form_Id="&Form_Id&"" '这里是订单表 如果会员支付成功, 更改订单状态为已付款 !
rs.open sql,conn,3,3
If Not(rs.bof Or rs.eof) Then
rs("fukuan")=2
rs("fukuantime")=now()
rs.update
Else
response.write "订单号出错,请联系管理员!"
End If
rs.close
Set rs=Nothing

End Function



function urldecode(encodestr)
newstr=""
havechar=false
lastchar=""
for i=1 to len(encodestr)
char_c=mid(encodestr,i,1)
if char_c="+" then
newstr=newstr & " "
elseif char_c="%" then
next_1_c=mid(encodestr,i+1,2)
next_1_num=cint("&H" & next_1_c)
if havechar then
havechar=false
newstr=newstr & chr(cint("&H" & lastchar & next_1_c))
else
if abs(next_1_num)<=127 then
newstr=newstr & chr(next_1_num)
else
havechar=true
lastchar=next_1_c
end if
end if
i=i+2
else
newstr=newstr & char_c
end if
next
urldecode=newstr
end Function
%>
上面这个就是更新数据库中订单状态为已经付款了,你可以根据你的数据库和表稍微改一下就可以了,过一段时间研究一下php版本的,应该差不多的,只是最后这个返回有少量的差异。

截图了一下,我这边付款后返回的状态,
我这个是支付宝和paypal都合适的,其实一直想搞paypal但是因为一直不能测试支付这个环节。
 



如没特殊注明,文章均为上海联楷网络原创,转载请注明来自:http://www.linksj.com/contact/20151229/n7697.html

上海联楷网络新闻