我已经成功地将Asp.net的万事达卡支付网关(MIGS)与C#代码集成在一起。但我无法查询每笔交易。我需要查询服务器的个别交易。但是我无法在VPC客户端指南中得到适当的响应。
我的代码:
string vpcURL = "https://migs.mastercard.com.au/ma/login.s?mappedUrl=/network";
try
{
DataSet ds = new DataSet();
byte[] response;
var data = new NameValueCollection();
data["vpc_Version"] = "1";
data["vpc_AccessCode"] = "182F61A1";
data["vpc_Command"] = "QueryDR";
data["vpc_Merchant"] = "TEST001110246097";
data["vpc_MerchTxnRef"] = "1W7sVZAMEuQ4=";
data["vpc_User"] = "XXXXXXXX";
data["vpc_Password"] = "XXXXXXXX";
var redirectUrl = vpcURL + "?" + postData;
webClient.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
response= webClient.UploadValues(vpcURL, "POST", data);
string strresponse = Encoding.UTF8.GetString(response);
StringReader reader = new StringReader(strresponse);
ds.ReadXml(reader);
}
catch (Exception ex)
{
}
在回复中我得到一个空白的html表单,而不是服务器中提到的预期字段。
我需要一个完整的代码来查询服务器。
感谢
答案 0 :(得分:2)
你可能已经很久以前对此进行了整理,但我最近为此编写了一个可行的代码,也许它会对其他人有用
var args = new SortedDictionary<string, string>()
{
{"vpc_Version", "1"},
{"vpc_Command", "queryDR"},
{"vpc_MerchTxnRef", MerchTxnRef},
{"vpc_AccessCode", "XXXXXX"},
{"vpc_Merchant", "XXXXXX"},
{"vpc_User", "XXXXX"},
{"vpc_Password", "XXXXX"}
};
var client = new HttpClient();
var result = await client.PostAsync("https://migs.mastercard.com.au/vpcdps", new FormUrlEncodedContent(args));
var reply = await result.Content.ReadAsStringAsync();
我使用SortedDictionary,因为参数需要按字母顺序提供。如果您愿意,可以手动对它们进行排序。 我不确定你是否有正确的URL,也许它在2年前有所不同,请参考当前的MIGS集成指南。 vpc_User和vpc_Password字段需要与使用正确的“高级功能”标志集创建的用户一起提供。