⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pmchinabank.vb

📁 C#语言制作asp.net网上商店的
💻 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 + -