i am working on .net core. i checked sample from this repository and its working fine but i tried for Create a Payment Instrument which is not working. i have tried below code. please advice.
var profileId = "93B32398-AD51-4CC2-A682-EA3E93614EB1";
var requestObj = new CreatePaymentInstrumentRequest();
var cardObj = new TmsV1InstrumentIdentifiersPaymentInstrumentsGet200ResponseEmbeddedCard
(
ExpirationMonth: "09",
ExpirationYear: "2022",
Type: TmsV1InstrumentIdentifiersPaymentInstrumentsGet200ResponseEmbeddedCard.TypeEnum.Visa,
IssueNumber: "01",
StartMonth: "01",
StartYear: "2016"
);
requestObj.Card = cardObj;
var billToObj = new TmsV1InstrumentIdentifiersPaymentInstrumentsGet200ResponseEmbeddedBillTo
{
FirstName = "John",
LastName = "Smith",
Company = "CyberSource",
Address1 = "12 Main Street",
Address2 = "20 My Street",
Locality = "San Francisco",
AdministrativeArea = "CA",
PostalCode = "90200",
Country = "US",
Email = "[email protected]",
PhoneNumber = "555123456"
};
requestObj.BillTo = billToObj;
var instrumentIdentifierObj = new TmsV1InstrumentIdentifiersPaymentInstrumentsGet200ResponseEmbeddedInstrumentIdentifier();
var cardObj2 = new TmsV1InstrumentIdentifiersPost200ResponseCard
{
Number = "4111111111111111"
};
instrumentIdentifierObj.Card = cardObj2;
requestObj.InstrumentIdentifier = instrumentIdentifierObj;
//var jsonstr = new JavaScriptSerializer().Serialize(requestObj);
var jsonstr = JsonConvert.SerializeObject(requestObj,
new JsonSerializerSettings()
{
NullValueHandling = NullValueHandling.Ignore
});
string SecretKey = "yBJxy6LjM2TmcPGu+GaJrHtkke25fPpUX+UY6/L/1tE=";
string KeyId = "08c94330-f618-42a3-b09d-e1e43be5efda";
string MerchantId = "testrest";
// pulling from file to control the body payload
string JsonObj = "";//File.ReadAllText(@"json.txt");
JsonObj = jsonstr;
var Digest = GenerateDigest(JsonObj);
//Console.WriteLine(Digest);
var SignatureParm = "host: apitest.cybersource.com\n(request-target): post /tms/v1/paymentinstruments/\ndigest: " + Digest + "\nv-c-merchant-id: " + MerchantId;
var SignatureHash = GenerateSignatureFromParams(SignatureParm, SecretKey);
//Console.WriteLine(SignatureHash);
System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;
var httpWebRequest = (HttpWebRequest)WebRequest.Create("https://apitest.cybersource.com/tms/v1/paymentinstruments/");
httpWebRequest.Method = "POST";
httpWebRequest.Headers.Add("v-c-merchant-id", MerchantId);
httpWebRequest.Headers.Add("v-c-date", DateTime.Now.ToString("ddd, dd MMM yyy HH':'mm':'ss 'GMT'"));
httpWebRequest.Headers.Add("Digest", Digest);
httpWebRequest.Headers.Add("profile-id", profileId);
httpWebRequest.Headers.Add("Signature", "keyid=\"" + KeyId + "\", algorithm=\"HmacSHA256\", headers=\"host (request-target) digest v-c-merchant-id\", signature=\"" + SignatureHash + "\"");
httpWebRequest.ContentType = "application/json";
// var httpResponse = new HttpWebResponse();
string res = "";
using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
{
streamWriter.Write(JsonObj);
streamWriter.Flush();
streamWriter.Close();
}
try
{
var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
{
res = streamReader.ReadToEnd();
}
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
// Console.WriteLine(httpResponse.ToString());
}
Console.Write(res);
Console.ReadKey();