已回答 网站购买解决方案

Raysefo

知名会员
已加入
2019年2月22日
留言内容
192
编程经验
10+
嗨,大家好,

您会记得,我有一个Web API,该API调用第三方Web API以获取在市场链上有效的在线游戏代码。现在,我想将我的Web API集成到这个本地网站,该网站出售很多东西,包括在线游戏代码。在市场链中,我的Web API是通过使用付款终端从收银员处调用的。但另一方面,我必须查询在线网站Web API才能获得已支付的在线游戏代码订单。我打算编写一份工作,每10分钟查询此在线网站Web API,以检查是否有已付款的订单。然后调用第3个Web API并继续其他操作。您有什么建议/解决方案?

最好的祝福。
 

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,500
地点
弗吉尼亚州切萨皮克
编程经验
10+
按需而不是每10分钟查询一次第三方API的成本(时间,内存,金钱)有多昂贵?您是因为每天要打给第三方的电话而设置数量吗?
 

Raysefo

知名会员
已加入
2019年2月22日
留言内容
192
编程经验
10+
我不知道何时购买在线游戏代码,我必须查询在线网站API才能确定是否从其网站上购买了在线游戏代码。这就是为什么我打算写一份工作。
 

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,500
地点
弗吉尼亚州切萨皮克
编程经验
10+
如果您确实与该网站集成在一起,为什么他们不能像市场链调用您的Web API那样调用您的Web API?为什么需要轮询网站的Web API以确定是否需要做任何事情?您的Web API是否如此复杂,以致网站无法调用您?
 

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,500
地点
弗吉尼亚州切萨皮克
编程经验
10+
这样看来,除了轮询之外,您别无选择。但是,您确实可以选择在轮询然后正常调用Web服务API(通常依次调用第3方)或轮询然后再调用第3方之间进行选择。
 

Raysefo

知名会员
已加入
2019年2月22日
留言内容
192
编程经验
10+
假设我通过调用本地网站的API获得游戏订单。 (一个出售游戏代码的本地网站,当用户在该网站上进行购买时,我正在从该网站的API获取订单。)我将使用.net核心控制台应用程序执行此操作,该应用程序将每隔一次检查该网站的API 10分钟。现在假设我从网站的API获得了5个游戏订单。在此.net核心控制台应用程序内部,我将调用我的API,以完成对这5个游戏订单的购买,如下所示。 (我正在调用第三方Rest API以获取游戏代码。)
您能否检查我的代码并给我一些反馈\建议?有什么地方可以引起问题吗?

C#:
static async Task Main(string[] args)
{
    const int numberOfProducts = 3;
    try
    {
        for (var i = 0; i < numberOfProducts; i++)
        {
            var product = "000000001585";
            //DEV
            var request =
                        (HttpWebRequest)WebRequest.Create("http://test//api/v2/purchase");

            var svcCredentials =
                        Convert.ToBase64String(
                            Encoding.ASCII.GetBytes("username" + ":" + "password"));

            request.Headers.Add("Authorization", "Basic " + svcCredentials);
            request.Method = "POST";
            request.KeepAlive = false;
            request.ContentType = "application/x-www-form-urlencoded";

            var content = new FormUrlEncodedContent(new[]
            {
                  new KeyValuePair<string, string>("productCode", product),
                  new KeyValuePair<string, string>("quantity", "1"),
                  new KeyValuePair<string, string>("shopNo", "test"),
                  new KeyValuePair<string, string>("safeNo", "test"),
                  new KeyValuePair<string, string>("cashierNo", "test")

            });


            var formUrlEncodedContent = content;
            var urlEncodedString = await formUrlEncodedContent.ReadAsStringAsync();

            using (var streamWriter = new StreamWriter(await request.GetRequestStreamAsync()))
            {
                   await streamWriter.WriteAsync(urlEncodedString);
            }

            var httpResponse = (HttpWebResponse)(await request.GetResponseAsync());

            var response = new HttpResponseMessage
            {
                  StatusCode = httpResponse.StatusCode,
                  Content = new StreamContent(httpResponse.GetResponseStream()),
            };

            //Read response
            var htmlResponse = await response.Content.ReadAsStringAsync();
            var deserializedResult = JObject.Parse(htmlResponse);
                    
            Console.WriteLine((string)deserializedResult["coupons"]?[0]?["Serial"] + ":" + (string)deserializedResult["coupons"]?[0]?["Pin"]);
        }

            
    }
    catch (Exception e)
    {
            
         Console.WriteLine(e.Message);
         throw;
    }
}
 
最佳 底部