public static string GenerateValidUsBankAccountNonce(BraintreeGateway gateway)
{
var clientToken = GenerateDecodedClientToken(gateway);
var def = new {
braintree_api = new {
url = "",
access_token = ""
}
};
var config = JsonConvert.DeserializeAnonymousType(clientToken, def);
var url = config.braintree_api.url + "/tokens";
var accessToken = config.braintree_api.access_token;
string postData = @"
{
""type"": ""us_bank_account"",
""billing_address"": {
""street_address"": ""123 Ave"",
""region"": ""CA"",
""locality"": ""San Francisco"",
""postal_code"": ""94112""
},
""account_type"": ""checking"",
""routing_number"": ""021000021"",
""account_number"": ""567891234"",
""account_holder_name"": ""Dan Schulman"",
""account_description"": ""PayPal Checking - 1234"",
""ach_mandate"": {
""text"": """"
}
}";
#if netcore
var request = new HttpRequestMessage(new HttpMethod("POST"), url);
byte[] buffer = Encoding.UTF8.GetBytes(postData);
request.Content = new StringContent(postData, Encoding.UTF8, "application/json");
request.Headers.Add("Braintree-Version", "2015-11-01");
request.Headers.Add("Authorization", "Bearer " + accessToken);
var httpClientHandler = new HttpClientHandler{};
HttpResponseMessage response;
using (var client = new HttpClient(httpClientHandler))
{
response = client.SendAsync(request).GetAwaiter().GetResult();
}
StreamReader reader = new StreamReader(response.Content.ReadAsStreamAsync().Result, Encoding.UTF8);
string responseBody = reader.ReadToEnd();
#else
string curlCommand = $@"-s -H ""Content-type: application/json"" -H ""Braintree-Version: 2015-11-01"" -H ""Authorization: Bearer {accessToken}"" -d '{postData}' -XPost ""{url}""";
Process process = new Process {
StartInfo = new ProcessStartInfo {
FileName = "curl",
Arguments = curlCommand,
UseShellExecute = false,
RedirectStandardOutput = true,
}
};
process.Start();
StringBuilder responseBodyBuilder = new StringBuilder();
while (!process.HasExited) {
responseBodyBuilder.Append(process.StandardOutput.ReadToEnd());
}
responseBodyBuilder.Append(process.StandardOutput.ReadToEnd());
string responseBody = responseBodyBuilder.ToString();
#endif
var resDef = new {
data = new {
id = "",
}
};
var json = JsonConvert.DeserializeAnonymousType(responseBody, resDef);
return json.data.id;
}