1

Web アプリケーションに Pay U 支払いゲートウェイを実装しようとしています。

サンプル フォームを使用して、PayU フォームに支払い値を投稿します。

以下の私のコードを見てください。

<form method="post" action="https://gateway.payulatam.com/ppp-web-gateway/">
<input name="merchantId" type="hidden" value="XXXXXX">
<input name="accountId" type="hidden" value="XXXXXX">
<input name="description" type="hidden" value="Test PAYU">
<input name="referenceCode" type="hidden" value="payment_test_00000001">
<input name="amount" type="hidden" value="3">
<input name="tax" type="hidden" value="0">
<input name="taxReturnBase" type="hidden" value="0">
<input name="currency" type="hidden" value="USD">
<input name="signature" type="hidden" value="be2f083cb3391c84fdf5fd6176801278">
<input name="test" type="hidden" value="1">
<input name="buyerEmail" type="hidden" value="ragesh.pr@XXX.com">
<input name="responseUrl" type="hidden" value="http://www.test.com/response">
<input name="confirmationUrl" type="hidden" value="http://www.test.com/confirmation">
<input name="Submit" type="submit" value="Enviar">

しかし、私はこのエラーが発生します:

ここに画像の説明を入力

4

3 に答える 3

0

私のミスです。署名は MD5 文字列ではないためです。

<input name="signature" type="hidden" value="be2f083cb3391c84fdf5fd6176801278">

MD5 文字列を作成するための新しい関数を記述する必要があります。

    public static string CalculateMD5Hash(string input)
    {
        // step 1, calculate MD5 hash from input
        MD5 md5 = System.Security.Cryptography.MD5.Create();
        byte[] inputBytes = System.Text.Encoding.ASCII.GetBytes(input);
        byte[] hash = md5.ComputeHash(inputBytes);

        // step 2, convert byte array to hex string
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < hash.Length; i++)
        {
            sb.Append(hash[i].ToString("x2"));
        }
        return sb.ToString();
    }

次に、この関数を以下のように呼び出します。

        string Signature = CommonHelper.CalculateMD5Hash(ApiKey + "~" + MerchantId + "~" + ReferenceCode + "~" + Amount + "~" + Currency);

(上記の関数では、パラメータの順序を守ってください。)

これで署名が作成されました。

この署名をフォームに渡します。

正常に動作します。

:)

y

于 2015-04-08T03:18:05.330 に答える