Skip to content

Instantly share code, notes, and snippets.

@IntuitDeveloperRelations
Created October 21, 2014 15:34
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save IntuitDeveloperRelations/65cb8d54876ca9db0256 to your computer and use it in GitHub Desktop.
Save IntuitDeveloperRelations/65cb8d54876ca9db0256 to your computer and use it in GitHub Desktop.
Payments API - Execute Charge
//string body = "{\"amount\": \"10.55\",\"token\": \"s2ZJuHhJQkZMXBngU7fP00At21c\",\"currency\": \"USD\"}";
//string responseXML = ExecutePaymentsCharge(consumerKey, consumerSecret, accessToken, accessSecret, realmId, body);
public static string ExecutePaymentsCharge(string consumerKey, string consumerSecret, string accessToken, string accessTokenSecret, string realmId, string body)
{
string uri = string.Format("https://sandbox.api.intuit.com/quickbooks/v4/payments/charges");
HttpWebRequest httpWebRequest = WebRequest.Create(uri) as HttpWebRequest;
httpWebRequest.Headers.Add("Request-Id", "iuy87t79t3861796t87r670");
httpWebRequest.Method = "POST";
httpWebRequest.Accept = "application/json";
httpWebRequest.ContentType = "application/json";
httpWebRequest.Headers.Add("Authorization", GetDevDefinedOAuthHeader(consumerKey, consumerSecret, accessToken, accessTokenSecret, httpWebRequest, body));
UTF8Encoding encoding = new UTF8Encoding();
byte[] content = encoding.GetBytes(body);
using (var stream = httpWebRequest.GetRequestStream())
{
stream.Write(content, 0, content.Length);
}
HttpWebResponse httpWebResponse = httpWebRequest.GetResponse() as HttpWebResponse;
using (Stream data = httpWebResponse.GetResponseStream())
{
//return XML response
return new StreamReader(data).ReadToEnd();
}
}
private static string GetDevDefinedOAuthHeader(string consumerKey, string consumerSecret, string accessToken, string accessTokenSecret, HttpWebRequest webRequest, string requestBody)
{
OAuthConsumerContext consumerContext = new OAuthConsumerContext
{
ConsumerKey = consumerKey,
SignatureMethod = SignatureMethod.HmacSha1,
ConsumerSecret = consumerSecret,
UseHeaderForOAuthParameters = true
};
//We already have OAuth tokens, so OAuth URIs below are not used - set to example.com
OAuthSession oSession = new OAuthSession(consumerContext, "https://www.example.com",
"https://www.example.com",
"https://www.example.com");
oSession.AccessToken = new TokenBase
{
Token = accessToken,
ConsumerKey = consumerKey,
TokenSecret = accessTokenSecret
};
IConsumerRequest consumerRequest = oSession.Request();
consumerRequest = ConsumerRequestExtensions.ForMethod(consumerRequest, webRequest.Method);
if (requestBody != null)
{
consumerRequest = consumerRequest.Post().WithRawContentType(webRequest.ContentType).WithRawContent(System.Text.Encoding.ASCII.GetBytes(requestBody));
}
consumerRequest = ConsumerRequestExtensions.ForUri(consumerRequest, webRequest.RequestUri);
consumerRequest = consumerRequest.SignWithToken();
return consumerRequest.Context.GenerateOAuthParametersForHeader();
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment