vb.net支付api vb·net

高分求助,VB.NET 支付寶開發(fā)接口

Case 4 '支付寶支付

創(chuàng)新互聯(lián)建站主要從事網(wǎng)站制作、做網(wǎng)站、網(wǎng)頁設計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務。立足成都服務旺蒼,10余年網(wǎng)站建設經(jīng)驗,價格優(yōu)惠、服務專業(yè),歡迎來電咨詢建站服務:18980820575

Dim cmd, subject, body, order_no, prices, rurl, types, number, transport, ordinary_fee, express_fee, readonlytrue, buyer_msg, buyer, buyer_name, buyer_address, buyer_zipcode, buyer_tel, buyer_mobile, partner As String

Dim t1, t2, t3, t4, t5 As String

Dim AlipayObj, itemUrl As String

t1 = ":" '支付接口

t2 = ConfigurationSettings.AppSettings("adminaliPay") '商戶支付寶賬戶(改成你自己的)

t3 = "m7yeav29bcdz14szvi2rbfcixywob59y" '安全校驗碼

cmd = "0001" '命令碼

subject = "訂單號:" NoID '商品名稱

body = Convert.ToString(ViewState("CourseName")) '商品描述

order_no = NoID '商戶訂單號

prices = Convert.ToString(ViewState("NowPrice")) '商品單價

rurl = Request.Url.ToString() '商品展示網(wǎng)址

types = "1" '支付類型 1:商品購買,2:服務購買,3:網(wǎng)絡拍賣,4:捐贈

number = "1" '購買數(shù)量

transport = "3" '發(fā)貨方式 1:平郵,2:快遞,3:虛擬物品

ordinary_fee = "0" '平郵運費

express_fee = "0" '快遞運費

readonlytrue = "true" '交易信息是否只讀,true或false,默認值為false

buyer_msg = "" '買家給賣家的留言:string(200)

'buyer = Convert.ToString(ViewState("txtIDEmail")) '買家Email

buyer_name = Convert.ToString(ViewState("txtIDName")) ",Email:" Convert.ToString(ViewState("txtIDEmail")) '買家姓名,買家Email

buyer_address = Convert.ToString(ViewState("txtIDaddress")) '買家地址

buyer_zipcode = Convert.ToString(ViewState("txtIDPost")) '買家郵編

buyer_tel = Convert.ToString(ViewState("txtIDtelephone")) '買家電話號碼

buyer_mobile = Convert.ToString(ViewState("txtIDTel")) '買家手機號碼

partner = "" '合作伙伴ID(保留字段)

itemUrl = creatAlipayItemURL(t1, t2, t3, t4, t5, cmd, subject, body, order_no, prices, rurl, types, number, transport, ordinary_fee, express_fee, readonlytrue, buyer_msg, buyer, buyer_name, buyer_address, buyer_zipcode, buyer_tel, buyer_mobile, partner)

itemUrl = "script language=javascript" vbCrLf "!--" vbCrLf "document.forms[0].submit();" vbCrLf "http://--" vbCrLf "/script"

Response.Write(itemUrl)

End Select

VB.Net中該怎么調(diào)用windows的API?

1.Windows的API有兩個版本的,比如ANSI的FindWindowA(),Unicode的FindWindowW()

2.兩種聲明的方式

DllImport("user32.dll", CharSet:=CharSet.Auto, EntryPoint:="FindWindow") _

Shared Function FindWindow(ByVal className As String, ByVal windowName As String) As IntPtr

End Function

Declare Auto Function FindWindow Lib "user32.dll" Alias "FindWindow" (ByVal className As String, ByVal windowName As String) As IntPtr

在 vb.net 中好像找不到API 瀏覽器 ,那如何像VB6那樣調(diào)用API函數(shù)

沒有Api瀏覽器,因為VB.NET不推薦使用API,因此Microsoft推薦您使用.NET里面的類和方法(而不是API函數(shù))來實現(xiàn)您的需求。

你可以自己制作一個瀏覽器:

把VB6.0安裝目錄下的Common\Tools\Winapi下的文件拷貝到任一目錄,再把VB6.0所在操作系統(tǒng)下的System32\DBGrid.ocx拷貝到VB.NET所在操作系統(tǒng)下的System32目錄下,再直接運行你剛才拷貝過來的APILOAD.exe就可以了。

