0

支払いゲートウェイ統合を使用している Web アプリケーションがあります。現在、sha-256 HMAC アルゴリズムを使用してセキュア ハッシュ コードを作成する際にいくつかの問題に直面しています。

migs ゲートウェイへの接続に関するすべての詳細がありますが、私の問題は、ゲートウェイに接続しようとすると、作成されたハッシュ コードでいくつかの問題が発生することです。

MIGS ゲートウェイへの構築済み URL

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();
        }

正しい方法を行ったかどうかはわかりません。この問題で私を助けてください。

どんな助けでも大歓迎です。

4

1 に答える 1