Asp.net MIGS VPC Integration E5000:无法基于商户';s使用两个商户中的任意一个进行请求';秘密
我正在使用Migs虚拟支付客户端集成,并使用第二方(API方法) 错误:E5000:无法使用两个商户的机密之一,根据商户的请求形成匹配的安全哈希 参考指南中规定使用HMac Sha256生成请求中发送的SecureHash参数,MIGS将相应地解码该请求 问题: a)我想知道我创建的请求是否正确(即所有传递的参数顺序正确) b)如果在创建SecureHash的请求和最终请求中缺少一些要发送的参数,请告诉我 c)还要检查用于生成安全哈希的函数是否正确 如果我做错了,请告诉我 以下是相关细节 1) 请求生成SecureHash:“vpc_访问代码=XXXXXXXX&vpc_金额=100&vpc_CardExp=1810&vpc_CardNum=5313581000123430&vpc_命令=pay&vpc_MerchTxnRef=TC_2014712466141&vpc_商户=testmxxxxxxxxxx&vpc_订单信息=TC_2014712466141&vpc_版本=1” 2) DemoSecureHashSecret=“CD14026NOT5E91GG5D1MOM497240CDE” 3)从上述请求和SecureHashSecret生成的安全哈希 “CCD0113315403E375791E99AFA3F8906EE47C0ED6818464368420048DC541E” 4)测试URL: 5)在上述URL上发送的最终请求 “vpc_AccessCode=XXXXXXXX&vpc_Amount=100&vpc_CardExp=1310&vpc_CardNum=5313581000123430&vpc_Command=pay&vpc_MerchTxnRef=TC_2014712466141&vpc_Merchant=TestMXXXXXXXXXXXXXXX&vpc_OrderInfo=TC_2014712466141&vpc_Version=1&vpc_SecureHash=CCD0113;_SecureHash=CCD01130375791;&vpc_SecureHash=CCD011373906;\E375791;\EEC0686818436843684200485;&vpcþĂ\ 6)我使用以下代码发送请求并获得响应 System.Net.WebClient-WebClient=新系统.Net.WebClient() 7)用于生成安全哈希的函数 公共静态字符串ToHMACSHA256(字符串输入,字符串键) 私有静态字符串ByteToString(字节[]buff)Asp.net MIGS VPC Integration E5000:无法基于商户';s使用两个商户中的任意一个进行请求';秘密,asp.net,api,payment-gateway,mastercard,Asp.net,Api,Payment Gateway,Mastercard,我正在使用Migs虚拟支付客户端集成,并使用第二方(API方法) 错误:E5000:无法使用两个商户的机密之一,根据商户的请求形成匹配的安全哈希 参考指南中规定使用HMac Sha256生成请求中发送的SecureHash参数,MIGS将相应地解码该请求 问题: a)我想知道我创建的请求是否正确(即所有传递的参数顺序正确) b)如果在创建SecureHash的请求和最终请求中缺少一些要发送的参数,请告诉我 c)还要检查用于生成安全哈希的函数是否正确 如果我做错了,请告诉我 以下是相关细节 1)
{
字符串sbinary=“”;
for(int i=0;i
请尽快给我上述错误的解决方案。提前谢谢
谢谢和问候
Sunny Pathai拒绝[取消选中]帐户中的“强制安全哈希”设置以绕过哈希。并使用最新的测试卡。旧的测试卡不工作我在
PHP
中遇到了同样的问题,但我成功地纠正了它。该错误似乎是由于对我的数据进行哈希运算时出错造成的。
=>见 为了纠正这个问题,我使用以下类
(您也必须导入此文件才能将其保存到库中)
您好,您解决问题了吗?没有,仍然存在问题拒绝[取消选中]帐户中的“强制安全哈希”设置以绕过哈希。并使用最新的测试卡。旧的测试卡不起作用我遇到了同样的问题,你解决了问题吗?我正在尝试使用python,但没有任何文档可用于将md5更改为SHA256。这可能会带来安全风险,因为检查安全哈希的目的是验证“数字签名”。
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);
{
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);
}
{
string sbinary = "";
for (int i = 0; i < buff.Length; i++)
{
sbinary += buff[i].ToString("X2"); // hex format
}
return (sbinary);
}
$conn = new VPCPaymentConnection();
$secureSecret = '';
// Set the Secure Hash Secret used by the VPC connection object
$conn->setSecureSecret($secureSecret);
// Instanciate your VPC post data
$paymentdata = array(
"vpc_AccessCode" => '',
"vpc_Amount" => '',
"vpc_Command" => '',
"vpc_Locale" => '',
"vpc_MerchTxnRef" => '',
"vpc_Merchant" => '',
"vpc_OrderInfo" =>'',
"vpc_ReturnURL" => '',
"vpc_Version" => ''
);
// Add VPC post data to the Digital Order
foreach ($paymentdata as $key => $value) {
$conn->addDigitalOrderField($key, $value);
}
// Obtain a one-way hash of the Digital Order data and add this to the Digital Order
$secureHash = $conn->hashAllFields();
$conn->addDigitalOrderField("vpc_SecureHash", $secureHash);
$conn->addDigitalOrderField("vpc_SecureHashType", "SHA256");
// Obtain the redirection URL and redirect the web browser
$link_to_mastercard = $conn->getDigitalOrder('https://migs.mastercard.com.au/vpcpay');