VB.NET的API調(diào)用

現(xiàn)在我用我所知道的為樓主介紹VB.NET的API調(diào)用,請樓主瀏覽一下,看看行不行。

Windows API就是Windows系統(tǒng)的API函數(shù)簡稱(Application Program Interface,即:應用程序接口函數(shù)),它是Windows操作系統(tǒng)提供給各種開發(fā)基于Windows平臺應用軟件的開發(fā)語言的一些公用的函數(shù),這些函數(shù)一般都比較底層,所以當各種開發(fā)語言使用自帶的函數(shù)或類庫已無法解決問題時,調(diào)用Windows API函數(shù)往往是一種非常直接、有效的解決方法。但由于在程序中調(diào)用Windows API函數(shù)一般都很復雜,所以對于程序員來說,是否能夠靈活的使用Windows API函數(shù),往往也是其水平高低的一個重要標志。但自從微軟推出.Net框架以后,各種開發(fā)基于.Net平臺下的程序語言,如Visual Basic .Net、Visual C#等卻很少使用Windows API函數(shù),并且微軟公司也不像以前那樣,提倡在這些.Net開發(fā)語言中使用Windows API函數(shù),其主要的原因如下:

1. .Net框架所附帶的類庫.Net FrameWork SDK是一個內(nèi)容豐富、功能強大的軟件開發(fā)包,各種Windows API函數(shù)所實現(xiàn)的各種功能幾乎都可以在這個軟件開發(fā)包中找到與之對應的部分。

2. 微軟Visual Basic .Net、Visual C#等目的是編寫跨平臺的應用程序,如果在Visual Basic .Net、Visual C#等中使用Windows API函數(shù),這也就注定了編寫出的程序只能運行于Windows平臺之下,而弱化了.NET的跨平臺能力。這也就是為什么微軟不提倡在.Net平臺調(diào)用Windows API函數(shù)的原因。

雖然微軟并不提倡在Visual Basic .Net、Visual C#中調(diào)用Windows API函數(shù),但由于目前.Net 框架推出時間較短,.Net FrameWork SDK中提供的類庫還并不足以完全替換Windows API函數(shù)的所有功能,所以在某些時候,.Net開發(fā)語言還是必須要調(diào)用Windows API函數(shù)。

一.平臺調(diào)用、托管DLL、非托管DLL簡介:

托管DLL就是能夠在公共語言運行庫(Common Language Runtime,簡稱CLR)中能夠直接引用的,并且擴展名為“DLL”的文件。具體所指就是封裝各種命名空間所在的DLL文件,如System.dll等。非托管DLL就是平常所的動態(tài)鏈接庫等,其中就包括了封裝所有Windows API函數(shù)的DLL文件。各種非托管DLL中的函數(shù)在公共語言運行庫中不能直接被調(diào)用,而需要經(jīng)過.Net框架提供的“平臺調(diào)用”服務后才可以。

“平臺調(diào)用”是.Net框架為Visual Basic .Net、Visual C#等.Net開發(fā)語言提供的一種服務,用以在托管代碼中引入各種非托管DLL中封裝的函數(shù)(其中包括Windows API函數(shù))?!捌脚_調(diào)用”依賴于元數(shù)據(jù)在運行時查找導出函數(shù)并封裝其參數(shù)。圖01公共語言運行庫利用“平臺服務”調(diào)用非托管DLL中的函數(shù)的流程圖:

圖01:“平臺服務”的調(diào)用非托管函數(shù)的流程圖

在托管代碼中使用“平臺調(diào)用”服務調(diào)用非托管DLL中封裝的函數(shù)時,“平臺服務”將依次執(zhí)行以下操作:

1. 查找包含該函數(shù)所在的DLL文件。

2. 如果找到,則將該DLL文件 加載到內(nèi)存中。

3. 查找函數(shù)在內(nèi)存中的地址并將其參數(shù)推到堆棧上,并封送所需的數(shù)據(jù)。

4. 將控制權轉(zhuǎn)移給非托管函數(shù)。 這樣整個函數(shù)調(diào)用完成。

在Visual Basic .Net中使用“平臺調(diào)用”服務,申明Windows API函數(shù)主要有二種具體的實現(xiàn)方法:

1. 使用DllImport特征類來申明Windows API函數(shù)。

2. 使用“Declare”語句來申明Windows API函數(shù)。

這二種方法雖有異曲同工之效,但在繁簡上卻有很大差異,第一種方法申明過程比較復雜,很容易在申明Windows API函數(shù)時出錯,所以并不提倡。而第二種方法相對簡單,并且又保存了以前Visual Basic中的很多語法,所以在平常時大都使用這種方法來申明Windows API函數(shù)。

二.VB.Net查看文件中圖標的函數(shù)及申明Windows API的方法:

Visual Basic .Net要實現(xiàn)查看文件中的圖標,目前只使用.Net FrameWork SDK是無法實現(xiàn)這種功能的,正如前面所說,主要是由于.Net FrameWork SDK推出的時間較短,其功能還不可能面面俱到。解決問題的關鍵是正確使用Windows API函數(shù),其中所涉及到的Windows API函數(shù)主要有二個:其一是獲得指定文件中的圖標數(shù)目;其二是從指定文件的指定位置導出圖標的Windows句柄。這二個函數(shù)都位于“Shell32.dll”文件中,并且函數(shù)的入口點都為“ExtractIcon”。下面是在Visual Basic .Net中分別使用DllImport特征類和“Declare”語句申明這二個Windows API函數(shù)的具體方法。

(1).使用DllImport特征類來申明Windows API函數(shù):

下面是在Visual Basic .Net中使用DllImport特征類申明二個Windows API函數(shù)的具體示例:

'函數(shù)ExtractIcon,其功能是是從指定文件的指定位置導出圖標的Windows句柄。

< System.Runtime.InteropServices.DllImport ( "Shell32.dll" , EntryPoint := "ExtractIcon" ) > _

Public Function _

ExtractIcon ( ByVal src As System.IntPtr , ByVal strFileName As string , ByVal uiIconIndex As UInt32 ) As System.IntPtr

End Function

'函數(shù)Icon_Num,其功能是獲得指定文件中的圖標數(shù)目

< System.Runtime.InteropServices.DllImport ( "Shell32.dll" , EntryPoint := "ExtractIcon" ) > _

Public Function _

Icon_Num ( ByVal src As System.IntPtr , ByVal strFileName As string , ByVal uiIconIndex As Integer ) As Integer

End Function

在使用DllImport特征類申明Windows API函數(shù)時,如果申明的函數(shù)名稱和函數(shù)的入口點相同,則可以在申明Windows API函數(shù)時,省略定義函數(shù)入口點對應的代碼,即EntryPoint對象字段對應的代碼,這樣聲明ExtractIcon函數(shù)的代碼也可以簡化為如下所示:

< System.Runtime.InteropServices.DllImport ( "Shell32.dll" ) > _

Public Function _

ExtractIcon ( ByVal src As System.IntPtr , ByVal strFileName As string , ByVal uiIconIndex As UInt32 ) As System.IntPtr

End Function

(2).使用“Declare”語句來申明Windows API函數(shù):

使用“Declare”語句的確比使用DllImport特征類要簡單了許多,下面是在Visual Basic .Net中使用“Declare”語句來聲明上述二個Windows API函數(shù)的具體方法:

Declare Auto Function ExtractIcon Lib "Shell32.dll" Alias "ExtractIcon" ( ByVal src As System.IntPtr , ByVal strFileName As string , ByVal uiIconIndex As UInt32 ) As System.IntPtr

'聲明ExtractIcon函數(shù)

Declare Auto Function Icon_Num Lib "Shell32.dll" Alias "ExtractIcon" ( ByVal src As System.IntPtr , ByVal strFileName As string , ByVal uiIconIndex As Integer ) As Integer

'聲明Icon_Num函數(shù)

在Visual Basic .Net中聲明Windows API函數(shù)時,“Declare”語句中Alias關鍵字的作用相當于使用DllImport特征類中的EntryPoint對象字段。同樣在使用“Declare”語句聲明Windows API函數(shù)時,如果聲明的函數(shù)和函數(shù)的入口點相同,也可以省略Alias關鍵字對應的代碼,所以ExtractIcon函數(shù)也可以簡化為如下:

