📄 cl_clsonlinepay.asp
字号:
<%
'===================================================
' CreateLive CMS Version 4.0
' Powered by Aspoo.CoM
'===================================================
' File: Cl_ClsOnlinePay.asp
' Date: 2007-1-11
' Mail: Info@aspoo.cn
' Q Q: 3315263, 596197794
' Msn : support@aspoo.cn, Clw866@hotmail.com
' Web : http://www.aspoo.com, http://www.aspoo.net
' Bbs : http://bbs.aspoo.com, http://bbs.aspoo.net
' Copyright (C) 2005-2007 Aspoo.CoM All Rights Reserved.
'===================================================
Rem 在线支付接口类
Class ClsOnlinePay
Private P_Md5Text Rem 信息进行MD5加密后的字符串
Public P_Mid Rem 商户编号,在申请商户成功后即可获得
Public P_OrderID Rem 订单编号(指商城订单,不是支付订单)
Public P_PayNum Rem 支付编号
Public P_PayAmount Rem 支付金额,以元为单位,小数点后保留两位,如:13.05
Public P_PayDate Rem 支付日期,格式为"yyyymmdd",如20050102
Public P_TransNum Rem 云网支付网关提供的该笔订单的交易流水号,供日后查询、核对使用;
Public P_Status Rem 成功状态(网银为20,云网为Y)
Public P_MoneyType Rem 支付币种,0为人民币
Public P_Remark1 Rem 备注1
Public P_Remark2 Rem 备注2
Public P_BankInfo Rem 银行信息
Public P_PayBank Rem 支付银行
Public P_UserID,P_UserName Rem 支付用户ID,用户名
Public P_PayMsg Rem 支付处理信息
Public P_IsSucceed Rem 支付是否成功 True,False
Public ReceiveType
Private Sub Class_Initialize()
P_IsSucceed = False
ReceiveType = 1
End Sub
Private Sub class_terminate()
CloseAllObj
End Sub
Public Sub Tenpay()
Dim Md5Str
Dim cmdno
cmdno = Trim(Request("cmdno"))
P_Mid = Trim(Request("bargainor_id")) '2
P_PayNum = Trim(Request("sp_billno"))
P_PayDate = Trim(Request("date")) '2
P_TransNum = Trim(Request("transaction_id"))'2
P_PayBank = "不详"'Trim(request("v_pmode"))
P_Status = Trim(Request("pay_result"))
P_BankInfo = Trim(Request("pay_info"))
P_PayAmount = Trim(Request("total_fee"))
P_MoneyType = Trim(Request("fee_type"))
P_Remark1 = Trim(Request("attach"))
'P_Remark2 = Trim(request("c_memo2"))
P_Md5Text = Trim(Request("sign"))
Md5Str = "cmdno=" & cmdno & "&pay_result=" & P_Status &_
"&date=" & P_PayDate & "&transaction_id=" & P_TransNum &_
"&sp_billno=" & P_PayNum & "&total_fee=" & P_PayAmount &_
"&fee_type=" & P_MoneyType & "&attach=" & P_Remark1 &_
"&key=" & Cl.Product_Setting(5)
Md5Str = Ucase(Trim(md5(Md5Str,32)))
if P_Md5Text="" or P_PayAmount="" Then
P_PayMsg = "MD5校验错误!"
Exit Sub
End if
if P_Md5Text <> Md5Str Then
P_PayMsg = "MD5校验错误!"
Exit Sub
End If
If Trim(P_Mid) <> Trim(Cl.Product_Setting(4)) Then
P_PayMsg = "商户信息错误!"
Exit Sub
End if
Rem 判断成功状态是否为0
if CInt(P_Status) <> 0 Then
P_PayMsg = "支付失败!"
Exit Sub
End If
P_PayAmount = P_PayAmount/100
Rem 用户签收
UserReceive
End Sub
Public Sub Alipay()
Dim Md5Str
Dim alipayNotifyURL,Retrieval,ResponseText
P_PayNum = Trim(Request("out_trade_no"))
P_PayDate = Trim(Request("notify_time")) '2
P_TransNum = Trim(Request("notify_id"))'2
P_PayBank = "不详"'Trim(request("v_pmode"))
P_Status = Trim(Request("trade_status"))
P_BankInfo = P_Status'Trim(Request("pay_info"))
P_PayAmount = Trim(Request("total_fee"))
P_Md5Text = Trim(Request("sign"))
'ATN 校验地址 (两种方案可以选择使用https.http)如果你的服务器不支持https访问的话,可以使用http查询地址
alipayNotifyURL = "http://notify.alipay.com/trade/notify_query.do?"
'alipayNotifyURL = "http://notify.alipay.com/trade/notify_query.do?"
alipayNotifyURL = alipayNotifyURL & "partner=" & Cl.Product_Setting(4) & "¬ify_id=" & P_TransNum
Set Retrieval = Server.CreateObject("Msxml2.ServerXMLHTTP.3.0")
Retrieval.setOption 2, 13056
Retrieval.open "GET", alipayNotifyURL, False, "", ""
Retrieval.send()
ResponseText = Retrieval.ResponseText
Set Retrieval = Nothing
' Md5Str = GetAlipayMD5(subject,Cl.MemberName,P_PayNum,P_PayAmount,quantity,seller_email,Post_Url,return_url)
' If P_Md5Text <> Md5Str Then
' P_PayMsg = "MD5校验错误!"
' Exit Sub
' End If
If ResponseText<>"true" Then
P_PayMsg = "MD5校验错误!"
Exit Sub
End If
'判断支付状态,(文档中有支付枚举表,可供参考)
'"WAIT_SELLER_SEND_GOODS"
If P_Status <> "TRADE_FINISHED" Then
P_PayMsg = "支付失败!"
Exit Sub
End If
Rem 用户签收
UserReceive
End Sub
Rem 云网在线支付
Public Sub CnCard()
Dim Md5Str
P_Mid = Trim(request("c_mid")) '2
P_PayNum = Trim(request("c_order"))
P_PayDate = Trim(request("c_ymd")) '2
P_TransNum = Trim(request("c_transnum")) '2
P_PayBank = "不详"'Trim(request("v_pmode"))
P_Status = Trim(request("c_succmark"))
P_BankInfo = Trim(request("c_cause"))
P_PayAmount = Trim(request("c_orderamount"))
P_MoneyType = Trim(request("c_moneytype"))
P_Remark1 = Trim(request("c_memo1"))
P_Remark2 = Trim(request("c_memo2"))
P_Md5Text = Trim(request("c_signstr"))
Rem 校验信息完整性
if P_Mid="" or P_PayNum="" or P_PayAmount="" or P_PayDate="" or P_MoneyType="" or P_TransNum="" or P_Status="" or P_Md5Text="" then
P_PayMsg = "支付信息错误!"
Exit Sub
end if
Md5Str = P_Mid & P_PayNum & P_PayAmount & P_PayDate & P_TransNum & P_Status & P_MoneyType & P_Remark1 & P_Remark2 & Cl.Product_Setting(5)
Md5Str = Trim(md5(Md5Str,32)) Rem 云网支付不用转为大写
if P_Md5Text <> Md5Str Then
P_PayMsg = "MD5校验错误!"
Exit Sub
End If
If Trim(P_Mid) <> Trim(Cl.Product_Setting(4)) Then
P_PayMsg = "商户信息错误!"
Exit Sub
End if
Rem 判断成功状态是否为Y
if P_Status <> "Y" Then
P_PayMsg = "支付失败!"
Exit Sub
End If
Rem 用户签收
UserReceive
End Sub
Rem 网银在线支付
Public Sub ChinaBank()
Dim Md5Str
P_PayNum = Trim(request("v_oid"))
P_PayBank = Trim(request("v_pmode"))
P_Status = Trim(request("v_pstatus"))
P_BankInfo = Trim(request("v_pstring"))
P_PayAmount = Trim(request("v_amount"))
P_MoneyType = Trim(request("v_moneytype"))
P_Remark1 = Trim(request("remark1"))
P_Remark2 = Trim(request("remark2"))
P_Md5Text = Trim(request("v_md5str"))
Md5Str = P_PayNum & P_Status & P_PayAmount & P_MoneyType & Cl.Product_Setting(5)
Md5Str = Ucase(Trim(md5(Md5Str,32)))
if P_Md5Text="" Or P_PayAmount="" Or Not IsNumeric(P_PayAmount) Or P_Status="" or Not IsNumeric(P_Status) Then
P_PayMsg = "支付信息错误!"
Exit Sub
End if
'对比md5,要转换为大写
if P_Md5Text <> Md5Str Then
P_PayMsg = "MD5校验错误!"
Exit Sub
End if
Rem 判断成功状态是否为20
if Cint(P_Status) <> 20 Then
P_PayMsg = "支付失败!"
Exit Sub
End If
Rem 用户签收
UserReceive
End Sub
Rem 支付成功后,用户签收处理过程(各支付接口通用)
Public Sub UserReceive()
'On Error Resume Next
Dim rsPay,Rs,SQL
Dim sMoney,PaymentID
Set rsPay = Server.CreateObject("Adodb.recordSet")
SQL="Select Top 1 * From Cl_Payment where PaymentNum='"&P_PayNum&"'"
OpenConn : rsPay.Open SQL,Conn,1,3
if rsPay.Bof and rsPay.Eof Then
rsPay.Close:Set rsPay=Nothing
'response.write("error")
P_PayMsg = "找不到您下的订单,所以系统无法自动完成支付操作,请联系官方处理!"
'Response.Write("找不到您下的订单,所以系统无法自动完成支付操作,请联系官方处理!")
Exit Sub
Response.end
End If
P_IsSucceed = True
P_UserID = Clng(rsPay("UserID"))
P_UserName = Trim(rsPay("UserName"))
P_OrderID = Clng(rsPay("OrderID"))
sMoney = Int(rsPay("PayMoney"))
PaymentID = Clng(rsPay("PaymentID"))
If rsPay("Status")=1 then
rsPay.Close:Set rsPay=Nothing
'response.write("ok")
P_PayMsg = "支付已经完成!"
'Response.Write("支付已经完成,您已经取货,请不要重复取货!")
Exit Sub
Response.end
End If
Set Rs=Server.CreateObject("Adodb.recordSet")
if P_OrderID > 0 then '订单ID大于0的处理
SQL="Select OrderID,UserID,MoneyReceipt,PresentExp,Status From Cl_Order Where OrderID="&P_OrderID&" and Status<2"
Rs.Open SQL,Conn,1,3
if Not (Rs.Bof and Rs.Eof) then
Rs(2) = Rs(2) + sMoney
Rs(4) = 2
Rs.Update
if Rs(3)>0 then Cl.Execute_U("Update "&Db.UserTable&" Set TotalExp=TotalExp+"&Rs(3)&" where UserID="&Rs(1)&"")
P_Remark1="订单ID("&P_OrderID&")支付完成,系统自动已赠送ID为("&Rs(1)&")的用户 "&Rs(3)&"积分。"
else
P_Remark1="系统找不到对应订单号,所以无法自动处理订单。"
End if
Rs.Close
Rem 2008-02-17
SQL="Select InfoID,BuyNum From Cl_OrderItem Where OrderID="&P_OrderID&" order by ItemID"
Rs.Open SQL,Conn,1,1
Dim rsProduct, OIN
Dim rsCz, CardNum, CardPass, Message
Dim ArrCardNum,ArrCardPass
Do While Not Rs.Eof
Set rsProduct = Cl.Execute("Select ProductName,ProductType,CardPoint From Cl_Product Where InfoID="&CLng(Rs(0))&"")
If Not rsProduct.Eof then
If rsProduct(1)=2 Then
For OIN=1 To Rs(1) Step 1
set rsCz=server.createobject("adodb.recordset")
OpenConn : rsCz.open "select Top 1 * from Cl_UserCz",Conn,1,3
Randomize
CardNum = "P_UB_" & Year(Now()) & Right("0"&Month(now),2) & Right("0"&Day(now),2) & Right("0"&Hour(now),2) & Right("0"&Minute(now),2) & Right("0"&Second(now),2) & Int(Rnd * 8888+1000)
CardPass= Cl.Createpass(8)
rsCz.addnew
rsCz("CzNum") = CardNum
rsCz("Pass") = CardPass
rsCz("point") = rsProduct(2)
rsCz("DayNum") = 0
rsCz("IsUser") = 0
rsCz("CzType") = 1
rsCz("EMUser") = P_UserName
rsCz.update
rsCz.close:set rsCz=Nothing
If OIN>1 then
ArrCardNum = ArrCardNum & ", " & CardNum
ArrCardPass = ArrCardPass & ", " & CardPass
Else
ArrCardNum = CardNum
ArrCardPass = CardPass
End If
Next
Message="您已成功购买本站商品("&rsProduct(0)&") 此商品为充值卡,以下为充值卡信息,请查收!" & VbCrlf & _
"卡号为:"&ArrCardNum&"" & VbCrlf & _
"密码为:"&ArrCardPass&"" & VbCrlf & _
"您可通过用户控制面板充值卡充值,也可以出售、赠送或转让您的充值卡,谢谢您的参与!"& VbCrlf
Cl.Execute_U("insert into "&Db.MessageTable&" (incept,sender,title,content,sendtime,flag,issend) values ('"&P_UserName&"','Admin','您已成功购买本站商品!','" & Message & "',"&SqlNowString_U&",0,1)")
Cl.Update_UserMsg(P_UserName)
P_Remark1=P_Remark1&"商品ID("&Rs(0)&")充值卡("&ArrCardNum&")已发往用户收件箱。"
End if
End If
Set rsProduct = Nothing
Rs.MoveNext
Loop
Rs.Close
Rem End
ElseIf P_UserID > 0 then '订单ID=0,用户ID大于0的处理
SQL="Select "&Db.UserID&","&Db.UserName&","&Db.UserPoint&","&Db.UserMoney&" From "&Db.UserTable&" where UserID="&P_UserID&""
OpenConn_U : Rs.Open SQL,Conn_U,1,3
if Not (Rs.Bof and Rs.Eof) Then
'Rs(Db.UserPoint)=Rs(Db.UserPoint) + sMoney
Rs(Db.UserMoney)=Rs(Db.UserMoney) + sMoney
Rs.Update
P_Remark1="系统已自动在其对应账户("&Rs(Db.UserName)&")上添加"&Cl.Web_Setting(26)&":"&sMoney&""&Cl.Web_Setting(27)&"。"
end if
Rs.Close
Else '游客支付的处理
P_Remark1="系统未作任何处理。"
End if
Set Rs=Nothing
P_Remark1 = rsPay("Remark") & P_Remark1
rsPay("TrueMoney") = P_PayAmount
Select Case ReceiveType
Case 1
rsPay("eBankInfo") = "①" & P_BankInfo'"支付成功"
Case 2
rsPay("eBankInfo") = "②" & P_BankInfo'"支付成功"
Case Else
rsPay("eBankInfo") = "③" & P_BankInfo'"支付成功"
End Select
rsPay("Status") = 1
rsPay("Remark") = P_Remark1
rsPay.Update
rsPay.Close:Set rsPay=Nothing
Cl.Execute("insert into Cl_BankrollItem (UserID,UserName,PayMoney,TrueMoney,PayType,CurrencyType,BankName,ItemType,OrderID,PaymentID,Remark,AddTime) " & _
"values ("&P_UserID&",'"&P_UserName&"',"&sMoney&","&P_PayAmount&",3,0,'"&P_PayBank&"',0,"&P_OrderID&","&PaymentID&",'"&P_Remark1&"','"&now()&"')")
'if Err then
' Response.Write "执行程序发现错误,为不耽误您的使用,请及时报告管理员给予解决!<BR>"
' Response.Write "错 误 号: " & Err.Number & "<BR>"
' Response.Write "错误描述:" & Err.Description & "<BR>"
' Response.Write "错误来源:" & Err.Source & "<BR>"
' Response.end
'end if
End Sub
End Class
Dim OnlinePay
Set OnlinePay = New ClsOnlinePay
%>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -