网银在线支付接口代码
<%
Class WebPayment_Cls
Private sPaymentid, sPaymentkey, sReturnurl, sPlatform, sPstate
Private sOrderid, sPaymoney, sMoneytype, sLanguage,sFD_NPSID
Private sComment, sRemark, sConsigner, submit_value
Private sConsignee, sAddress, sPostcode, sTelephone, sEmail
Public ErrNumber, mPercent
Private strChinaeBank, sEncrypt
Private PaymentContent
Private Sub Class_Initialize()
On Error Resume Next
sPaymentid = "1051011239"
sPaymentkey = "newasp778899"
sReturnurl = "http://www.111cn.net"
sPlatform = 1
sOrderid = "2005328-1001-5188"
sPaymoney = "100.00"
sMoneytype = 1
sLanguage = 1
sPstate = 0
sComment = "在线支付"
sRemark = "在线支付"
sConsigner = "Consigner"
sConsignee = "Consignee"
sAddress = "武汉"
sPostcode = "51800"
sTelephone = "027-5188888"
sEmail = "email@email.com"
submit_value = "进入在线支付平台"
sEncrypt = "12345678"
mPercent = 0
End Sub
Private Sub Class_Terminate()
End Sub
'---- 错误代码
Public Property Get Description()
Select Case ErrNumber
Case 1: Description = "定单号错误。"
Case 2: Description = "付款金额错误!"
Case 3: Description = "认证签名不能为空值!"
Case 4: Description = "认证信息出错,此次交易失败!!!"
Case 5: Description = "认证信息出错,请不要重复提交数据,此次交易失败!!!"
Case 6: Description = "对不起!本站暂未开通在线支付功能,请选择其它方法支付"
Case 7: Description = "错误的系统参数"
Case 8: Description = "本站暂未开通在线支付功能,或者本站程序没有注册,请选择其它方法支付"
Case Else
Description = Empty
End Select
End Property
'---- 手续费百分比
Public Property Let Percent(ByVal NewValue)
mPercent = NewValue
End Property
'---- 支付平台
Public Property Let PayPlatform(ByVal NewValue)
sPlatform = NewValue
End Property
'---- 支付ID
Public Property Let Paymentid(ByVal NewValue)
sPaymentid = NewValue
If Trim(sPaymentid) = "" Then
sPaymentid = "1051011239"
End If
End Property
Public Property Get Paymentid()
Paymentid = sPaymentid
End Property
'---- 支付KEY
Public Property Let Paymentkey(ByVal NewValue)
sPaymentkey = NewValue
If Trim(sPaymentkey) = "" Then
sPaymentkey = "Newasp778899"
End If
End Property
'---- 返回URL
Public Property Let Returnurl(ByVal NewValue)
sReturnurl = NewValue
End Property
'---- 交易状态
Public Property Let Pstate(ByVal NewValue)
sPstate = NewValue
End Property
Public Property Get Pstate()
Pstate = sPstate
End Property
'--- 定单号
Public Property Let Orderid(ByVal NewValue)
sOrderid = NewValue
End Property
Public Property Get Orderid()
Orderid = sOrderid
End Property
Public Property Get FD_NPSID()
FD_NPSID = sFD_NPSID
End Property
'---- 支付金额
Public Property Let Paymoney(ByVal NewValue)
sPaymoney = ReadPayMoney(NewValue, False)
End Property
Public Property Get Paymoney()
Paymoney = sPaymoney
End Property
'---- 交易金额
Public Property Get Buymoney()
Buymoney = ReadPayMoney(sPaymoney, True)
End Property
'---- 手续费
Public Property Get ServiceCharge()
ServiceCharge = sPaymoney - ReadPayMoney(sPaymoney, True)
End Property
'---- 支付币种
Public Property Let Moneytype(ByVal NewValue)
sMoneytype = NewValue
End Property
Public Property Get Moneytype()
Moneytype = sMoneytype
End Property
'---- 支付语言
Public Property Let Planguage(ByVal NewValue)
sLanguage = NewValue
End Property
'---- 支付备注
Public Property Let Comment(ByVal NewValue)
sComment = NewValue
End Property
Public Property Get Comment()
Comment = sComment
End Property
'---- 支付备注
Public Property Let Remark(ByVal NewValue)
sRemark = NewValue
End Property
Public Property Get Remark()
Remark = sRemark
End Property
'---- 收货人名称
Public Property Let Consignee(ByVal NewValue)
sConsignee = NewValue
End Property
Public Property Get Consignee()
Consignee = sConsignee
End Property
'---- 收货人地址
Public Property Let Address(ByVal NewValue)
sAddress = NewValue
End Property
Public Property Get Address()
Address = sAddress
End Property
'---- 收货人邮编
Public Property Let Postcode(ByVal NewValue)
sPostcode = NewValue
End Property
Public Property Get Postcode()
Postcode = sPostcode
End Property
'---- 收货人电话
Public Property Let Telephone(ByVal NewValue)
sTelephone = NewValue
End Property
Public Property Get Telephone()
Telephone = sTelephone
End Property
'---- 收货人E_Mail
Public Property Let Email(ByVal NewValue)
sEmail = NewValue
End Property
Public Property Get Email()
Email = sEmail
End Property
'---- 发货人
Public Property Let Consigner(ByVal NewValue)
sConsigner = NewValue
End Property
Public Property Get Consigner()
Consigner = sConsigner
End Property
'---- 提交按钮
Public Property Let submitvalue(ByVal NewValue)
submit_value = NewValue
End Property
'---- 加密密码
Public Property Let Encrypt(ByVal NewValue)
sEncrypt = NewValue
End Property
'================================================
'过程名:GetWebSiteUrl
'作 用:取得带端口的URL
'================================================
Public Property Get GetWebSiteUrl()
If Request.ServerVariables("SERVER_PORT") = "80" Then
GetWebSiteUrl = "http://" & Request.ServerVariables("server_name")
Else
GetWebSiteUrl = "http://" & Request.ServerVariables("server_name") & ":" & Request.ServerVariables("SERVER_PORT")
End If
End Property
'================================================
'过程名:PaymentPlatform
'作 用:在线支付平台
'================================================
Public Sub PaymentPlatform()
On Error Resume Next
If sPlatform = 1 Then
Call Payment_nps
ElseIf sPlatform = 2 Then
Call Payment_chinabank
Else
ErrNumber = 6
Exit Sub
End If
Response.Write PaymentContent
End Sub
'================================================
'函数名:ShowPayment
'作 用:显示在线支付平台
'================================================
Public Function ShowPayment()
On Error Resume Next
If sPlatform = 1 Then
Call Payment_nps
ElseIf sPlatform = 2 Then
Call Payment_chinabank
Else
ShowPayment = ""
ErrNumber = 6
Exit Function
End If
ShowPayment = PaymentContent
End Function
'================================================
'过程名:payment_nps
'作 用:NPS在线支付平台
'================================================
Private Sub Payment_nps()
On Error Resume Next
Dim digest, OrderMessage
Dim m_url, m_orderid, m_oamount, modate, m_ocomment
Dim m_ocurrency, m_language, s_postcode, s_tel, s_eml, r_postcode, r_tel, r_eml
m_orderid = Trim(sOrderid) '---- 定单号
m_oamount = sPaymoney '---- 金 额
m_url = sReturnurl '---- 返回URL
m_ocurrency = sMoneytype '---- 币 种
m_language = sLanguage '---- 语言选择
s_postcode = sPostcode '---- 消费者邮码
s_tel = sTelephone '---- 消费者邮码
s_eml = sEmail '---- 消费者邮件
r_postcode = sPostcode '---- 收货人电话
r_tel = sTelephone '---- 收货人电话
r_eml = sEmail '---- 收货人邮件
m_ocomment = sComment '---- 备 注
modate = Date '---- 日 期
OrderMessage = sPaymentid & m_orderid & m_oamount & m_ocurrency & m_url & m_language & s_postcode & s_tel & s_eml & r_postcode & r_tel & r_eml & modate & sPaymentkey
digest = UCase(Trim(vmd.MD5(OrderMessage,True)))
PaymentContent = "<table> <tr>" & vbNewLine
PaymentContent = PaymentContent & "<form method=""post"" action=""https://payment.nps.cn/VirReceiveMerchantAction.do"" name=""payform"" target=""_blank"">" & vbNewLine
PaymentContent = PaymentContent & " <td>" & vbNewLine
PaymentContent = PaymentContent & "<input type=""hidden"" Name=""M_ID"" value=""" & sPaymentid & """>" & vbNewLine '---- 商 家 号
PaymentContent = PaymentContent & "<input type=""hidden"" Name=""MOrderID"" value=""" & m_orderid & """>" & vbNewLine '---- 订 单 号
PaymentContent = PaymentContent & "<input type=""hidden"" Name=""MOAmount"" value=""" & m_oamount & """>" & vbNewLine '---- 订单金额
PaymentContent = PaymentContent & "<input type=""hidden"" Name=""MOCurrency"" value=""" & m_ocurrency & """>" & vbNewLine '---- 币 种
PaymentContent = PaymentContent & "<input type=""hidden"" name=""M_URL"" value=""" & m_url & """>" & vbNewLine '---- 返回地址
PaymentContent = PaymentContent & "<input type=""hidden"" Name=""M_Language"" value=""" & m_language & """>" & vbNewLine '---- 语言选择
PaymentContent = PaymentContent & "<input type=""hidden"" Name=""S_Name"" value=""" & sConsignee & """>" & vbNewLine '---- 消费者姓名
PaymentContent = PaymentContent & "<input type=""hidden"" Name=""S_Address"" value=""" & sAddress & """>" & vbNewLine '---- 消费者住址
PaymentContent = PaymentContent & "<input type=""hidden"" Name=""S_PostCode"" value=""" & s_postcode & """>" & vbNewLine '---- 消费者邮码
PaymentContent = PaymentContent & "<input type=""hidden"" Name=""S_Telephone"" value=""" & s_tel & """>" & vbNewLine '---- 消费者电话
PaymentContent = PaymentContent & "<input type=""hidden"" Name=""S_Email"" value=""" & s_eml & """>" & vbNewLine '---- 消费者邮件
PaymentContent = PaymentContent & "<input type=""hidden"" Name=""R_Name"" value=""" & sConsignee & """>" & vbNewLine '---- 收货人姓名
PaymentContent = PaymentContent & "<input type=""hidden"" Name=""R_Address"" value=""" & sAddress & """>" & vbNewLine '---- 收货人住址
PaymentContent = PaymentContent & "<input type=""hidden"" Name=""R_PostCode"" value=""" & r_postcode & """>" & vbNewLine '---- 收货人邮码
PaymentContent = PaymentContent & "<input type=""hidden"" Name=""R_Telephone"" value=""" & r_tel & """>" & vbNewLine '---- 收货人电话
PaymentContent = PaymentContent & "<input type=""hidden"" Name=""R_Email"" value=""" & r_eml & """>" & vbNewLine '---- 收货人邮件
PaymentContent = PaymentContent & "<input type=""hidden"" name=""MOComment"" value=""" & m_ocomment & """>" & vbNewLine '---- 备 注
PaymentContent = PaymentContent & "<input type=""hidden"" Name=""MODate"" value=""" & modate & """>" & vbNewLine '---- 时间字段
PaymentContent = PaymentContent & "<input type=""hidden"" Name=""State"" value=""" & sPstate & """>" & vbNewLine '---- 交易状态
PaymentContent = PaymentContent & "<input type=""hidden"" Name=""digestinfo"" value=""" & digest & """>" & vbNewLine '---- 签名认证
PaymentContent = PaymentContent & "<input Type=""submit"" Name=""submit"" value=""" & submit_value & """ class=""Button""> " & vbNewLine '---- 确认支付
PaymentContent = PaymentContent & " </td> </tr>" & vbNewLine
PaymentContent = PaymentContent & "</form>" & vbNewLine
PaymentContent = PaymentContent & "</table>" & vbNewLine
End Sub
'================================================
'过程名:payment_chinabank
'作 用:网银在线支付平台
'================================================
Private Sub Payment_chinabank()
On Error Resume Next
Dim v_mid, v_amount, v_oid, v_moneytype, style, v_url, remark1, remark2
Dim OrderMessage, v_md5info
Dim v_rcvname, v_rcvaddr, v_rcvtel, v_rcvpost, v_ordername, v_orderemail
v_mid = sPaymentid '---- 商 家 号
v_amount = sPaymoney '---- 金 额
v_oid = Trim(sOrderid) '---- 定单号
v_moneytype = "CNY" '---- 币 种
style = sPstate '---- 指网关模式0(普通),1(银行列表中带外卡)
v_url = sReturnurl '---- 返回URL
remark1 = sComment '---- 备 注1
remark2 = sTelephone '---- 备 注2
OrderMessage = v_amount & v_moneytype & v_oid & v_mid & v_url & sPaymentkey
v_md5info = UCase(Trim(vmd.MD5(OrderMessage,True))) '网银支付平台对MD5值只认大写字符串,所以小写的MD5值得转换为大写
'**********以下几项与网上支付货款无关,建议不用**************
v_rcvname = sConsignee '---- 收 货 人
v_rcvaddr = sAddress '---- 收货人地址
v_rcvtel = sTelephone '---- 收货人电话
v_rcvpost = "430015" '---- 消费者邮码
v_ordername = sConsigner '---- 发 货 人
v_orderemail = sEmail '---- 收货人邮件
PaymentContent = "<table> <tr>" & vbNewLine
PaymentContent = PaymentContent & "<form method=""post"" action=""https://pay3.chinabank.com.cn/PayGate"" name=""payform"" target=""_blank"">" & vbNewLine
PaymentContent = PaymentContent & " <td>" & vbNewLine
PaymentContent = PaymentContent & "<input type=""hidden"" name=""v_md5info"" value=""" & v_md5info & """>" & vbNewLine
PaymentContent = PaymentContent & "<input type=""hidden"" name=""v_mid"" value=""" & v_mid & """>" & vbNewLine
PaymentContent = PaymentContent & "<input type=""hidden"" name=""v_oid"" value=""" & v_oid & """>" & vbNewLine
PaymentContent = PaymentContent & "<input type=""hidden"" name=""v_amount"" value=""" & v_amount & """>" & vbNewLine
PaymentContent = PaymentContent & "<input type=""hidden"" name=""v_moneytype"" value=""" & v_moneytype & """>" & vbNewLine
PaymentContent = PaymentContent & "<input type=""hidden"" name=""v_url"" value=""" & v_url & """>" & vbNewLine
PaymentContent = PaymentContent & "<input type=""hidden"" name=""style"" value=""" & style & """>" & vbNewLine
PaymentContent = PaymentContent & "<input type=""hidden"" name=""remark1"" value=""" & remark1 & """>" & vbNewLine
PaymentContent = PaymentContent & "<input type=""hidden"" name=""remark2"" value=""" & remark2 & """>" & vbNewLine
'----- 以下几项与网上支付货款无关,建议不用 ----
PaymentContent = PaymentContent & "<input type=""hidden"" name=""v_rcvname"" value=""" & v_rcvname & """>" & vbNewLine
PaymentContent = PaymentContent & "<input type=""hidden"" name=""v_rcvaddr"" value=""" & v_rcvaddr & """>" & vbNewLine
PaymentContent = PaymentContent & "<input type=""hidden"" name=""v_rcvtel"" value=""" & v_rcvtel & """>" & vbNewLine
PaymentContent = PaymentContent & "<input type=""hidden"" name=""v_rcvpost"" value=""" & v_rcvpost & """>" & vbNewLine
PaymentContent = PaymentContent & "<input type=""hidden"" name=""v_ordername"" value=""" & v_ordername & """>" & vbNewLine
PaymentContent = PaymentContent & "<input type=""hidden"" name=""v_orderpost"" value=""430015"">" & vbNewLine
PaymentContent = PaymentContent & "<input type=""hidden"" name=""v_orderemail"" value=""" & v_orderemail & """>" & vbNewLine
PaymentContent = PaymentContent & "<input type=""submit"" name=""v_action"" value=""" & submit_value & """ class=""Button"">" & vbNewLine
PaymentContent = PaymentContent & " </td> </tr>" & vbNewLine
PaymentContent = PaymentContent & "</form>" & vbNewLine
PaymentContent = PaymentContent & "</table>" & vbNewLine
End Sub
'================================================
'过程名:ReceivePage
'作 用:在线支付返回页面
'================================================
Public Sub ReceivePage()
On Error Resume Next
If CInt(sPlatform) = 1 Then
Call Receive_nps
ElseIf CInt(sPlatform) = 2 Then
Call Receive_chinabank
Else
ErrNumber = 6
Exit Sub
End If
End Sub
Private Sub Receive_nps()
On Error Resume Next
Dim OrderMessage, md5text, BankPayCode, md5info
sPaymentid = Trim(Request("m_id")) '---- 商 家 号
sFD_NPSID = Trim(Request("FD_NPSId")) '---- NPS定单号
sOrderid = Trim(Request("m_orderid")) '---- 定 单 号
sPaymoney = Trim(Request("m_oamount")) '---- 订单金额
sComment = Trim(Request("m_ocomment")) '---- 备注
sConsignee = Trim(Request("r_name")) '---- 收货人
sAddress = Trim(Request("r_addr")) '---- 收货人地址
sPostcode = Trim(Request("r_postcode")) '---- 收货人邮编
sTelephone = Trim(Request("r_tel")) '---- 收货人电话
sEmail = Trim(Request("r_eml")) '---- 收货人E-Mail
sConsigner = Trim(Request("s_name")) '---- 发货人
sPstate = Trim(Request("m_status")) '---- 交易状态
sMoneytype = Trim(Request("m_ocurrency")) '---- 币种
md5info = Trim(Request("newmd5info")) '---- 签名认证
If Trim(Request("md5info")) = "" Then
ErrNumber = 3
Exit Sub
End If
OrderMessage = sPaymentid & sOrderid & sPaymoney & sPaymentkey & sPstate
md5text = Trim(vmd.MD5(OrderMessage,True))
If UCase(md5text) <> UCase(md5info) Then
ErrNumber = 4
Exit Sub
Else
If ChkNumeric(sPstate) = 2 Then
'---- 支付成功
ErrNumber = 0
Exit Sub
Else
ErrNumber = 4
Exit Sub
End If
End If
End Sub
Private Sub Receive_chinabank()
On Error Resume Next
Dim v_md5str, md5text, OrderMessage, BankPayCode
sPaymentid = sPaymentid '---- 商 家 号
sOrderid = Trim(Request("v_oid")) '---- 定 单 号
sPaymoney = Trim(Request("v_amount")) '---- 订单金额
sComment = Trim(Request("remark1")) '---- 备注
sConsignee = Trim(Request("v_rcvname")) '---- 收货人
sAddress = Trim(Request("v_rcvaddr")) '---- 收货人地址
sPostcode = Trim(Request("v_rcvpost")) '---- 收货人邮编
sTelephone = Trim(Request("remark2")) '---- 收货人电话
sEmail = Trim(Request("v_orderemail")) '---- 收货人E-Mail
sConsigner = Trim(Request("v_ordername")) '---- 发货人
sMoneytype = Trim(Request("v_moneytype")) '---- 币种
sPstate = Trim(Request("v_pstatus")) '---- 交易状态
v_md5str = Trim(Request("v_md5str"))
If Trim(Request("v_md5str")) = "" Then
ErrNumber = 3
Exit Sub
End If
OrderMessage = sOrderid & sPstate & sPaymoney & sMoneytype & sPaymentkey
md5text = Trim(vmd.MD5(OrderMessage,True))
If UCase(md5text) <> UCase(v_md5str) Then
ErrNumber = 4
Exit Sub
Else
If ChkNumeric(sPstate) = 20 Then
'---- 支付成功
ErrNumber = 0
Exit Sub
Else
'---- 支付失败
ErrNumber = 4
Exit Sub
End If
End If
End Sub
'=============================================================
'函数名:ReadPayMoney
'作 用:读取要支付的金钱
'参 数:money ----实际金钱
'返回值:加上手续费后的金钱
'=============================================================
Public Function ReadPayMoney(ByVal money, ByVal Reduce)
On Error Resume Next
If money = 0 Then
ReadPayMoney = 0
Exit Function
End If
Dim MoneyPercent, valPercent
MoneyPercent = mPercent / 100
If MoneyPercent = 0 Then
ReadPayMoney = money
Else
If CBool(Reduce) = True Then
valPercent = Round(money / (1 + 1 * MoneyPercent), 2)
ReadPayMoney = CCur(valPercent)
Else
valPercent = Round(money * MoneyPercent, 2)
ReadPayMoney = CCur(money + valPercent)
End If
End If
End Function
Public Function ChkNumeric(ByVal CHECK_ID)
If CHECK_ID <> "" And IsNumeric(CHECK_ID) Then _
CHECK_ID = CLng(CHECK_ID) _
Else _
CHECK_ID = 0
ChkNumeric = CHECK_ID
End Function
End Class
%>