public static string GetNonceForNewPaymentMethod(BraintreeGateway gateway, Params @params, bool isCreditCard)
{
var clientToken = GenerateDecodedClientToken(gateway);
var authorizationFingerprint = extractParamFromJson("authorizationFingerprint", clientToken);
var paymentMethodType = isCreditCard ? "credit_card" : "paypal_account";
var paymentMethodTypePlural = paymentMethodType + "s";
var builder = new RequestBuilder();
builder.
AddTopLevelElement("authorization_fingerprint", authorizationFingerprint).
AddTopLevelElement("shared_customer_identifier", "test-identifier").
AddTopLevelElement("shared_customer_identifier_type", "testing");
foreach (var param in @params)
builder.AddTopLevelElement(string.Format("{0}[{1}]", paymentMethodType, param.Key), param.Value.ToString());
var response = new BraintreeTestHttpService().Post(
gateway.MerchantId,
"v1/payment_methods/" + paymentMethodTypePlural,
builder.ToQueryString());
#if netcore
StreamReader reader = new StreamReader(response.Content.ReadAsStreamAsync().Result, Encoding.UTF8);
string responseBody = reader.ReadToEnd();
return extractParamFromJson("nonce", responseBody);
#else
return extractParamFromJson("nonce", response);
#endif
}