Declare Auto Function ExtractIcon Lib "Shell32.dll" ( ByVal src As System.IntPtr , ByVal strFileName As string , ByVal uiIconIndex As UInt32 ) As System.IntPtr

下面就結合一個示例的編寫過程來掌握的這二個Windows API函數(shù)的具體使用方法,這個示例的作用就是讀取指定文件中的圖標數(shù)目,并顯示文件中的圖標。

三.本文中程序的編寫、調(diào)試和運行環(huán)境:

(1).視窗2000高級服務器版。

(2).Visual Studio .Net 2003企業(yè)結構設計版,.Net FrameWork SDK版本號4322。

四.Visual Basic .Net讀取文件中的圖標的實現(xiàn)步驟:

下面介紹的示例,其功能讀取指定文件中包含的圖標數(shù)目,并把這些圖標全部顯示出來。下面是這個示例的實現(xiàn)步驟:

1. 啟動Visual Studio .Net。

2. 選擇菜單【文件】|【新建】|【項目】后,彈出【新建項目】對話框。

3. 將【項目類型】設置為【Visual Basic項目】。

4. 將【模板】設置為【W(wǎng)indows應用程序】。

5. 在【名稱】文本框中輸入【Visual Basic .Net查看文件中的圖標】。

6. 在【位置】的文本框中輸入【E:\VS.NET項目】,然后單擊【確定】按鈕,這樣在【E:\VS.NET項目】目錄中就產(chǎn)生了名稱為【Visual Basic .Net查看文件中的圖標】文件夾,里面存放著【Visual Basic .Net查看文件中的圖標】項目的所有文件。具體如圖02所示:

圖02:【Visual Basic .Net查看文件中的圖標】項目的【新建項目】對話框

7. 選擇菜單【項目】|【添加新項】,在彈出的對話框中的【模板】設置為【模塊】,【名稱】文本框設置為【Module1.vb】后。單擊【打開】按鈕,則在項目中增加了一個模板文件,名稱為【Module1.vb】。

8. 把Visual Stuido .Net的當前窗口切換到Module1.vb的代碼編輯窗口,并在其Module1的代碼區(qū)中添加下列代碼,下列代碼是用二種方式聲明二個Windows API函數(shù):

< System.Runtime.InteropServices.DllImport ( "Shell32.dll" ) > _

Public Function _

ExtractIcon ( ByVal src As System.IntPtr , ByVal strFileName As String , ByVal uiIconIndex As UInt32 ) As System.IntPtr

End Function

'聲明ExtractIcon函數(shù)

Declare Auto Function Icon_Num Lib "Shell32.dll" Alias "ExtractIcon" ( ByVal src As System.IntPtr , ByVal strFileName As String , ByVal uiIconIndex As Integer ) As Integer

9. 把Visual Studio .Net的當前窗口切換到Form1窗體的設計查看,并從【工具箱】中的【W(wǎng)indows窗體】選項卡中拖入下列組件到Form1窗體:

四個Label組件,其中二個用以顯示提示信息,另外二個分別用以顯示選擇的文件名稱和這個文件中包含的圖標數(shù)目。

一個ListView組件,利用其顯示大圖標的屬性用以顯示選定文件中的圖標。

一個OpenFileDialog組件,用以選擇要查看圖標的文件名稱。

一個ImageList組件,它起的是橋梁的作用,首先把從文件中導出的圖標存放到這里,然后再提供ListView組件顯示出來。

一個Button組件。

10. 按照表01中數(shù)值來設定設定組件的主要屬性:

組件類型 組件名稱 屬性 設置結果

Form Form1 Text VB.NET查看文件中的圖標

Form1 MaximizeBox False

Form1 MinimizeBox False

Form1 FormBorderStyle FixedSingle

ListView ListView1 ImageList1 LargeImageList

ListView1 MultiSelect False

ListView1 Size Size ( 380 , 208 )

Button Button1 Text 選擇文件

Button1 FlatStyle Flat

ImageList ImageList1 Size Size ( 32 , 32 )

