You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用VB.NET调用WooCommerce API获取指定日期订单并在DataGridView展示

解决方案:VB.NET调用WooCommerce API获取订单并展示

一、发起API请求获取JSON数据

WooCommerce REST API需要OAuth 1.0a身份验证,用HttpClient配合OAuth签名工具就能实现,步骤如下:

  1. 安装必要NuGet包
    安装Newtonsoft.Json(用于JSON解析)和OAuth.Base(简化OAuth签名生成,也可手动实现)。

  2. 编写API请求代码

    Imports System.Net.Http
    Imports Newtonsoft.Json
    Imports OAuth.Base
    
    Public Async Function GetWooCommerceOrders(startDate As Date, endDate As Date) As Task(Of List(Of Order))
        ' 店铺API配置
        Dim baseUrl As String = "https://你的店铺域名/wp-json/wc/v3"
        Dim consumerKey As String = "你的Consumer Key"
        Dim consumerSecret As String = "你的Consumer Secret"
    
        ' 构造请求参数:日期范围、订单状态等
        Dim parameters As New Dictionary(Of String, String) From {
            {"after", startDate.ToString("yyyy-MM-ddTHH:mm:ss")},
            {"before", endDate.ToString("yyyy-MM-ddTHH:mm:ss")},
            {"status", "completed"} ' 可按需修改为processing、pending等
        }
    
        ' 生成OAuth授权头
        Dim oauthHelper As New OAuthHelper(consumerKey, consumerSecret)
        Dim requestUrl As String = $"{baseUrl}/orders"
        Dim authHeader As String = oauthHelper.GenerateOAuthHeader(requestUrl, HttpMethod.Get, parameters)
    
        ' 发起异步请求
        Using client As New HttpClient()
            client.DefaultRequestHeaders.Add("Authorization", authHeader)
            Dim queryString As String = String.Join("&", parameters.Select(Function(kv) $"{kv.Key}={Uri.EscapeDataString(kv.Value)}"))
            Dim response As HttpResponseMessage = Await client.GetAsync($"{requestUrl}?{queryString}")
            response.EnsureSuccessStatusCode()
    
            ' 解析JSON到实体类
            Dim jsonString As String = Await response.Content.ReadAsStringAsync()
            Return JsonConvert.DeserializeObject(Of List(Of Order))(jsonString)
        End Using
    End Function
    
    ' 订单实体类(根据WooCommerce API响应字段定义,可按需扩展)
    Public Class Order
        Public Property id As Integer
        Public Property number As String
        Public Property date_created As DateTime
        Public Property total As Decimal
        Public Property status As String
        Public Property billing As BillingInfo
        ' 其他需要的字段可自行添加
    End Class
    
    Public Class BillingInfo
        Public Property first_name As String
        Public Property last_name As String
        Public Property email As String
        Public Property phone As String
    End Class
    

二、绑定数据到DataGridView

在按钮点击事件中调用上述方法,将结果绑定到DataGridView:

Private Async Sub btnGetOrders_Click(sender As Object, e As EventArgs) Handles btnGetOrders.Click
    ' 获取用户选择的日期范围(假设用DateTimePicker控件:dtpStart、dtpEnd)
    Dim startDate As Date = dtpStart.Value.Date
    Dim endDate As Date = dtpEnd.Value.Date.AddDays(1).AddSeconds(-1) ' 包含结束日的最后一秒

    Try
        Dim orders As List(Of Order) = Await GetWooCommerceOrders(startDate, endDate)
        
        ' 绑定数据源
        dgvOrders.DataSource = orders
        
        ' 自定义列显示(可选)
        dgvOrders.Columns("id").HeaderText = "订单ID"
        dgvOrders.Columns("number").HeaderText = "订单编号"
        dgvOrders.Columns("date_created").HeaderText = "创建时间"
        dgvOrders.Columns("total").HeaderText = "订单总额"
        dgvOrders.Columns("status").HeaderText = "订单状态"
        ' 绑定嵌套对象属性
        dgvOrders.Columns.Add(New DataGridViewTextBoxColumn() With {
            .Name = "BillingName",
            .HeaderText = "客户姓名",
            .DataPropertyName = "billing.first_name"
        })
        ' 隐藏不需要的列
        dgvOrders.Columns("billing").Visible = False
    Catch ex As Exception
        MessageBox.Show($"获取订单失败:{ex.Message}")
    End Try
End Sub

三、更优的订单展示方案

  1. 优化DataGridView体验

    • 开启列自适应:dgvOrders.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill
    • 添加交替行颜色:dgvOrders.AlternatingRowsDefaultCellStyle.BackColor = Color.LightGray
    • 格式化金额列:设置total列的DefaultCellStyle.Format = "C2"(按本地货币格式显示)
    • 启用排序筛选:dgvOrders.AllowSorting = True,或手动实现关键词筛选功能
  2. 替代展示方案

    • 分页加载:WooCommerce API支持page和per_page参数,避免一次性加载大量数据
    • 列表+详情模式:用ListView展示简洁订单列表,点击行弹出窗口显示完整订单信息
    • 第三方控件:如DevExpress GridControl、Telerik RadGridView,支持分组、导出、高级筛选等功能

四、参考资源

  • WooCommerce REST API官方文档:重点查看Orders端点的请求参数、响应结构和OAuth验证规则
  • Newtonsoft.Json官方文档:学习JSON序列化/反序列化的高级用法,比如自定义字段映射
  • VB.NET HttpClient官方文档:了解异步请求的最佳实践
  • GitHub开源项目:搜索VB.NET WooCommerce API客户端,可找到现成的封装类参考

内容的提问来源于stack exchange,提问作者John MacClain

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 10:10:05