一购物网站新增加北京网银的在线支付接口,客户可以支付成功,但是返回页面不能显示,返回的数据也写不进数据库,做过这个接口的朋友帮帮忙.
功能:根据返回传递的值,如果支付成功,把支付客户的订单信息写进数据库中的表pay ,表pay有字段:id(自动编号),user(客户的用户名),orderid(客户的订单号),amount(订单支付的金额),time(支付成功时间).
返回程序如下:
[html]
<!--#include file="conn.asp"-->
<!--#include file="MD5.asp"-->
<title>支付结果</title>
<!--#include file="header.htm"-->
<%
v_oid=request("v_oid") ' 商户发送的v_oid定单编号
v_pmode=request("v_pmode") '支付方式(字符串)
v_pstatus=request("v_pstatus") '支付状态 20(支付成功) 30(支付失败)
v_pstring=request("v_pstring") '支付结果信息 支付完成(当v_pstatus=20时) 失败原因(当v_pstatus=30时)
v_amount=request("v_amount") '订单实际支付金额
v_moneytype=request("v_moneytype") '订单实际支付币种
v_rcvname=request("v_rcvname") '客户用户名
v_md5str=request("v_md5str") 'Md5校验串
key="*****************" '私钥值,商户可上chinabank后台自行设定
if request("v_md5str")="" then
response.Write("v_md5str:空值")
response.end
end if
'md5校验
text = v_oid&v_pstatus&v_amount&v_moneytype&key
md5text = Ucase(trim(md5(text)))
'按md5检验情况输出结果 Ucase转换为大写
if md5text<>v_md5str then
response.write("MD5 error")
else
'商户系统的逻辑处理(例如判断金额,判断支付状态,更新订单状态等等).......
if v_pstatus=20 then
'支付成功
set rs=server.CreateObject("adodb.recordset")
rs.open "select * from pay",conn,1,3
rs.addnew
rs("user")=v_rcvname
rs("orderid")=v_oid
rs("amount")=v_amount
rs("time")=now
rs.update
rs.close
set rs=nothing
else
'支付失败
end if
%>
<table width="500px" border="0" align="center">
<tr>
<td> <p><b><font color="#FF0000">提示:</font> 您网上在线支付情况反馈如下:</b><br>
此次交易编号: <%=v_oid%></p>
<p>
<%if v_pstatus=20 then
zhuangtai = "在线支付已经支付成功"
%>
在线支付已经支付成功
<%elseif v_pstatus=30 then
zhuangtai = "在线支付失败!"
%>
在线支付失败!
<%end if%>
</p>
<p> 支付代码号:<%=v_pstatus%><br>
<br>
在线支付结果:<%=v_pstring%> </p>
<p>您支付的金额:<%=v_amount%></p> </td>
</tr>
</table>
<!--#include file="footer.htm"-->
[/html]