ImageList1 TransparentColor Color.Transparent

Label Label1 Text 文件名稱:

Label2 Text 圖標數(shù)目:

Label3 Text ""

Label4 Text "0"

表01:【Visual Basic .Net查看文件中的圖標】項目窗體中各組件的主要屬性設定數(shù)值表

并按照圖02中各組件的位置、大小和排列方式來調(diào)整窗體中各個組件:

圖02:【Visual Basic .Net查看文件中的圖標】項目的設計界面

11. 把Visual Studio .Net當前窗口切換到Form.vb的代碼編輯窗口,并用下列代碼替換Form1.vb中的Button1組件的Click事件的處理代碼,下列代碼是在Button1組件的Click事件中處理查看文件中圖標的功能,具體如下:

Private Sub Button1_Click ( ByVal sender As System.Object , ByVal e As System.EventArgs ) Handles Button1.Click

If OpenFileDialog1.ShowDialog ( ) = DialogResult.OK Then

'清除組件中的所有項目

ListView1.Items.Clear ( )

ImageList1.Images.Clear ( )

Dim sfName As String = OpenFileDialog1.FileName

Label3.Text = sfName

Dim iIcon_Num As Integer = Icon_Num ( IntPtr.Zero , sfName , -1 )

'顯示文件中的圖標數(shù)目

Label4.Text = iIcon_Num.ToString ( )

Dim i As Integer

For i = 0 To iIcon_Num - 1 Step 1

'強制實現(xiàn)int到uint類型轉(zhuǎn)換

Dim j As UInt32

j = System.Convert.ToUInt32 ( i )

Dim hIcon As System.IntPtr = ExtractIcon ( IntPtr.Zero , sfName , j )

'在imageList1組件中加入當然提取的圖標

ImageList1.Images.Add ( Icon.FromHandle ( hIcon ).ToBitmap ( ) )

'在ListView組件中加入一個項目

ListView1.Items.Add ( "第" + ( i + 1 ).ToString ( ) + "個圖標" )

'把加入項目的圖象索引指向剛才加入圖標在imagList1組件中的索引,從而顯示圖標

ListView1.Items ( i ).ImageIndex = i

Next i

End If

End Sub

12. 至此,在上述步驟都正確執(zhí)行后,【Visual Basic .Net查看文件中的圖標】項目的全部工作就完成了。單擊快捷鍵F5就可以運行程序,此時單擊【選擇文件】按鈕選擇文件后,程序就能夠讀取這個文件中的圖標及其數(shù)目,并顯示出來了。具體如圖03所示:

圖03:【Visual Basic .Net查看文件中的圖標】項目的運行界面

五.總結:

解決Visual Basic .Net查看文件中的圖標的關鍵并非是使用.Net框架中提供的類庫,而是使用Windows的API函數(shù)。雖然這與利用Visual Basic .Net開發(fā)跨平臺程序的初衷相違背,但的確不失為一種解決問題的方法。有些時候通過Windows API函數(shù)能夠快捷、方便的解決實際問題,而這往往是只使用.Net FrameWork SDK所望塵莫及的,但隨著.Net FrameWork SDK內(nèi)容的不斷豐富,各種新的組成部分和新的功能不斷加入,可以預見的是,在未來的.Net FrameWork SDK中必將擁有可以替換本文中介紹的二個Windows API函數(shù)的組成部分。

VB2010 API函數(shù)具體用法

一、在VB中聲明API函數(shù)有兩種方法:如果我們只在某個窗體中使用API函數(shù),我們可以在窗體代碼的General部分聲明它:

聲明的語法是:

Private Declare Function ...

Private Declare Sub.....

這里必須采用Private聲明,因為這個API函數(shù)只能被一個窗體內(nèi)的程序所調(diào)用。

如果我們的程序有多個窗體構成,而且我們需要在多個窗體中使用同一個API函數(shù),就需要在模塊中聲明了。

先添加一個模塊,

然后采用如下語法聲明:

Public Declare Function....

Public Declare Sub....

Public聲明的含義是把API函數(shù)作為一個公共函數(shù)或過程,在一個工程中的任何位置(包括所有的窗體和模塊)都能直接調(diào)用它。聲明完畢我們就能在程序中使用此API函數(shù)了。

