私は、支払いゲートウェイの統合を使用しているWebアプリケーションを持っています。今私はsha-256 HMACアルゴリズムを使用して安全なハッシュコードを作成する際にいくつかの問題に直面しています。MiGS Payment Gatewayインテグレーションの実装をC#
私はmigsゲートウェイへの接続に関するすべての詳細を持っていますが、私の問題はゲートウェイに接続しようとしたときに、作成されたハッシュコードに問題が発生しています。私は以下のようなエラーを取得しています。このURLを発射したら
はMIGSゲートウェイ
https://migs.mastercard.com.au/vpcpay?vpc_AccessCode=XXXXXX&vpc_Amount=6000&vpc_Command=pay&vpc_Locale=en&vpc_MerchTxnRef=12345678&vpc_Merchant=TESTXXXXXX&vpc_OrderInfo=54444&vpc_ReturnURL=http%3a%2f%2flocalhost%3a2231%2fTransaction%2fSecureTransaction%3fdataKey=33445566&vpc_Version=1&vpc_SecureHash=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&vpc_SecureHashType=SHA256
にURLを構築:
HTTP Status - 400
E5000: Cannot form a matching secure hash based on the merchant's request using either of the two merchant's secrets
を私はSecretHashを検証し、商人によって提供されるようにその同じきました。
既存の実装のC#:
string hashSecret = ConfigurationManager.AppSettings["MigsSecureHashSecret"];
var transactionData = paymentRequest.GetParameters().OrderBy(t => t.Key, new VPCStringComparer()).ToList();
var redirectUrl = VPC_URL + "?" + string.Join("&", transactionData.Select(item => HttpUtility.UrlEncode(item.Key) + "=" + HttpUtility.UrlEncode(item.Value)));
if (!string.IsNullOrEmpty(hashSecret))
{
var hashedData = hashSecret + string.Join("", transactionData.Select(item => item.Value));
redirectUrl += "&vpc_SecureHash=" + Crypto.CreateSHA256Signature(hashedData);
}
return Redirect(redirectUrl);
CreateSHA256Signature機能
public static string CreateSHA256Signature (string RawData)
{
var hasher = System.Security.Cryptography.HMACSHA256.Create();
var HashValue = hasher.ComputeHash(Encoding.ASCII.GetBytes(RawData));
return string.Join("", HashValue.Select(b => b.ToString("x2"))).ToUpper();
}
私は私が右の方法をしたかしなかったかどうかを確認していません。この問題で私を助けてください。
ご協力いただければ幸いです。