Woocommerce创建订单REST API和Xamarin表单

时间:2020-07-23 01:01:27

标签: ios mobile xamarin.forms woocommerce woocommerce-rest-api

我正在构建一个用Xamarin Forms编写的结帐页面,该页面在Woocommerce中创建订单。

我已经在线查找了文档,但是似乎找不到任何示例或代码来展示如何执行此操作。

我的问题是:是否存在示例代码,说明如何使用Xamarin Forms和Woocommerce REST API创建简单订单?

我能够使用REST API从Woocommerce中提取产品,但似乎找不到如何使用Xamarin Forms中的REST API实际创建订单的代码示例。

希望您能提供帮助。

欢呼

这是我的代码woocommerceapi.cs类。


class WoocommerceAPI
    {
        private static string website_url = "xxxxx";
        private static string consumer_key = "xxxxx";
        private static string consumer_secret = "xxxxx";

        private static string GetAllProductsApiUrl = string.Format("{0}/wc-api/v3/products?consumer_key={1}&consumer_secret={2}", website_url, consumer_key, consumer_secret);

        private static string GetAllProductsInACategoryApiUrl = "xxxxx/wc-api/v3/products?category=379&consumer_key=xxxxx&consumer_secret=xxxxx";

        public async Task<Products> GetAllProducts()
        {
            var httpClient = new HttpClient();
            var response = await httpClient.GetAsync(GetAllProductsApiUrl);
            HttpContent content = response.Content;
            var json = await content.ReadAsStringAsync();
            var products = JsonConvert.DeserializeObject<Products>(json);
            return products;
        }

        public async Task<Products> GetAllProductsInACategory()
        {
            var httpClient = new HttpClient();
            var response = await httpClient.GetAsync(GetAllProductsInACategoryApiUrl);
            HttpContent content = response.Content;
            var json = await content.ReadAsStringAsync();
            var products = JsonConvert.DeserializeObject<Products>(json);
            return products;
        }

    }

1 个答案:

答案 0 :(得分:0)

我设法建立了一个解决方案,并且现在可以正常工作!

如果您遇到此问题并需要修复,请使用以下代码。


async void OrderBtnClicked(object sender, EventArgs e)
        {
   
            Console.WriteLine("Starting REST API");

            var clientapi = new HttpClient();

            clientapi = new Uri("xxxx?consumer_key=xxxx&consumer_secret=xxxx");

            Console.WriteLine("Starting REST API");

            var clientapi = new HttpClient();

            clientapi.BaseAddress = new Uri("xxxx?consumer_key=xxxx&consumer_secret=xxxx");

            // json data for adding customer
            string jsonData = @"{
                                ""first_name"" : ""John1"",
                                ""last_name"" : ""Doe1"",
                                ""email"" : ""john.doe1@example.com"",
                                ""username"" : ""john.doe1"",
                                ""password"" : ""mypassword"",
                                ""billing"": {
                                        ""first_name"": ""John"",
                                        ""last_name"": ""Doe"",
                                        ""company"": ""john doe company"",
                                        ""address_1"": ""969 Market"",
                                        ""address_2"": """",
                                        ""city"": ""San Francisco"",
                                        ""state"": ""CA"",
                                        ""postcode"": ""94103"",
                                        ""country"": ""US"",
                                        ""email"": ""john.doe@example.com"",
                                        ""phone"": ""(555) 555-5555""
                                    },
                                    ""shipping"": {
                                        ""first_name"": ""John"",
                                        ""last_name"": ""Doe"",
                                        ""company"": """",
                                        ""address_1"": ""969 Market"",
                                        ""address_2"": """",
                                        ""city"": ""San Francisco"",
                                        ""state"": ""CA"",
                                        ""postcode"": ""94103"",
                                        ""country"": ""US""
                                    }

                                }";

            Console.WriteLine("Here's the json string data");
            Console.WriteLine(jsonData);

            var content = new StringContent(jsonData, Encoding.UTF8, "application/json");
            HttpResponseMessage apiresponse = await clientapi.PostAsync("xxxxx?consumer_key=xxxxx&consumer_secret=xxxx", content);

            var apiresult = await apiresponse.Content.ReadAsStringAsync();

            Console.WriteLine("Here's the result:");

            Console.WriteLine(apiresult);

            Console.WriteLine("REST API Post Completed.");

            await DisplayAlert("Checkout", "Completed", "ok");

        }

很明显,您可以设置公共变量来存储json数据,而且我们非常欢迎这样做,我不是您的父亲。