二、可采用以下幾種方式使用API函數(shù),以SetWindowPos函數(shù)為例:

(1)忽略函數(shù)返回值的調(diào)用:

SetWindowPos Form1.hWnd, -2 ,0 ,0 ,0, 0, 3

注意此時函數(shù)的參數(shù)是不加括號的。

(2)Call方法調(diào)用:

Call SetWindowPos(Form1.hWnd, -2, 0, 0, 0, 3)

注意這里需要加上括號,但我們不取回函數(shù)的返回值。

(3)取得函數(shù)返回值的調(diào)用:

MyLng = SetWindowPos(Form1.hWnd, -2, 0, 0, 0, 3)

此時需要加上括號,而且我們必須事先定義一個變量(變量的類型與函數(shù)返回值類型相同)來存儲API函數(shù)的返回值。

三、幾個問題的說明:

(1)Lib 和 Alias 的說明

一般情況下WIN32API函數(shù)總是包含在WINDOWS系統(tǒng)自帶的或是其它公司提供的動態(tài)連接庫DLL中,而Declare語句中的Lib關鍵字就用來指定DLL(動態(tài)連接庫)文件的路徑,這樣VB才能找到這個DLL文件,然后才能使用其中的API函數(shù)。如果我們只是列出DLL文件名而不指出其完整的路徑的話,VB會自動到.EXE文件所在目錄、當前工作目錄、WINDOWS\SYSTEM目錄、WINDOWS目錄下搜尋這個DLL文件。所以如果所要使用DLL文件不在上述幾個目錄下的話,我們應該指明其完整路徑。

Alias用于指定API函數(shù)的別名,如果我們調(diào)用的API函數(shù)要使用字符串(參數(shù)中包含String型)的話,Alias關鍵字是必須的。這是因為在ANSI和Unicode字符集中同一API函數(shù)的名稱可能是不一樣的,為了保證不出現(xiàn)聲明錯誤,我們使用Alias關鍵字指出API函數(shù)的別名,一般來說在WIN9X平臺下我們把API函數(shù)名后加一個大寫A作為別名即可。

(2)常見的API參數(shù)類型的說明

API函數(shù)的參數(shù)中最常見的是長整Long型數(shù)據(jù)類型,例如API中的句柄、一些特定的常量、函數(shù)的返回值都是此類型的值;另外幾種常見的參數(shù)類型有:整型Integer、Byte型、String型等。

(3)聲明中的ByVal的作用

這跟VB的參數(shù)傳遞方式有關,在默認情況下VB是通過地址傳遞方式傳遞函數(shù)的參數(shù)、而有些API函數(shù)要求必須采用傳值方式來傳遞函數(shù)參數(shù)(這兩種參數(shù)傳遞方式是不同的,前者傳遞的是一個指針,而后者要求是參數(shù)真實的值)。這樣就會發(fā)生錯誤,解決的辦法是在API函數(shù)參數(shù)聲明的前面加上ByVal關鍵字,

這樣VB就采用傳值方式傳遞參數(shù)了。

如何在vb.net中使用vb6中api的功能,用.netFrameworkme么?

不知道你想實現(xiàn)什么功能。

如果你的意思是使用某種WINDOW API相對應的功能。需要查看MSDN中

.NETFRAMEWORK是否有相關的類庫與函數(shù)。

VB中Declare 用于在模塊級別中聲明對動態(tài)鏈接庫 (DLL) 中外部過程的引用。

可以引用windows api的函數(shù)。

但是如果你需要尋找一些你需要的類似WINDOWSAPI功能的函數(shù)。例如:FindWindow. 有一些函數(shù)功能類似。

例如 :Process currentProcess = Process.GetCurrentProcess();

IntPtr hWndToProcess = currentProcess .MainWindowHandle;

獲得程序進程的窗口。

但是要是獲得桌面窗口這個就要用到api了。

分享題目:vb.net支付api vb·net
標題來源:http://muchs.cn/article6/hjdeog.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化、營銷型網(wǎng)站建設移動網(wǎng)站建設、軟件開發(fā)、App設計、網(wǎng)站策劃

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

營銷型網(wǎng)站建設