0

シンプルな Web API コントローラーを使用して、クライアントからの要求を受け入れて支払いを処理しています。Payflow 支払い要求が新しいタスクで開始され、タスクでトランザクションが完了するのを待っている間、すぐにクライアントにステータスを返します。

ただし、テストでは、API に 2 つのリクエストを続けて送信すると、2 番目のリクエストはSubmitTransactionPayflownet API のメソッドから null 応答を受け取ります。なぜこうなった?

これが呼び出しを行っている私のメソッドです

private NameValueCollection SubmitTransaction(NameValueCollection pfpParams)
{
    string transactionString = GetTransactionString(pfpParams);
    string pfpResponse = _pfNetApi.SubmitTransaction(transactionString, PayflowUtility.RequestId);
    return HttpUtility.ParseQueryString(pfpResponse);
}

どちらの場合もメソッドに渡す transactionString の値は次のSubmitTransactionとおりです (ダミーのクレジット カード情報)。

ACCT=4111111111111111&EXPDATE=0115&COMMENT1=&COMMENT2=&CVV2=123&NAME=Joshua Dixon&STREET=123 x st&TENDER=C&ZIP=12345&AMT=5.00&TRXTYPE=S&USER=test&PWD=xxxx&PARTNER=Verisign&VENDOR=test

その文字列で単一のリクエストを送信するたびに、応答は正しく、期待どおりです。ただし、その文字列を使用して 2 つの非同期要求を送信するたびに、最初の要求が完了していない場合、2 番目の応答は常に null になります。

4

1 に答える 1

1

OPの同僚、他の誰かがこの問題を抱えている場合に備えてこれに答えます。

これは、スレッドセーフの問題のようです。ドキュメントにはそうでPayflowNETAPI.SubmitTransactionはないと示されていますが、スレッドセーフではないようです。この問題は、トランザクションごとに PayflowNETAPI の新しいインスタンスを使用することで解決されました。

于 2013-12-18T17:35:13.980 に答える