我正在使用 Migs 虚拟支付客户端集成和使用 2 方(API 方法)。
错误:E5000:无法根据商家的请求使用两个商家的秘密中的任何一个形成匹配的安全哈希
在参考指南中,声明使用 HMac Sha256 生成在请求中发送的 SecureHash 参数,并且 MIGS 将相应地对该请求进行解码。
问题 :
a)我想知道我创建的请求是否正确(即所有传递的参数都按正确的顺序排列)。
b)另外让我知道,如果我在创建 SecureHash 的请求和最终请求中缺少一些要发送的参数。
c)还要检查用于生成SecureHash的函数是否正确。
如果我犯了一些错误,请告诉我。
以下是相关详情。
1)请求生成SecureHash :"vpc_AccessCode=XXXXXXXX&vpc_Amount=100&vpc_CardExp=1810&vpc_CardNum=5313581000123430&vpc_Command=pay&vpc_MerchTxnRef=TC_2014712466141&vpc_Merchant=TESTMXXXXXXXX&vpc_OrderInfo=TC_241&vpc_Merchant=TESTMXXXXXXXX&471024=TC_2
2) 演示SecureHashSecret = "CD14026NOT5E91GG5D1MOM4972440CDE"
3)由上述请求和SecureHashSecret生成的 SECURE Hash
“CCD0D0113315403E375791E99AFA3F8906EE47C0ED6818464368420048DC541E”
4) 测试网址:“ https://migs.mastercard.com.au/vpcdps ”
5) 在上述 URL 上发送的最终请求
"vpc_AccessCode=XXXXXXXX&vpc_Amount=100&vpc_CardExp=1310&vpc_CardNum=5313581000123430&vpc_Command=pay&vpc_MerchTxnRef=TC_2014712466141&vpc_Merchant=TESTMXXXXXXXX&vpc_OrderInfo=TC_2014712466141&vpc_Version=1&vpc_SecureHash=CCD0D0113315403E375791E99AFA3F8906EE47C0ED6818464368420048DC541E&vpc_SecureHashType=SHA256"
6)我正在使用以下代码发送请求并获得响应。
System.Net.WebClient webClient = new System.Net.WebClient();
webClient.Headers.Add("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
byte[] response = webClient.UploadData(hfVirtualPaymentClientURL.Value.Trim(), "POST", Encoding.ASCII.GetBytes(strRequest));
string responseData = System.Text.Encoding.ASCII.GetString(response, 0, response.Length);
7) 用于生成SecureHash的函数
公共静态字符串 ToHMACSHA256(字符串输入,字符串键)
{
ASCIIEncoding encoding = new ASCIIEncoding();
byte[] keyByte = encoding.GetBytes(key);
byte[] inputBytes = encoding.GetBytes(input);
HMACSHA256 hmacsha256 = new HMACSHA256(keyByte);
byte[] hashmessage;
hashmessage = hmacsha256.ComputeHash(inputBytes);
return ByteToString(hashmessage);
}
私有静态字符串 ByteToString(byte[] buff)
{
string sbinary = "";
for (int i = 0; i < buff.Length; i++)
{
sbinary += buff[i].ToString("X2"); // hex format
}
return (sbinary);
}
请尽快给我上述错误的解决方案。提前致谢
感谢和问候
阳光明媚的帕泰