将Curl请求转换为C#ASP.NET Web请求API

将Curl请求转换为C#ASP.NET Web请求API,c#,asp.net,web-services,curl,stripe-payments,C#,Asp.net,Web Services,Curl,Stripe Payments,我对curl不熟悉,需要将上面的curl请求转换为ASP.NET web请求。我相信-d是post参数,但我不确定如何传入-u以及-u代表什么。下面是我到目前为止的代码。仅供参考,这是针对条带支付网关的,我不能使用ASP.NET库,因为我可以将任何DLL添加到我正在运行的解决方案中,所以我使用它们的CURL API curl https://api.stripe.com/v1/charges \ -u sk_test_BQokikJOvB432343iI2HlWgH4olfQ2: \ -d

我对curl不熟悉,需要将上面的curl请求转换为ASP.NET web请求。我相信-d是post参数,但我不确定如何传入-u以及-u代表什么。下面是我到目前为止的代码。仅供参考,这是针对条带支付网关的,我不能使用ASP.NET库,因为我可以将任何DLL添加到我正在运行的解决方案中,所以我使用它们的CURL API

curl https://api.stripe.com/v1/charges 
\ -u sk_test_BQokikJOvB432343iI2HlWgH4olfQ2: 
\ -d amount=400 
\ -d currency=usd 
\ -d card=tok_15CVG02eZvKYlo2CDVUHUs56 

这是我的最终解决方案:

string formencodeddata = "amount=400&currency=usd&card=tok_15CVG02eZvKYlo2CDVUHUs56";
byte[] formbytes = System.Text.ASCIIEncoding.Default.GetBytes(formencodeddata);

//Create a new HTTP request object, set the method to POST and write the POST data to it
var webrequest = (HttpWebRequest)WebRequest.CreateHttp("https://api.stripe.com/v1/charges");
webrequest.Method = "POST";
webrequest.ContentType = "application/x-www-form-urlencoded";

using (Stream postStream = webrequest.GetRequestStream()) {
    postStream.Write(formbytes, 0, formbytes.Length);
}

//Make the request, get a response and pull the data out of the response stream
var webresponse = (HttpWebResponse)webrequest.GetResponse();
Stream responseStream = webresponse.GetResponseStream();
var reader = new StreamReader(responseStream);

string result = reader.ReadToEnd();

可能您可以检查stripe的[.net]版本。如果您正在ASP.net中查找stripe签出的最新解决方案,请检查此演示:
var postUrl = new StringBuilder();

postUrl.Append("card=");
postUrl.Append(token);
postUrl.Append("currency=usd");
postUrl.Append("&x_amount=");
postUrl.Append(transactionAmount.ToString());

byte[] formbytes = System.Text.ASCIIEncoding.Default.GetBytes(postUrl.ToString());

//Create a new HTTP request object, set the method to POST and write the POST data to it
var webrequest = (HttpWebRequest)WebRequest.Create(Url);
webrequest.Method = "POST";
webrequest.UserAgent = "Stripe Payment Processor";
webrequest.ContentType = "application/x-www-form-urlencoded";
webrequest.Headers.Add("Stripe-Version", "2014-12-22");
webrequest.Headers.Add("Authorization", String.Concat("Basic ", (Convert.ToBase64String(Encoding.UTF8.GetBytes(string.Format("{0}:", this.PrivateKey))))));

using (Stream postStream = webrequest.GetRequestStream())
{
    postStream.Write(formbytes, 0, formbytes.Length);
}

//Make the request, get a response and pull the data out of the response stream

StreamReader reader = null;
string stripeResponse; 
try
{
    HttpWebResponse webresponse = (HttpWebResponse)webrequest.GetResponse();
    Stream responseStream = webresponse.GetResponseStream();
    reader = new StreamReader(responseStream);
    stripeResponse = reader.ReadToEnd();
}
catch (WebException exception)
{
    using (WebResponse response = exception.Response)
    {
        using (Stream data = response.GetResponseStream())
        using (reader = new StreamReader(data))
        {
            stripeResponse = reader.ReadToEnd();
        }
    }
}