将Curl请求转换为C#ASP.NET Web请求API
我对curl不熟悉,需要将上面的curl请求转换为ASP.NET web请求。我相信-d是post参数,但我不确定如何传入-u以及-u代表什么。下面是我到目前为止的代码。仅供参考,这是针对条带支付网关的,我不能使用ASP.NET库,因为我可以将任何DLL添加到我正在运行的解决方案中,所以我使用它们的CURL 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 https://api.stripe.com/v1/charges
\ -u sk_test_BQokikJOvB432343iI2HlWgH4olfQ2:
\ -d amount=400
\ -d currency=usd
\ -d card=tok_15CVG02eZvKYlo2CDVUHUs56
这是我的最终解决方案:
string formencodeddata = "amount=400¤cy=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();
}
}
}