📄 pmchinabank.vb
字号:
Imports System.Text
Imports NetShopForge.Common
Imports NetShopForge.Library.Order
Namespace NetShopForge.Library.Payment
''' <summary>
''' 网银在线接口
''' </summary>
''' <remarks></remarks>
Public Class pmChinaBank
Implements IPayment
Public Function Recive(ByVal page As System.Web.UI.Page) As Order.OrderTransactionInfo Implements IPayment.Recive
Dim v_oid As String ' 订单号
Dim v_pstatus As String ' 支付状态码
'20(支付成功,对使用实时银行卡进行扣款的订单);
'30(支付失败,对使用实时银行卡进行扣款的订单);
Dim v_pstring As String '支付状态描述
Dim v_pmode As String '支付银行
Dim v_md5str As String 'MD5校验码
Dim v_amount As String '支付金额
Dim v_moneytype As String '币种
Dim remark1 As String ' 备注1
Dim remark2 As String ' 备注1
Dim status_msg As String
' MD5密钥要跟订单提交页相同,如Send.asp里的 key = "test" ,修改""号内 test 为您的密钥
Dim key As String = "test" ' 如果您还没有设置MD5密钥请登陆我们为您提供商户后台,地址:https://merchant3.chinabank.com.cn/
' 登陆后在上面的导航栏里可能找到“资料管理”,在资料管理的二级导航栏里有“MD5密钥设置”
' 建议您设置一个16位以上的密钥或更高,密钥最多64位,但设置16位已经足够了
v_oid = page.Request("v_oid")
v_pstatus = page.Request("v_pstatus")
v_pstring = page.Request("v_pstring")
v_pmode = page.Request("v_pmode")
v_md5str = page.Request("v_md5str")
v_amount = page.Request("v_amount")
v_moneytype = page.Request("v_moneytype")
remark1 = page.Request("remark1")
remark2 = page.Request("remark2")
Dim str As String = v_oid + v_pstatus + v_amount + v_moneytype + key
Dim v_md5info As String = System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(str, "MD5")
Dim isValidMD5Code As Boolean = v_md5info.Equals(v_md5str)
If isValidMD5Code Then
status_msg = "ok"
If v_pstatus.Equals("20") Then
Dim objOT As New OrderTransactionInfo
objOT.Amount = v_amount
objOT.OrderNumber = v_oid
objOT.PaymentTypeID = PaymentGateway.gw99Bill
objOT.TransactionDate = Date.MinValue
Return objOT
End If
Else
status_msg = "error"
End If
Return Nothing
End Function
' <!--以下几项为网上支付重要信息,信息必须正确无误,信息会影响支付进行!-->
' <input type="hidden" name="v_md5info" value="<%=v_md5info%>" size="100">
' <input type="hidden" name="v_mid" value="<%=v_mid%>">
' <input type="hidden" name="v_oid" value="<%=v_oid%>">
' <input type="hidden" name="v_amount" value="<%=v_amount%>">
' <input type="hidden" name="v_moneytype" value="<%=v_moneytype%>">
' <input type="hidden" name="v_url" value="<%=v_url%>">
' <!--以下几项项为网上支付完成后,随支付反馈信息一同传给信息接收页,在传输过程中内容不会改变,如:Receive.asp -->
' <input type="hidden" name="remark1" value="<%=remark1%>">
' <input type="hidden" name="remark2" value="<%=remark2%>">
' <!--以下几项与网上支付货款无关,只是用来记录客户信息,可以不用,使用和不使用都不影响支付 -->
'<input type="hidden" name="v_rcvname" value="<%=v_rcvname%>">
'<input type="hidden" name="v_rcvaddr" value="<%=v_rcvaddr%>">
'<input type="hidden" name="v_rcvtel" value="<%=v_rcvtel%>">
'<input type="hidden" name="v_rcvpost" value="<%=v_rcvpost%>">
'<input type="hidden" name="v_rcvemail" value="<%=v_rcvemail%>">
'<input type="hidden" name="v_rcvmobile" value="<%=v_rcvmobile%>">
'<input type="hidden" name="v_ordername" value="<%=v_ordername%>">
'<input type="hidden" name="v_orderaddr" value="<%=v_orderaddr%>">
'<input type="hidden" name="v_ordertel" value="<%=v_ordertel%>">
'<input type="hidden" name="v_orderpost" value="<%=v_orderpost%>">
'<input type="hidden" name="v_orderemail" value="<%=v_orderemail%>">
'<input type="hidden" name="v_ordermobile" value="<%=v_ordermobile%>">
Public Function Send(ByVal orderID As Integer) As String Implements IPayment.Send
' Dim objOC As New OrderController
Dim objPC As New PaymentController
Dim order As OrderInfo = OrderController.GetOrder(orderID)
Dim pay As PaymentMethodInfo = objPC.GetPaymentMethodInfo(PaymentGateway.gwChinaBank)
Dim pValues As New Generic.Dictionary(Of String, String)
Dim gateway As String = "https://pay3.chinabank.com.cn/PayGate" '支付接口
Dim merchant_key As String = pay.MerchantKey '商户密钥
Dim commodity_info As String = Web.HttpUtility.UrlEncode(String.Format("NO:{0}", order.OrderNumber))
Dim v_url As String = Utility.GetSiteRoot & "/PaymetRecive.aspx?PayType=" & CInt(pay.PaymentGateway).ToString
Dim v_amount As String = order.TotalFee
Dim v_moneytype = "CNY"
Dim v_oid As String = order.OrderNumber
Dim v_mid As String = pay.MerchantID
Dim text As String = v_amount + v_moneytype + v_oid + v_mid + v_url + pay.MerchantKey ' 拼凑加密串
Dim v_md5info As String = System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(text, "MD5")
Dim remark1 As String = "chinabank"
Dim remark2 As String = "netshopforge"
pValues.Add("v_md5info", v_md5info) 'MD5校验码
pValues.Add("v_mid", v_mid) '商户编号
pValues.Add("v_oid", v_oid) '订单编号
pValues.Add("v_amount", v_amount) '订单总金额
pValues.Add("v_moneytype", v_moneytype) '币种
pValues.Add("v_url", v_url) '支付结果返回地址
pValues.Add("remark1", v_url) '备注字段1
pValues.Add("remark2", v_url) '备注字段2
Return objPC.WriteSendString(gateway, pValues)
End Function
End Class
End Namespace
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -