3

Authorize.net を使用する Web サイトを開発していますが、現在テスト アカウントを使用しています。払い戻しをテストするには、一意のトランザクション ID が必要ですが、テスト アカウントしか使用していないため、テスト トランザクションを実行しても一意のトランザクション ID は返されません (常に 2147483647)。これが機能する別の方法はありますか?コードが API で動作するかどうかを確認する必要があります。

4

3 に答える 3

2

トランザクションが成功した後にAuthorize.netが返す「トランザクションID」の解析に使用しているコードが何であれ、そのトランザクションIDは整数に変換されます。整数ではなく文字列として扱う必要があります。2008年、Authorizeは、32ビット整数が不足したため、整数から文字列ベースのトランザクションIDに切り替えることを宣言しました。

2147483647は、32個のバイナリビット(1111 1111 1111 1111 1111 1111 1111 1111)で作成できる最大の10進数の整数です。これは、AuthorizeがトランザクションID> 2147483647(たとえば、3000000000)を返し、プログラミング言語がビットを許可されている最大値2147483647に切り捨てていることを意味します。

PHPコードを調べて、トランザクションIDが値を文字列としてキャストしていることを確認します。確かに、コードを調べて自分でキャストすることをお勧めします。例えば:

(string)$transaction_id

また、コードが文字列を整数として自動的にキャストすることを行っていないことを確認してください。例えば:

$transaction_id + 1

最後に、トランザクションIDがデータベースから読み取られている場合は、データベースがトランザクションIDを文字列データ型として格納していることを確認してください。たとえば、mysqlでは、CHARまたはVARCHARを使用して、10より大きくします。安全のために16または24を試してください。

参照:

于 2011-03-10T05:59:58.493 に答える
1

リクエストをhttps://test.authorize.net/gateway/transact.dllに投稿する場合、transaction_id として常に 0 を受け取ります。

つまり、払い戻しをテストするにはライブアカウントが必要です。x_test_request=TRUE を設定してhttps://secure.authorize.net/gateway/transact.dllに投稿し、有効なトランザクション ID が返されるかどうかを確認してください。ただし、ライブ URL にトランザクションを投稿できるようにするには、Authorize.Net の有効なライブ アカウントが必要です。

于 2012-04-18T18:26:37.413 に答える
0

トランザクション ID を取得するには、テスト モードでトランザクション リクエストを送信しているときに、リクエスト パラメータ リストを設定する必要があります。

x_test_request=FALSE

その後、正しいIDを取得します

于 2010-12-03T08:32:39.483 に答える